diff --git a/.github/labeler.yml b/.github/labeler.yml index 7b3a03de7afd..2d05b3df0298 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -54,7 +54,7 @@ - any-glob-to-any-file: ['code/**', 'icons/**', 'sounds/**', '_maps/map_files/**', 'tgui/**'] - any-glob-to-any-file: [modular_ss220/**] - base-branch: 'master' - - head-branch: '^(?!merge-upstream$).*' + - head-branch: '^(?!merge[-_]upstream$).*' ':finnadie: НЕ МОДУЛЬНО': - all: @@ -62,12 +62,12 @@ - any-glob-to-any-file: ['code/**', 'icons/**', 'sounds/**', '_maps/map_files/**'] - all-globs-to-all-files: '!modular_ss220/**' - base-branch: 'master' - - head-branch: '^(?!merge-upstream$).*' + - head-branch: '^(?!merge[-_]upstream$).*' ':pray: Слияние с восходящим потоком': - all: - base-branch: 'master' - - head-branch: 'merge-upstream' + - head-branch: 'merge[-_]upstream' ':pencil: Перевод': - base-branch: 'translate' diff --git a/.github/workflows/build_milla.yml b/.github/workflows/build_rust.yml similarity index 86% rename from .github/workflows/build_milla.yml rename to .github/workflows/build_rust.yml index ca269a33dda1..1292c93dcb5b 100644 --- a/.github/workflows/build_milla.yml +++ b/.github/workflows/build_rust.yml @@ -1,13 +1,13 @@ -name: Build MILLA +name: Build Rust library on: issue_comment: types: created jobs: - build-milla: + build-rust: if: | github.event.issue.pull_request && - (github.event.comment.body == '!build_milla') && + (github.event.comment.body == '!build_rust') && ((github.event.sender.id == github.event.issue.user.id) || (github.event.comment.author_association == 'COLLABORATOR') || (github.event.comment.author_association == 'MEMBER') || @@ -53,7 +53,7 @@ jobs: ref: ${{ env.PR_BRANCH }} token: ${{ env.GH_TOKEN }} - - name: Build MILLA + - name: Build rustlibs env: BASE_BRANCH: ${{ github.event.repository.default_branch }} BASE_REPOSITORY: ${{ github.repository }} @@ -65,7 +65,7 @@ jobs: git pull origin "$PR_BRANCH" --depth=$((ahead_by + 1)) git remote add upstream "https://github.com/$BASE_REPOSITORY.git" git fetch upstream "$BASE_BRANCH" --depth=$((behind_by + 1)) - cd milla + cd rust # Get dependencies. rustup target add i686-unknown-linux-gnu @@ -79,13 +79,13 @@ jobs: cargo build --release --target i686-pc-windows-gnu # Copy the built targets to their checked-in locations. - cp target/i686-unknown-linux-gnu/release/libmilla.so ../tools/ci/libmilla_ci.so - cp target/i686-pc-windows-gnu/release/milla.dll ../milla.dll + cp target/i686-unknown-linux-gnu/release/librustlibs.so ../tools/ci/librustlibs_ci.so + cp target/i686-pc-windows-gnu/release/rustlibs.dll ../rustlibs.dll - git commit -a -m "Build MILLA" --allow-empty + git commit -a -m "Build Rust library" --allow-empty git push origin - name: Notify Failure if: failure() && env.FAIL_NOTIFIED != 'true' run: | - gh pr comment ${{ github.event.issue.html_url }} -b 'Building MILLA failed, see the action run log for details: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' + gh pr comment ${{ github.event.issue.html_url }} -b 'Building Rust library failed, see the action run log for details: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' diff --git a/.gitignore b/.gitignore index 60ead497f509..819c884cb604 100644 --- a/.gitignore +++ b/.gitignore @@ -73,7 +73,7 @@ $RECYCLE.BIN *.swp # Rust output. -/milla/target/* +/rust/target/* # mkdocs output. site diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql index ed435e3be7f6..231681d8c312 100644 --- a/SQL/paradise_schema.sql +++ b/SQL/paradise_schema.sql @@ -250,7 +250,7 @@ CREATE TABLE `feedback` ( `datetime` datetime NOT NULL, `round_id` int(8) NOT NULL, `key_name` varchar(32) NOT NULL, - `key_type` enum('text', 'amount', 'tally', 'nested tally', 'associative') NOT NULL, + `key_type` ENUM('text', 'amount', 'tally', 'nested tally', 'associative', 'ledger', 'nested ledger') NOT NULL, `version` tinyint(3) UNSIGNED NOT NULL, `json` LONGTEXT NOT NULL COLLATE 'utf8mb4_general_ci', PRIMARY KEY (`id`) diff --git a/SQL/updates/59-60.sql b/SQL/updates/59-60.sql new file mode 100644 index 000000000000..e826c7a0bff3 --- /dev/null +++ b/SQL/updates/59-60.sql @@ -0,0 +1,23 @@ +-- Migration: 59-60 +-- Author: warriorstar +-- Introduced: PR# 26645 + +-- This migration adds the 'ledger' and 'nested ledger' enum values to the +-- `feedback` table in conjunction with making those feedback types available +-- through SSblackbox. +-- No data migration is required. + +ALTER TABLE + `feedback` +MODIFY + COLUMN `key_type` ENUM( + 'text', + 'amount', + 'tally', + 'nested tally', + 'associative', + 'ledger', + 'nested ledger' + ) NOT NULL +AFTER + `key_name`; diff --git a/_maps/base_map.dm b/_maps/base_map.dm index 18d8f64065bf..6eb7555959ff 100644 --- a/_maps/base_map.dm +++ b/_maps/base_map.dm @@ -1,5 +1,17 @@ -#include "map_files220\generic\centcomm.dmm" // SS220 EDIT - ORIGINAL: #include "map_files\generic\centcomm.dmm" -#include "map_files220\generic\Admin_Zone.dmm" // SS220 ADDITION +/** + * SS220 EDIT - START + * ORIGINAL: #include "map_files\generic\centcomm.dmm" + * Uncomment define bellow if you need faster init for testing. + */ +//#define ENABLE_TEST_CC + +#ifndef ENABLE_TEST_CC +#include "map_files220\generic\centcomm.dmm" +#include "map_files220\generic\Admin_Zone.dmm" +#else +#include "map_files220\generic\centcomm_test.dmm" +#endif +// SS220 EDIT - END #define CC_TRANSITION_CONFIG DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)) #ifdef CIMAP #include "ci_map_testing.dm" diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm index 18a3ce53eba2..83aa2d85df09 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_excavation.dmm @@ -723,13 +723,6 @@ /obj/item/stack/sheet/metal, /turf/simulated/floor/plating/lavaland_air, /area/ruin/unpowered/althland_excavation) -"jT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/wall_rusted_maybe, -/turf/simulated/wall/r_wall, -/area/ruin/unpowered/althland_excavation) "kh" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/mecha_wreckage/ripley, @@ -786,7 +779,6 @@ /turf/simulated/floor/plating/lavaland_air, /area/ruin/unpowered/althland_excavation) "nw" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/damageturf, /obj/effect/spawner/random_spawners/wall_rusted_maybe, /turf/simulated/wall/r_wall, @@ -799,7 +791,7 @@ /area/ruin/unpowered/althland_excavation) "oh" = ( /turf/simulated/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) +/area/lavaland/surface/outdoors/unexplored) "or" = ( /obj/structure/railing/corner{ dir = 8 @@ -873,11 +865,9 @@ /obj/effect/spawner/random_spawners/wall_rusted_maybe, /turf/simulated/wall/r_wall, /area/ruin/unpowered/althland_excavation) -"sp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/wall_rusted_maybe, -/turf/simulated/wall/r_wall, -/area/ruin/unpowered/althland_excavation) +"sj" = ( +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) "sA" = ( /obj/structure/railing, /obj/effect/decal/cleanable/dirt, @@ -1048,6 +1038,10 @@ nitrogen = 0 }, /area/ruin/unpowered/althland_excavation) +"Ay" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/chasm/straight_down/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) "AD" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -1221,6 +1215,10 @@ nitrogen = 0 }, /area/ruin/unpowered/althland_excavation) +"Jn" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) "Jp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden, @@ -1275,8 +1273,10 @@ }, /area/lavaland/surface/outdoors) "Mm" = ( +/obj/structure/girder/reinforced, +/obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) +/area/lavaland/surface/outdoors/unexplored) "MT" = ( /obj/structure/grille/broken, /obj/effect/decal/cleanable/glass, @@ -1579,23 +1579,23 @@ oh oh oh oh -Mm -Mm -Mm -Mm -Ei -Ei -Ei -Ei -Ei -Ei -Ei -Ei -Ei -Ei -Ei -Mm -Mm +sj +sj +sj +sj +sj +Jn +Jn +Jn +Jn +Jn +Jn +Jn +Jn +Jn +Jn +sj +sj oh oh oh @@ -1606,13 +1606,13 @@ oh oh oh oh -Mm -Mm -Mm -Mm -Mm -Mm -Mm +sj +sj +sj +sj +sj +sj +sj TN TN TN @@ -1622,13 +1622,13 @@ Du TN TN TN -Ei -Ei -Ei -Ei -Ei -Ei -Ei +Jn +Jn +Jn +Jn +Jn +Jn +Jn oh oh oh @@ -1636,10 +1636,10 @@ oh (3,1,1) = {" oh oh -Mm -Mm -Mm -Mm +sj +sj +sj +sj TN TN TN @@ -1658,18 +1658,18 @@ TN TN TN TN -Ei -Ei -Ei -Ei +Jn +Jn +Jn +Jn oh oh "} (4,1,1) = {" oh -Mm -Mm -Mm +sj +sj +sj TN TN TN @@ -1679,30 +1679,30 @@ yb bO nw gh -jT +TN Wt RG tj -jT +TN Zy -sp +TN aq dp Cs TN TN TN -Ei -Ei -Mm -Mm +Jn +Jn +sj +sj "} (5,1,1) = {" oh -Mm -Mm +sj +sj +TN TN -sp aU Lt am @@ -1725,13 +1725,13 @@ je Ei TN TN -Ei -Ei -Mm +Jn +sj +sj "} (6,1,1) = {" -Mm -Mm +sj +sj TN TN Ri @@ -1757,13 +1757,13 @@ TN Ei Ei bm -bm -Ei -Ei +Mm +sj +sj "} (7,1,1) = {" -Mm -Mm +sj +sj TN PL BZ @@ -1789,12 +1789,12 @@ TN Ei Ei Ei -bm -Ei -Ei +Mm +sj +sj "} (8,1,1) = {" -Mm +sj TN TN pE @@ -1821,14 +1821,14 @@ Ei Ei Ei bm -Ei -Ei -Ei +Jn +sj +sj "} (9,1,1) = {" -Mm +sj +TN TN -sp bC zw TN @@ -1853,12 +1853,12 @@ Ei zp XS BW -aB -Ei -Ei +Ay +sj +sj "} (10,1,1) = {" -Mm +sj TN TN TN @@ -1885,12 +1885,12 @@ aC sA aB aB -Ei -bm -Ei +Jn +Mm +Jn "} (11,1,1) = {" -Mm +sj TN ct Pe @@ -1917,12 +1917,12 @@ GE aB aB Ei -Ei -bm -Ei +Jn +Mm +Jn "} (12,1,1) = {" -Mm +sj TN pC yb @@ -1951,10 +1951,10 @@ aB Ei Ei TN -Ei +Jn "} (13,1,1) = {" -Ei +Jn TN TN TN @@ -1983,10 +1983,10 @@ Ei Ei Ei TN -Mm +sj "} (14,1,1) = {" -Ei +Jn TN aU PL @@ -2015,10 +2015,10 @@ XS Ei Ei TN -Mm +sj "} (15,1,1) = {" -Ei +Jn TN Yz yb @@ -2047,10 +2047,10 @@ Ei Ei Ei TN -Mm +sj "} (16,1,1) = {" -Ei +Jn TN TN TN @@ -2079,10 +2079,10 @@ Ei BW aB TN -Mm +sj "} (17,1,1) = {" -Ei +Jn TN Ei Ei @@ -2111,10 +2111,10 @@ mK uG BW TN -Mm +sj "} (18,1,1) = {" -Ei +Jn bm Ei BW @@ -2143,10 +2143,10 @@ BW LK PM TN -Mm +sj "} (19,1,1) = {" -Ei +Jn bm Ei BW @@ -2175,10 +2175,10 @@ aB BW KU TN -Mm +sj "} (20,1,1) = {" -Ei +Jn TN Ei bm @@ -2207,10 +2207,10 @@ aB aB uG TN -Mm +sj "} (21,1,1) = {" -Ei +Jn TN TN TN @@ -2239,10 +2239,10 @@ aB aB aB TN -Mm +sj "} (22,1,1) = {" -Ei +Jn TN ao ar @@ -2271,10 +2271,10 @@ BW TJ BW TN -Mm +sj "} (23,1,1) = {" -Ei +Jn TN at bl @@ -2303,10 +2303,10 @@ mh mK uG TN -Mm +sj "} (24,1,1) = {" -Ei +Jn TN aG aU @@ -2335,10 +2335,10 @@ mh mh Gc TN -Mm +sj "} (25,1,1) = {" -Mm +sj TN TN bU @@ -2367,11 +2367,11 @@ gg bN TN TN -Mm +sj "} (26,1,1) = {" -Mm -Mm +sj +sj TN az DS @@ -2398,12 +2398,12 @@ jL Nv jS TN -Mm -Mm +sj +sj "} (27,1,1) = {" oh -Mm +sj TN TN ap @@ -2430,13 +2430,13 @@ bL YE TN TN -Mm -Mm +sj +sj "} (28,1,1) = {" oh -Mm -Mm +sj +sj TN TN iA @@ -2461,15 +2461,15 @@ kh aE TN TN -Mm -Mm +sj +sj oh "} (29,1,1) = {" oh -Mm -Mm -Mm +sj +sj +sj TN TN TN @@ -2492,18 +2492,18 @@ TN TN TN TN -Mm -Mm +sj +sj oh oh "} (30,1,1) = {" oh oh -Mm -Mm -Mm -Mm +sj +sj +sj +sj TN TN TN @@ -2522,9 +2522,9 @@ TN TN TN TN -Mm -Mm -Mm +sj +sj +sj oh oh oh @@ -2533,14 +2533,14 @@ oh oh oh oh -Mm -Mm -Mm -Mm -Mm -Mm -Mm -Mm +sj +sj +sj +sj +sj +sj +sj +sj TN TN TN @@ -2550,11 +2550,11 @@ TN TN TN TN -Mm -Mm -Mm -Mm -Mm +sj +sj +sj +sj +sj oh oh oh diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_facility.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_facility.dmm index 32276f9dd3d9..bc2ac1d5611a 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_facility.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_althland_facility.dmm @@ -115,6 +115,10 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating/lavaland_air, /area/ruin/unpowered/althland_processing) +"cM" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/template_noop, +/area/lavaland/surface/outdoors/unexplored) "dh" = ( /obj/effect/mapping_helpers/no_lava, /obj/structure/disposalpipe/segment/corner{ @@ -409,12 +413,6 @@ /obj/structure/ore_box, /turf/simulated/floor/plasteel/lavaland_air, /area/ruin/unpowered/althland_processing) -"nX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/ore, -/obj/effect/spawner/random_spawners/wall_rusted_maybe, -/turf/simulated/wall/r_wall, -/area/ruin/unpowered/althland_processing) "oj" = ( /turf/simulated/floor/plating/lavaland_air, /area/ruin/unpowered/althland_processing) @@ -517,12 +515,6 @@ /obj/effect/landmark/damageturf, /turf/simulated/floor/plating/lavaland_air, /area/lavaland/surface/outdoors) -"sv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/wall_rusted_always, -/turf/simulated/wall/r_wall, -/area/ruin/unpowered/althland_processing) "sB" = ( /obj/effect/mapping_helpers/no_lava, /obj/structure/disposalpipe/trunk, @@ -658,6 +650,9 @@ /obj/machinery/economy/vending/chinese, /turf/simulated/floor/plating/lavaland_air, /area/ruin/unpowered/althland_processing) +"yh" = ( +/turf/template_noop, +/area/lavaland/surface/outdoors/unexplored) "zd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -759,11 +754,6 @@ /obj/effect/landmark/damageturf, /turf/simulated/floor/plating/lavaland_air, /area/lavaland/surface/outdoors) -"AT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall/r_wall, -/area/ruin/unpowered/althland_processing) "BB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/portable/pump, @@ -785,11 +775,6 @@ /obj/effect/landmark/damageturf, /turf/simulated/floor/plating/lavaland_air, /area/ruin/unpowered/althland_processing) -"BO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/wall_rusted_maybe, -/turf/simulated/wall/r_wall, -/area/ruin/unpowered/althland_processing) "BV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/damageturf, @@ -1213,12 +1198,6 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"QE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/wall_rusted_maybe, -/turf/simulated/wall/r_wall, -/area/ruin/unpowered/althland_processing) "RL" = ( /obj/item/stack/sheet/metal{ amount = 5 @@ -1471,26 +1450,26 @@ bV bV bV bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bV -bL -bL -bL +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh +yh bL bL bL @@ -1507,19 +1486,19 @@ bV bV ab ab -bV -bV -bV -bV -ab -bV -bV -bV -bV -bV -ab -ab +yh +yh +yh +yh ab +yh +yh +yh +yh +yh +yh +yh +yh ab GF ab @@ -1552,7 +1531,7 @@ ab ab bT ab -ab +cb ab ab ab @@ -1726,7 +1705,7 @@ KZ ab ui ui -QE +ui Lg ui ab @@ -1773,7 +1752,7 @@ jb ab ab ui -QE +ui af BM Hz @@ -1811,7 +1790,7 @@ ab ab af af -AT +Au Wb kR fc @@ -1871,7 +1850,7 @@ bT JT zZ qn -nX +ui ui ui VJ @@ -1957,7 +1936,7 @@ bT um um ui -BO +ui zR ui bT @@ -2016,7 +1995,7 @@ ui iq MO eH -BO +ui ab ap ab @@ -2158,7 +2137,7 @@ ab ab ui ui -BO +ui ui ui ab @@ -2308,7 +2287,7 @@ bT ui ui nK -sv +um lZ ui Yd @@ -2596,7 +2575,7 @@ af af ui ui -BO +ui ho ui bT @@ -2740,9 +2719,9 @@ ab ab ab ab -ab -ab -ab +cM +cM +cM ab ab bL @@ -2776,9 +2755,9 @@ bV bV bV bV -ab -ab -ab +cM +cM +cM bV bV bV diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm index 66be1d8d19b3..bff842e79ef3 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm @@ -2,9 +2,6 @@ "a" = ( /turf/template_noop, /area/template_noop) -"b" = ( -/turf/simulated/mineral/random/volcanic, -/area/lavaland/surface/outdoors) "c" = ( /obj/effect/mapping_helpers/no_lava, /obj/effect/mapping_helpers/no_lava, @@ -170,7 +167,7 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"I" = ( +"J" = ( /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) @@ -179,118 +176,64 @@ a a a -b -a -b -a -b -b -b -b -a -b -a +J +d +J +J +J +J +J a a "} (2,1,1) = {" a -a -a -b -b -b -b -b -b -b -b -b -b -b -a -a -"} -(3,1,1) = {" -a -b -b -b -b -I -d -I -I -I -I -I -b -b -b -b -"} -(4,1,1) = {" -b -b -b -I -I -I +J +J +J k o -I -I +J +J c -I -I -b -b +J +J a "} -(5,1,1) = {" -a -b -I -I +(3,1,1) = {" +J +J d g -I +J p -I +J v -I -I -I -I -b -b +J +J +J +J "} -(6,1,1) = {" -b -b -I -I -I +(4,1,1) = {" +J +J +J h l e s j -I +J d e -I -b -b +J "} -(7,1,1) = {" -a -b -I -I -I -I -I +(5,1,1) = {" +J +J +J +J +J q t w @@ -298,114 +241,60 @@ x y p e -b -b "} -(8,1,1) = {" -b -b -I -I +(6,1,1) = {" +J +J e i m j u e -I +J f d y -b -b "} -(9,1,1) = {" -b -b -I -I +(7,1,1) = {" +J +J f j -I +J r -I +J o -I -I -I -I -b -b +J +J +J +J "} -(10,1,1) = {" +(8,1,1) = {" a -b -b -I -I -I +J +J +J k o -I -I -I -I -I -b -b -a -"} -(11,1,1) = {" -b -b -b -b -b -I -n -I -I -I -I -I -b -b -b -b -"} -(12,1,1) = {" -a -a -a -b -b -b -b -b -b -b -b -b -b -b -a +J +J +J +J +J a "} -(13,1,1) = {" -a -a -b -a -a -a -b -b -b +(9,1,1) = {" a -b a a -b +J +n +J +J +J +J +J a a "} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm index 4007379ec985..737bfdac6cca 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm @@ -1,9 +1,11 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( +/obj/effect/mapping_helpers/no_lava, /turf/template_noop, /area/template_noop) "b" = ( -/turf/simulated/mineral/random/volcanic, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "c" = ( /obj/structure/stone_tile/surrounding_tile{ @@ -26,9 +28,6 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"f" = ( -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "h" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 @@ -181,247 +180,136 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"Q" = ( +"M" = ( /obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) +/obj/effect/mapping_helpers/no_lava, +/turf/template_noop, +/area/template_noop) (1,1,1) = {" -a b -a b b b b -a -a b b b b -a b a a +a "} (2,1,1) = {" b +c +h +k b b b -b -f -b -b -b -b -b +k b b b b a -a "} (3,1,1) = {" -a b -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q +d +c +l b -f b b -a -"} -(4,1,1) = {" -b -b -Q -c -h -k -Q -Q -Q -k -Q -Q -Q -Q -b +v b b -"} -(5,1,1) = {" b b -Q -d -c -l -Q -Q -Q -v -Q -Q -Q -Q -Q b -a "} -(6,1,1) = {" -a +(4,1,1) = {" b -Q e i m k -Q +b t w -Q -Q -Q -Q -Q +b +b +b b b "} -(7,1,1) = {" +(5,1,1) = {" a b b -Q -Q G o r q w -Q -Q -Q -Q -Q +b +b +b b b "} -(8,1,1) = {" +(6,1,1) = {" +M b b b -Q -Q -Q p B s -Q -Q +b +b q n A -Q -b b "} -(9,1,1) = {" -a +(7,1,1) = {" +b +b b -Q -Q -Q c q s q k x -Q +b z d -Q -b b "} -(10,1,1) = {" -b +(8,1,1) = {" b -Q G j n j -Q +b e n y -Q +b n y -Q b -a "} -(11,1,1) = {" -b -b -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -b -b -a -"} -(12,1,1) = {" -a -b -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -f -b -b -b -b -"} -(13,1,1) = {" -b -b +(9,1,1) = {" b b b -f -f b b b @@ -433,9 +321,7 @@ b b a "} -(14,1,1) = {" -a -a +(10,1,1) = {" b b b @@ -443,12 +329,10 @@ b b b b -a b b -a -a b a a +a "} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm index 808acab4c180..fb1004fa52d5 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm @@ -171,7 +171,7 @@ /obj/structure/stone_tile/center, /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) +/area/lavaland/surface/outdoors/unexplored) "w" = ( /obj/structure/stone_tile/block{ dir = 8 @@ -187,25 +187,32 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"H" = ( +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"L" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) "U" = ( /turf/simulated/mineral/random/volcanic, -/area/template_noop) +/area/lavaland/surface/outdoors/unexplored) (1,1,1) = {" a a a a -b +U a a a -b +U a -b +U a -b -b +U +U a a a @@ -215,22 +222,22 @@ a "} (2,1,1) = {" a -b -b -b -b -b +U +U +U +U +U a -b -b -b -b -b -b -b -b -b -b +U +U +U +U +U +U +U +U +U +U a a a @@ -238,29 +245,29 @@ a (3,1,1) = {" a a -b -b -b -b -b +U +U +U +U +U a -b -b +U +U E E E -b -b -b -b -b +U +U +U +U +U a a "} (4,1,1) = {" a a -b +U E E E @@ -275,14 +282,14 @@ E E E E -b +U a a "} (5,1,1) = {" a -b -b +U +U b b E @@ -297,13 +304,13 @@ E b b b -b -b +U +U a "} (6,1,1) = {" -b -b +U +U E E b @@ -319,14 +326,14 @@ b b b c -b -b +U +U a "} (7,1,1) = {" a -b -b +U +U E E E @@ -341,14 +348,14 @@ g n E E -b -b -b +U +U +U "} (8,1,1) = {" -b -b -b +U +U +U b c E @@ -363,14 +370,14 @@ l h q E -E -b -b +L +U +U "} (9,1,1) = {" -b -b -b +U +U +U E E E @@ -385,14 +392,14 @@ E E h s -E -b +L +U a "} (10,1,1) = {" -b -b -c +U +U +H c E d @@ -408,13 +415,13 @@ w f t v -b -b +U +U "} (11,1,1) = {" -b -b -b +U +U +U E E E @@ -429,14 +436,14 @@ E E o u -E -b -b +L +U +U "} (12,1,1) = {" a -b -b +U +U b c E @@ -451,13 +458,13 @@ m o r E -E -b +L +U a "} (13,1,1) = {" a -b +U c E E @@ -473,13 +480,13 @@ h p E E -c -b -b +H +U +U "} (14,1,1) = {" -b -b +U +U E E b @@ -495,14 +502,14 @@ b b c b -b -b -b +U +U +U "} (15,1,1) = {" a -b -b +U +U b b E @@ -517,19 +524,19 @@ E b b b -b -b +U +U a "} (16,1,1) = {" a -b -b +U +U E E E -b -b +U +U c E E @@ -539,50 +546,50 @@ E E E E -b +U a a "} (17,1,1) = {" -b -b -b -b -b -b -b -b +U +U +U +U +U +U +U +U c c E E E -b -b -b -b -b +U +U +U +U +U a a "} (18,1,1) = {" a -b +U a -b -b +U +U a -b -b -b -b -b -b -b -b -b +U +U +U +U +U +U +U +U +U a -b +U a a a @@ -591,15 +598,15 @@ a a a a -b +U a a a -b +U a U -b -b +U +U a a a diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm index 5f76d0072f16..9fd6556f7bf3 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm @@ -5,9 +5,6 @@ "b" = ( /turf/simulated/floor/engine/cult/lavaland_air, /area/ruin/unpowered/misc_lavaruin) -"c" = ( -/turf/simulated/floor/lava/mapping_lava, -/area/ruin/unpowered/misc_lavaruin) "d" = ( /turf/simulated/wall/cult, /area/ruin/unpowered/misc_lavaruin) @@ -77,6 +74,9 @@ "s" = ( /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/misc_lavaruin) +"B" = ( +/turf/simulated/floor/lava/mapping_lava, +/area/ruin/unpowered/misc_lavaruin) (1,1,1) = {" a @@ -86,7 +86,7 @@ a a a b -c +B b a a @@ -99,15 +99,15 @@ a a d e -c +B s -c +B b b b -c +B s -c +B s d a @@ -118,11 +118,11 @@ e f s d -c -c +B +B g -c -c +B +B d e f @@ -131,43 +131,43 @@ a "} (4,1,1) = {" a -c +B s -c -c -c -c -b -c -c -c -c +B +B +B +B +b +B +B +B +B e -c +B a "} (5,1,1) = {" a s d -c -c +B +B b b b b b -c -c +B +B d s a "} (6,1,1) = {" a -c -c -c +B +B +B b b l @@ -175,16 +175,16 @@ d k b b -c -c -c +B +B +B a "} (7,1,1) = {" b b -c -c +B +B g i b @@ -192,13 +192,13 @@ b b l b -c -c +B +B b b "} (8,1,1) = {" -c +B b g b @@ -212,13 +212,13 @@ b b g b -c +B "} (9,1,1) = {" b b -c -c +B +B b k b @@ -226,16 +226,16 @@ b b m b -c -c +B +B b b "} (10,1,1) = {" a -c -c -c +B +B +B g b m @@ -243,43 +243,43 @@ h q b b -c -c -c +B +B +B a "} (11,1,1) = {" a s d -c -c +B +B b b b b b -c -c +B +B d s a "} (12,1,1) = {" a -c +B s -c -c -c -c -b -c -c -c -c +B +B +B +B +b +B +B +B +B e -c +B a "} (13,1,1) = {" @@ -288,11 +288,11 @@ e f s d -c -c +B +B g -c -c +B +B d e f @@ -303,15 +303,15 @@ a a d e -c +B s -c +B b b b -c +B s -c +B s d a @@ -324,7 +324,7 @@ a a a b -c +B b a a diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm index d8aca887b621..286acbd11182 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm @@ -2,9 +2,6 @@ "a" = ( /turf/template_noop, /area/template_noop) -"b" = ( -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/unexplored) "c" = ( /obj/item/clockwork/alloy_shards/small, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, @@ -18,7 +15,7 @@ /obj/effect/mapping_helpers/no_lava, /obj/item/stack/tile/brass, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "f" = ( /turf/simulated/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors/unexplored) @@ -29,7 +26,7 @@ "h" = ( /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "i" = ( /obj/structure/grille/ratvar/broken, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, @@ -42,7 +39,7 @@ /obj/effect/mapping_helpers/no_lava, /obj/item/clockwork/alloy_shards/small, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "l" = ( /turf/simulated/floor/lava/mapping_lava, /area/lavaland/surface/outdoors/unexplored) @@ -63,7 +60,7 @@ /obj/effect/mapping_helpers/no_lava, /obj/item/clockwork/alloy_shards/medium, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "r" = ( /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, @@ -72,7 +69,7 @@ /obj/effect/mapping_helpers/no_lava, /obj/item/clockwork/alloy_shards/large, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "t" = ( /obj/item/stack/tile/brass, /obj/effect/mapping_helpers/no_lava, @@ -82,43 +79,43 @@ /obj/effect/mapping_helpers/no_lava, /obj/structure/grille/ratvar, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "w" = ( /obj/effect/mapping_helpers/no_lava, /obj/structure/grille/ratvar/broken, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "x" = ( /obj/effect/mapping_helpers/no_lava, /obj/structure/clockwork/wall_gear, /obj/item/stack/tile/brass, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "y" = ( /obj/effect/mapping_helpers/no_lava, /obj/item/clockwork/component/geis_capacitor/fallen_armor, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "z" = ( /obj/effect/mapping_helpers/no_lava, /obj/structure/clockwork/wall_gear, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "A" = ( /obj/effect/mapping_helpers/no_lava, /obj/item/clockwork/alloy_shards/clockgolem_remains, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "B" = ( /obj/effect/mapping_helpers/no_lava, /obj/item/clockwork/weapon/ratvarian_spear, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "C" = ( /obj/effect/mapping_helpers/no_lava, /obj/item/clockwork/alloy_shards/medium/gear_bit, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "D" = ( /obj/structure/grille/ratvar, /obj/effect/mapping_helpers/no_lava, @@ -133,12 +130,15 @@ /obj/effect/mapping_helpers/no_lava, /obj/structure/dead_ratvar, /turf/simulated/floor/clockwork/lavaland_air, -/area/lavaland/surface/outdoors/unexplored) +/area/lavaland/surface/outdoors) "G" = ( /obj/item/stack/tile/brass/fifty, /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/unexplored) +"X" = ( +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) (1,1,1) = {" a @@ -154,10 +154,10 @@ a a a a -b +X s h -b +X a a a @@ -175,16 +175,16 @@ a a a o -b +X a h -b -b +X +X c j x -b -b +X +X g a a @@ -200,19 +200,19 @@ a a a f -b +X l -b +X m -b +X p w j j c l -b -b +X +X a a a @@ -228,19 +228,19 @@ a f l l -b -b -b +X +X +X l j j j p l -b +X h c -b +X a a "} @@ -250,7 +250,7 @@ a a a a -b +X l l p @@ -261,12 +261,12 @@ l l j l -b +X l l D h -b +X a a "} @@ -299,15 +299,15 @@ a (7,1,1) = {" a a -b -b -b +X +X +X l l l l h -b +X l l l @@ -319,7 +319,7 @@ l c f f -b +X a "} (8,1,1) = {" @@ -328,54 +328,54 @@ h h g c -b +X l l l l n h -b +X l l -b +X l l l l f -b +X a a "} (9,1,1) = {" a -b +X c -b -b +X +X l l l l t h -b +X h w p -b +X g l l -b -b -b -b +X +X +X +X a "} (10,1,1) = {" -b +X h l l @@ -383,15 +383,15 @@ l l l l -b -b +X +X p r F -b +X h A -b +X l l l @@ -410,20 +410,20 @@ l l l l -b +X h k h h h -b +X l l l l l l -b +X a "} (12,1,1) = {" @@ -434,20 +434,20 @@ j h l l -b +X l l -b +X h h h c l l -b +X l l -b +X h o a @@ -455,14 +455,14 @@ a (13,1,1) = {" e k -b +X l l l -b +X p s -b +X h h h @@ -474,19 +474,19 @@ l l l l -b -b +X +X a "} (14,1,1) = {" -b -b -b +X +X +X m l l l -b +X h h k @@ -496,18 +496,18 @@ h h h c -b +X l l -b -b +X +X h -b +X "} (15,1,1) = {" -b -b -b +X +X +X l l l @@ -526,8 +526,8 @@ l l l l -b -b +X +X a "} (16,1,1) = {" @@ -539,7 +539,7 @@ l l l l -b +X h h h @@ -547,7 +547,7 @@ h h h s -b +X l l l @@ -557,66 +557,66 @@ f a "} (17,1,1) = {" -b -b -b +X +X +X l l l -b +X l l -b +X h h h h h -b +X s -b +X l -b +X l l -b +X a "} (18,1,1) = {" -b +X h l l l -b -b +X +X h -b +X h h h h h -b +X k -b +X C -b +X h -b -b +X +X m -b +X "} (19,1,1) = {" -b -b +X +X l l l l h -b +X h h h @@ -624,24 +624,24 @@ h h h h -b +X j h c h -b +X h -b -b +X +X "} (20,1,1) = {" -b +X l l l l -b -b +X +X p h c @@ -650,27 +650,27 @@ k h h o -b +X l l l -b +X E -b +X G o "} (21,1,1) = {" g -b +X l l l l l -b +X h -b +X h h h @@ -684,26 +684,26 @@ l l j j -b +X "} (22,1,1) = {" c c -b +X l l -b +X h h t -b +X h h h h h m -b +X l l l @@ -713,11 +713,11 @@ j j "} (23,1,1) = {" -b +X h m n -b +X h l o @@ -726,23 +726,23 @@ u r p h -b +X h -b +X l l l -b -b +X +X w -b -b +X +X "} (24,1,1) = {" a a -b -b +X +X l l l @@ -761,7 +761,7 @@ l c l l -b +X a "} (25,1,1) = {" @@ -775,9 +775,9 @@ l j l l -b +X h -b +X x h l @@ -795,7 +795,7 @@ a a a c -b +X l l l @@ -804,14 +804,14 @@ l l g l -b +X h l l l c m -b +X a a a @@ -820,9 +820,9 @@ a a a a -b +X h -b +X l l l @@ -836,7 +836,7 @@ l l l l -b +X a a a @@ -848,9 +848,9 @@ a a a c -b +X l -b +X l l l @@ -859,7 +859,7 @@ l l l l -b +X l f a @@ -873,11 +873,11 @@ a a a a -b -b +X +X f c -b +X l c l @@ -887,7 +887,7 @@ l c o l -b +X a a a @@ -902,16 +902,16 @@ a a g c -b +X l l -b +X m l -b +X l f -b +X a a a @@ -928,11 +928,11 @@ a a a a -b +X l -b +X a -b +X l c f diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm index 62721ec4f3da..f8c1633f7779 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm @@ -26,107 +26,67 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"V" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/template_noop, -/area/template_noop) (1,1,1) = {" a a +u a a a -a -a -a -a +u "} (2,1,1) = {" a -V -V -V -V -V -V -V -a -"} -(3,1,1) = {" -a -V u E u u u -V a "} -(4,1,1) = {" -a -V +(3,1,1) = {" +u u u u u q -V -a +u "} -(5,1,1) = {" -a -V +(4,1,1) = {" +u u u k u u -V a "} -(6,1,1) = {" +(5,1,1) = {" a -V u M u u u -V -a +u "} -(7,1,1) = {" +(6,1,1) = {" +a a -V -u -u u +a u u -V -a -"} -(8,1,1) = {" -a -V -V -V -V -V -V -V a "} -(9,1,1) = {" -a -a -a -a -a +(7,1,1) = {" a +u a +u +u a a "} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm index c0c70a88b393..340e908d7496 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm @@ -2,9 +2,6 @@ "a" = ( /turf/simulated/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) -"b" = ( -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "c" = ( /turf/simulated/floor/lava/mapping_lava, /area/lavaland/surface/outdoors) @@ -71,6 +68,9 @@ }, /turf/simulated/floor/plasteel/freezer, /area/ruin/powered/gluttony) +"u" = ( +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "v" = ( /obj/machinery/light/small, /turf/simulated/floor/plasteel/freezer, @@ -101,19 +101,19 @@ a a a -b -b +u +u a a -b +u a -b -b -b -b -b -b -b +u +u +u +u +u +u +u a a a @@ -123,54 +123,54 @@ a a a a -b -b -b -b -b -b -b -b -b -b -b -b -b +u +u +u +u +u +u +u +u +u +u +u +u +u a a a a "} (3,1,1) = {" -b +u a a a -b -b -b +u +u +u c c c -b +u c c c -b -b +u +u a a a a "} (4,1,1) = {" -b +u a a a -b -b -b +u +u +u c R R @@ -178,7 +178,7 @@ S R R c -b +u a a a @@ -186,13 +186,13 @@ a a "} (5,1,1) = {" -b -b +u +u a a a -b -b +u +u c R h @@ -200,7 +200,7 @@ i o R c -b +u a a a @@ -213,8 +213,8 @@ a a a a -b -b +u +u c R i @@ -222,21 +222,21 @@ i v R c -b -b -b -b -b +u +u +u +u +u a "} (7,1,1) = {" a -b -b -b -b -b -b +u +u +u +u +u +u c R i @@ -244,16 +244,16 @@ l i R c -b -b -b -b -b +u +u +u +u +u a "} (8,1,1) = {" a -b +u c c c @@ -271,11 +271,11 @@ c c c c -b +u "} (9,1,1) = {" -b -b +u +u c R R @@ -293,11 +293,11 @@ R R R c -b +u "} (10,1,1) = {" a -b +u c R e @@ -315,11 +315,11 @@ l i R c -b +u "} (11,1,1) = {" a -b +u c R f @@ -336,12 +336,12 @@ i i i S -b -b +u +u "} (12,1,1) = {" a -b +u c R e @@ -359,11 +359,11 @@ i q R c -b +u "} (13,1,1) = {" a -b +u c R R @@ -381,11 +381,11 @@ R R R c -b +u "} (14,1,1) = {" a -b +u c c c @@ -403,16 +403,16 @@ c c c c -b +u "} (15,1,1) = {" a -b -b -b -b -b -b +u +u +u +u +u +u c R i @@ -420,21 +420,21 @@ g i R c -b -b -b -b -b -b +u +u +u +u +u +u "} (16,1,1) = {" -b -b -b +u +u +u a -b -b -b +u +u +u c R j @@ -442,21 +442,21 @@ i v R c -b -b -b +u +u +u a a a "} (17,1,1) = {" -b -b -b +u +u +u a -b -b -b +u +u +u c R i @@ -464,9 +464,9 @@ n i R c -b -b -b +u +u +u a a a @@ -476,9 +476,9 @@ a a a a -b -b -b +u +u +u c R R @@ -486,9 +486,9 @@ S R R c -b -b -b +u +u +u a a a @@ -504,12 +504,12 @@ a c c c -b +u c c c -b -b +u +u a a a @@ -523,16 +523,16 @@ a a a a -b -b -b -b -b -b -b +u +u +u +u +u +u +u a a -b +u a a a diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index 33d456c77ea2..4ecc08bc9cf8 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -67,11 +67,6 @@ /obj/machinery/mineral/equipment_vendor/golem, /turf/simulated/floor/mineral/titanium/purple, /area/shuttle/freegolem) -"r" = ( -/obj/machinery/door/airlock/titanium, -/obj/structure/fans/tiny, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "s" = ( /obj/machinery/light{ dir = 8 @@ -258,6 +253,11 @@ }, /turf/simulated/floor/plating/lavaland_air, /area/shuttle/freegolem) +"W" = ( +/obj/machinery/door/airlock/titanium, +/obj/structure/fans/tiny, +/turf/simulated/floor/mineral/titanium/purple, +/area/shuttle/freegolem) (1,1,1) = {" a @@ -301,12 +301,12 @@ a a b b -r +W b x D b -r +W b b a diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm index 3c73fa6c9021..cc4a29fd3ea9 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm @@ -9,14 +9,9 @@ /turf/simulated/wall/mineral/iron, /area/ruin/powered) "d" = ( -/obj/item/clothing/head/helmet/space/syndicate/orange, /obj/item/clothing/mask/breath, /turf/simulated/floor/plating, /area/ruin/powered) -"e" = ( -/obj/item/clothing/suit/space/syndicate/orange, -/turf/simulated/floor/plating, -/area/ruin/powered) "g" = ( /turf/simulated/floor/plating/asteroid{ name = "dirt" @@ -172,7 +167,7 @@ /obj/effect/baseturf_helper, /turf/simulated/floor/plating, /area/ruin/powered) -"P" = ( +"Q" = ( /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) @@ -180,83 +175,14 @@ /obj/item/flashlight/lantern, /turf/simulated/floor/plating, /area/ruin/powered) +"Z" = ( +/turf/template_noop, +/area/template_noop) (1,1,1) = {" -a -a -a -a -a -a -a -a -P -P -P -a -a -a -a -a -"} -(2,1,1) = {" -a -a -a -a -a -a -a -a -a -a -P -P -s -a -a -a -"} -(3,1,1) = {" -a -a -a -a -a -a -a -a -a -a -P -P -P -s -a -a -"} -(4,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -P -P -P -s -a -"} -(5,1,1) = {" -a -a -a +Z +Z +Z a a b @@ -267,13 +193,13 @@ t t t t -P -P +Q +Q a "} -(6,1,1) = {" -a -a +(2,1,1) = {" +Z +Z a a b @@ -285,11 +211,11 @@ v x B t -P -P -s +Q +Q +Q "} -(7,1,1) = {" +(3,1,1) = {" a a a @@ -303,11 +229,11 @@ w y y D -P -P +Q +Q a "} -(8,1,1) = {" +(4,1,1) = {" a b b @@ -321,11 +247,11 @@ o z C t -P -P +Q +Q a "} -(9,1,1) = {" +(5,1,1) = {" b b g @@ -339,11 +265,11 @@ o t t t -P +Q s a "} -(10,1,1) = {" +(6,1,1) = {" b d g @@ -357,13 +283,13 @@ o A b a -P -P +Q +Q s "} -(11,1,1) = {" +(7,1,1) = {" c -e +o h g l @@ -376,10 +302,10 @@ c b a a -P +Q s "} -(12,1,1) = {" +(8,1,1) = {" b b o @@ -397,7 +323,7 @@ E H E "} -(13,1,1) = {" +(9,1,1) = {" a b b @@ -408,19 +334,14 @@ a a a a -a -a +Z +Z a F I F "} -(14,1,1) = {" -a -a -a -a -a +(10,1,1) = {" a a a @@ -428,44 +349,49 @@ a a a a +Z +Z +Z +Z +Z a F I F "} -(15,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a +(11,1,1) = {" +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z a F J G "} -(16,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +(12,1,1) = {" +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +a +Q +Q +Q "} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hierophant.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hierophant.dmm index 2eba0969e53a..cab297ad35b9 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hierophant.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_hierophant.dmm @@ -2,9 +2,6 @@ "a" = ( /turf/simulated/wall/indestructible/hierophant, /area/ruin/unpowered/hierophant) -"b" = ( -/turf/simulated/floor/indestructible/hierophant, -/area/ruin/unpowered/hierophant) "c" = ( /obj/effect/light_emitter{ light_power = 5; @@ -30,15 +27,18 @@ /obj/effect/baseturf_helper/lava/mapping_lava, /turf/simulated/floor/indestructible/hierophant/two, /area/ruin/unpowered/hierophant) +"r" = ( +/turf/simulated/floor/indestructible/hierophant, +/area/ruin/unpowered/hierophant) (1,1,1) = {" a a a -b -b -b -b +r +r +r +r a a a @@ -48,146 +48,146 @@ a a a a -b -b -b -b +r +r +r +r a a a "} (2,1,1) = {" a -b -b -b -b -b -b -b -b -b -b -c -b -b -b -b -b -b -b -b -b -b +r +r +r +r +r +r +r +r +r +r +c +r +r +r +r +r +r +r +r +r +r a "} (3,1,1) = {" a -b -b -b +r +r +r c c -b -b -b +r +r +r a -b -b -b +r +r +r a -b -b -b +r +r +r c c -b -b -b +r +r +r a "} (4,1,1) = {" -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r "} (5,1,1) = {" -b -b +r +r c -b +r a a -b +r c -b -b -b +r +r +r c -b -b -b +r +r +r c -b +r a a -b +r c -b -b +r +r "} (6,1,1) = {" -b -b +r +r c -b +r a a -b +r c -b -b -b +r +r +r c -b -b -b +r +r +r c -b +r a a -b +r c -b -b +r +r "} (7,1,1) = {" -b -b -b -b -b -b +r +r +r +r +r +r e e e @@ -199,18 +199,18 @@ e e e e -b -b -b -b -b -b +r +r +r +r +r +r "} (8,1,1) = {" a -b -b -b +r +r +r c c e @@ -226,18 +226,18 @@ e e c c -b -b -b +r +r +r a "} (9,1,1) = {" a -b -b -b -b -b +r +r +r +r +r e e e @@ -249,20 +249,20 @@ e e e e -b -b -b -b -b +r +r +r +r +r a "} (10,1,1) = {" a -b +r a -b -b -b +r +r +r e a e @@ -274,20 +274,20 @@ e e a e -b -b -b +r +r +r a -b +r a "} (11,1,1) = {" a -b -b -b -b -b +r +r +r +r +r e e e @@ -299,18 +299,18 @@ e e e e -b -b -b -b -b +r +r +r +r +r a "} (12,1,1) = {" a c -b -b +r +r c c e @@ -326,18 +326,18 @@ e e c c -b -b +r +r c a "} (13,1,1) = {" a -b -b -b -b -b +r +r +r +r +r e e e @@ -349,20 +349,20 @@ e e e e -b -b -b -b -b +r +r +r +r +r a "} (14,1,1) = {" a -b +r a -b -b -b +r +r +r e a e @@ -374,20 +374,20 @@ e e a e -b -b -b +r +r +r a -b +r a "} (15,1,1) = {" a -b -b -b -b -b +r +r +r +r +r e e e @@ -399,18 +399,18 @@ e e e e -b -b -b -b -b +r +r +r +r +r a "} (16,1,1) = {" a -b -b -b +r +r +r c c e @@ -426,18 +426,18 @@ e e c c -b -b -b +r +r +r a "} (17,1,1) = {" -b -b -b -b -b -b +r +r +r +r +r +r e e e @@ -449,146 +449,146 @@ e e e e -b -b -b -b -b -b +r +r +r +r +r +r "} (18,1,1) = {" -b -b +r +r c -b +r a a -b +r c -b -b -b +r +r +r c -b -b -b +r +r +r c -b +r a a -b +r c -b -b +r +r "} (19,1,1) = {" -b -b +r +r c -b +r a a -b +r c -b -b -b +r +r +r c -b -b -b +r +r +r c -b +r a a -b +r c -b -b +r +r "} (20,1,1) = {" -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r "} (21,1,1) = {" a -b -b -b +r +r +r c c -b -b -b +r +r +r a -b -b -b +r +r +r a -b -b -b +r +r +r c c -b -b -b +r +r +r a "} (22,1,1) = {" a -b -b -b -b -b -b -b -b -b -b -c -b -b -b -b -b -b -b -b -b -b +r +r +r +r +r +r +r +r +r +r +c +r +r +r +r +r +r +r +r +r +r a "} (23,1,1) = {" a a a -b -b -b -b +r +r +r +r a a a @@ -598,10 +598,10 @@ a a a a -b -b -b -b +r +r +r +r a a a diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm index e21f413c620f..95a68100f271 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm @@ -2,9 +2,6 @@ "a" = ( /turf/template_noop, /area/template_noop) -"b" = ( -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "c" = ( /obj/structure/lattice, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, @@ -217,74 +214,77 @@ "Q" = ( /turf/simulated/floor/plating/lavaland_air, /area/ruin/powered/pizza_party) +"Y" = ( +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) (1,1,1) = {" a a -b -b +Y +Y a a -b -b -b -b -b -b -b -b +Y +Y +Y +Y +Y +Y +Y +Y a a a a "} (2,1,1) = {" -b -b -b -b -b -b -b -b -b -b +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y c c -b -b -b -b +Y +Y +Y +Y a a "} (3,1,1) = {" -b -b -b -b -b -b -b -b +Y +Y +Y +Y +Y +Y +Y +Y c c e e c c -b -b -b +Y +Y +Y a "} (4,1,1) = {" -b -b -b -b +Y +Y +Y +Y d -b +Y c c e @@ -294,17 +294,17 @@ e Q e d -b -b +Y +Y a "} (5,1,1) = {" a -b -b -b +Y +Y +Y d -b +Y m e w @@ -314,15 +314,15 @@ h h e d -b -b -b +Y +Y +Y "} (6,1,1) = {" a -b -b -b +Y +Y +Y d f n @@ -333,16 +333,16 @@ e M e c -b -b -b -b +Y +Y +Y +Y "} (7,1,1) = {" -b -b -b -b +Y +Y +Y +Y d g o @@ -352,17 +352,17 @@ C J h d -b -b -b -b -b +Y +Y +Y +Y +Y "} (8,1,1) = {" -b -b -b -b +Y +Y +Y +Y e h p @@ -372,16 +372,16 @@ D K M d -b -b -b -b -b +Y +Y +Y +Y +Y "} (9,1,1) = {" -b -b -b +Y +Y +Y c e i @@ -392,16 +392,16 @@ E h h c -b -b -b -b -b +Y +Y +Y +Y +Y "} (10,1,1) = {" -b -b -b +Y +Y +Y c e j @@ -412,17 +412,17 @@ F q N c -b -b -b -b -b +Y +Y +Y +Y +Y "} (11,1,1) = {" -b -b -b -b +Y +Y +Y +Y e e h @@ -432,17 +432,17 @@ G q h c -b -b -b -b -b +Y +Y +Y +Y +Y "} (12,1,1) = {" -b -b -b -b +Y +Y +Y +Y d k h @@ -452,17 +452,17 @@ H h O d -b -b -b -b -b +Y +Y +Y +Y +Y "} (13,1,1) = {" -b -b -b -b +Y +Y +Y +Y d k h @@ -472,17 +472,17 @@ s o n d -b -b -b -b +Y +Y +Y +Y a "} (14,1,1) = {" -b -b -b -b +Y +Y +Y +Y d l i @@ -492,17 +492,17 @@ I L P d -b -b -b -b +Y +Y +Y +Y a "} (15,1,1) = {" -b -b -b -b +Y +Y +Y +Y d d e @@ -512,48 +512,48 @@ e e d d -b -b -b -b +Y +Y +Y +Y a "} (16,1,1) = {" a -b -b -b -b -b +Y +Y +Y +Y +Y c v -b +Y c -b -b -b -b -b -b -b +Y +Y +Y +Y +Y +Y +Y a "} (17,1,1) = {" a -b -b -b -b -b -b -b -b -b -b -b -b -b -b +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y a a a @@ -563,14 +563,14 @@ a a a a -b -b -b -b -b -b -b -b +Y +Y +Y +Y +Y +Y +Y +Y a a a diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm index 754614d2091e..849fa32764a7 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm @@ -1,7 +1,4 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "b" = ( /turf/simulated/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) @@ -75,6 +72,9 @@ /obj/structure/mirror/magic/pride, /turf/simulated/wall/mineral/diamond, /area/ruin/powered/pride) +"P" = ( +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "Y" = ( /obj/machinery/door/airlock/diamond, /obj/structure/fans/tiny/invisible, @@ -82,30 +82,30 @@ /area/ruin/powered/pride) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P +P "} (2,1,1) = {" -a -a +P +P c c c @@ -123,7 +123,7 @@ c c c c -a +P "} (3,1,1) = {" b @@ -145,7 +145,7 @@ G G G c -a +P "} (4,1,1) = {" c @@ -167,7 +167,7 @@ e e G c -a +P "} (5,1,1) = {" c @@ -188,8 +188,8 @@ g g r G -a -a +P +P "} (6,1,1) = {" c @@ -210,8 +210,8 @@ g g g Y -a -a +P +P "} (7,1,1) = {" c @@ -233,7 +233,7 @@ g r G c -a +P "} (8,1,1) = {" c @@ -255,7 +255,7 @@ f f G c -a +P "} (9,1,1) = {" b @@ -277,7 +277,7 @@ G G G c -a +P "} (10,1,1) = {" b @@ -299,5 +299,5 @@ c c c c -a +P "} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_puzzle.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_puzzle.dmm index 75b4c619445b..a00f000ad969 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_puzzle.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_puzzle.dmm @@ -1,7 +1,4 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/lavaland/surface/outdoors) "b" = ( /obj/effect/sliding_puzzle/lavaland, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, @@ -9,39 +6,42 @@ "c" = ( /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"n" = ( +/turf/template_noop, +/area/lavaland/surface/outdoors) (1,1,1) = {" -a -a -a -a -a +n +n +n +n +n "} (2,1,1) = {" -a +n c c c -a +n "} (3,1,1) = {" -a +n c b c -a +n "} (4,1,1) = {" -a +n c c c -a +n "} (5,1,1) = {" -a -a -a -a -a +n +n +n +n +n "} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index 1840bd959f46..1ba79151f953 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -1,4 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/simulated/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) "ag" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -486,84 +489,84 @@ QX QX QX yZ -BC -BC -BC -BC -BC -BC -BC -BC +aa +aa +aa +aa +aa +aa +aa +aa QX -BC +aa QX -BC -BC -BC -BC -BC -BC +aa +aa +aa +aa +aa +aa QX QX QX "} (2,1,1) = {" QX -BC -yZ -yZ -yZ -BC -BC -BC -BC -BC -BC -BC -BC -BC -BC -BC -BC -BC +aa +yZ +yZ +yZ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa QX -BC -BC -BC -BC -BC +aa +aa +aa +aa +aa "} (3,1,1) = {" QX -BC -BC +aa +aa yZ yZ -BC +aa yZ yZ yZ -BC +aa yZ yZ yZ yZ -BC -BC -BC -BC -BC -BC -BC -BC -BC +aa +aa +aa +aa +aa +aa +aa +aa +aa QX "} (4,1,1) = {" -BC -BC -BC -BC +aa +aa +aa +aa yZ BC yZ @@ -579,16 +582,16 @@ yZ yZ yZ yZ -BC +aa yZ -BC -BC -BC +aa +aa +aa "} (5,1,1) = {" -BC +aa QX -BC +aa yZ yZ yZ @@ -608,13 +611,13 @@ yZ yZ yZ yZ -BC -BC +aa +aa "} (6,1,1) = {" -BC -BC -BC +aa +aa +aa yZ yZ no @@ -633,14 +636,14 @@ no no yZ yZ -BC -BC -BC +aa +aa +aa "} (7,1,1) = {" -BC -BC -BC +aa +aa +aa yZ no no @@ -659,13 +662,13 @@ no no no yZ -BC -BC -BC +aa +aa +aa "} (8,1,1) = {" -BC -BC +aa +aa yZ yZ no @@ -685,13 +688,13 @@ vt AG no yZ -BC -BC -BC +aa +aa +aa "} (9,1,1) = {" -BC -BC +aa +aa yZ yZ no @@ -712,13 +715,13 @@ AG no yZ yZ -BC +aa QX "} (10,1,1) = {" QX -BC -BC +aa +aa yZ no Pg @@ -743,8 +746,8 @@ yZ "} (11,1,1) = {" QX -BC -BC +aa +aa yZ no Pg @@ -765,12 +768,12 @@ no yZ yZ yZ -BC +aa "} (12,1,1) = {" QX -BC -BC +aa +aa yZ no no @@ -790,12 +793,12 @@ no no yZ yZ -BC -BC +aa +aa "} (13,1,1) = {" -BC -BC +aa +aa yZ yZ Nj @@ -815,14 +818,14 @@ no no Nj yZ -BC -BC -BC +aa +aa +aa "} (14,1,1) = {" -BC -BC -BC +aa +aa +aa yZ yZ no @@ -841,15 +844,15 @@ Nj no yZ yZ -BC -BC -BC +aa +aa +aa "} (15,1,1) = {" -BC -BC -BC -BC +aa +aa +aa +aa yZ al yc @@ -868,12 +871,12 @@ ja yZ yZ yZ -BC -BC +aa +aa "} (16,1,1) = {" -BC -BC +aa +aa yZ yZ yZ @@ -893,14 +896,14 @@ no no yZ yZ -BC -BC +aa +aa QX "} (17,1,1) = {" QX -BC -BC +aa +aa yZ no no @@ -920,12 +923,12 @@ no no yZ yZ -BC -BC +aa +aa "} (18,1,1) = {" -BC -BC +aa +aa yZ yZ no @@ -947,11 +950,11 @@ no yZ yZ yZ -BC +aa "} (19,1,1) = {" -BC -BC +aa +aa yZ yZ no @@ -972,11 +975,11 @@ iV no yZ yZ -BC -BC +aa +aa "} (20,1,1) = {" -BC +aa yZ yZ yZ @@ -998,8 +1001,8 @@ ga no yZ yZ -BC -BC +aa +aa "} (21,1,1) = {" yZ @@ -1025,12 +1028,12 @@ no yZ yZ yZ -BC +aa "} (22,1,1) = {" QX yZ -BC +aa yZ no MB @@ -1050,12 +1053,12 @@ uO no yZ yZ -BC -BC +aa +aa "} (23,1,1) = {" -BC -BC +aa +aa yZ yZ no @@ -1077,11 +1080,11 @@ no yZ yZ yZ -BC +aa "} (24,1,1) = {" QX -BC +aa yZ yZ no @@ -1102,12 +1105,12 @@ no no yZ yZ -BC +aa QX "} (25,1,1) = {" -BC -BC +aa +aa yZ yZ Nj @@ -1128,13 +1131,13 @@ no Nj yZ yZ -BC -BC +aa +aa "} (26,1,1) = {" -BC -BC -BC +aa +aa +aa yZ yZ no @@ -1155,13 +1158,13 @@ yZ yZ yZ yZ -BC +aa "} (27,1,1) = {" -BC -BC -BC -BC +aa +aa +aa +aa yZ al yc @@ -1179,14 +1182,14 @@ yc ja yZ yZ -BC -BC -BC +aa +aa +aa "} (28,1,1) = {" -BC +aa QX -BC +aa yZ yZ yZ @@ -1205,14 +1208,14 @@ yZ yZ yZ yZ -BC -BC +aa +aa QX "} (29,1,1) = {" -BC -BC -BC +aa +aa +aa BC BC yZ @@ -1231,14 +1234,14 @@ yZ yZ BC yZ -BC -BC -BC +aa +aa +aa "} (30,1,1) = {" QX QX -BC +aa BC BC yZ @@ -1257,14 +1260,14 @@ yZ yZ yZ BC -BC -BC -BC +aa +aa +aa "} (31,1,1) = {" QX -BC -BC +aa +aa BC BC yZ @@ -1283,12 +1286,12 @@ BC BC yZ BC -BC +aa QX -BC +aa "} (32,1,1) = {" -BC +aa QX QX BC @@ -1309,13 +1312,13 @@ yZ BC BC QX -BC -BC +aa +aa QX "} (33,1,1) = {" QX -BC +aa BC BC BC @@ -1335,9 +1338,9 @@ BC BC BC BC -BC -BC -BC +aa +aa +aa "} (34,1,1) = {" QX diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm index ff9271dfe3d8..0f0b47cb8109 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm @@ -41,10 +41,6 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"j" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "k" = ( /obj/machinery/sleeper/survival_pod, /turf/simulated/floor/pod/dark, @@ -129,6 +125,10 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"L" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) (1,1,1) = {" a @@ -218,8 +218,8 @@ d d d y -j -j +L +L "} (8,1,1) = {" a @@ -229,8 +229,8 @@ b i b i -j -j +L +L b b "} @@ -239,7 +239,7 @@ a a b b -j +L n s b @@ -254,7 +254,7 @@ a a a o -j +L b a a diff --git a/_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm b/_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm index fbdf10f74a1c..6eddc1288d95 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm @@ -9,10 +9,10 @@ /turf/simulated/floor/plating/airless, /area/ruin/space/sec_shuttle) "c" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "109" + name = "Shuttle Hatch" }, /turf/simulated/floor/plasteel/airless{ icon_state = "dark" @@ -176,10 +176,10 @@ }, /area/ruin/space/sec_shuttle) "T" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "109" + name = "Shuttle Hatch" }, /turf/simulated/floor/plating/airless, /area/ruin/space/sec_shuttle) diff --git a/_maps/map_files/RandomRuins/SpaceRuins/debris1.dmm b/_maps/map_files/RandomRuins/SpaceRuins/debris1.dmm index 0685cdb39eb4..dc0aad02f007 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/debris1.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/debris1.dmm @@ -141,7 +141,7 @@ /turf/simulated/floor/plating/burnt/airless, /area/space) "U" = ( -/obj/effect/spawner/random_barrier/wall_probably, +/obj/effect/spawner/random/barrier/wall_probably, /turf/space, /area/space) "V" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm index 3ac6de203148..848637b6e12e 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm @@ -275,9 +275,8 @@ /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) "aR" = ( -/obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/highsecurity, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -771,9 +770,8 @@ }, /area/ruin/space/deepstorage) "co" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /obj/structure/barricade/wooden/crude{ layer = 4 }, @@ -1029,9 +1027,8 @@ }, /area/ruin/space/deepstorage) "eq" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/deepstorage) "es" = ( @@ -1284,6 +1281,7 @@ /area/ruin/space/deepstorage) "gq" = ( /obj/structure/rack, +/obj/effect/spawner/lootdrop/bluespace_tap/cultural, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -1439,8 +1437,8 @@ /turf/simulated/floor/plating, /area/ruin/space/deepstorage) "hp" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/hatch{ - req_access_txt = "512"; name = "Guard Wing" }, /obj/structure/barricade/wooden/crude{ @@ -1691,8 +1689,8 @@ /turf/simulated/floor/plasteel, /area/ruin/space/deepstorage) "jj" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512"; name = "Guard Store Room" }, /obj/effect/decal/cleanable/dirt, @@ -1855,9 +1853,9 @@ /area/ruin/space/deepstorage) "jT" = ( /obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/vault{ - locked = 1; - req_access_txt = "512" + locked = 1 }, /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) @@ -2169,9 +2167,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/centcom{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/centcom, /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) "mf" = ( @@ -2664,9 +2661,11 @@ }, /area/ruin/space/deepstorage) "pk" = ( -/obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, +/obj/structure/rack, +/obj/item/stack/spacecash/c500, +/obj/effect/spawner/lootdrop/bluespace_tap/cultural, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" @@ -2675,9 +2674,8 @@ "ps" = ( /obj/structure/rack, /obj/effect/turf_decal/delivery/hollow, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, -/obj/item/grenade/confetti, +/obj/item/stack/spacecash/c500, +/obj/effect/spawner/lootdrop/bluespace_tap/organic, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" @@ -2688,8 +2686,8 @@ /turf/simulated/floor/plating/asteroid/basalt/airless, /area/ruin/space/unpowered) "pz" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/command/glass{ - req_access_txt = "512"; name = "Floor Administrator's Office" }, /obj/effect/mapping_helpers/airlock/polarized{ @@ -2741,9 +2739,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "podfloor" @@ -2973,9 +2970,8 @@ /area/ruin/space/deepstorage) "rK" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "podfloor" @@ -3532,7 +3528,7 @@ }, /area/ruin/space/deepstorage) "vo" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -3775,9 +3771,8 @@ /turf/simulated/wall/indestructible/riveted, /area/ruin/space/deepstorage) "wH" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /obj/machinery/door/poddoor/shutters/preopen{ dir = 2; id_tag = "DS_Quartermaster" @@ -3857,8 +3852,8 @@ }, /area/ruin/space/deepstorage) "xC" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512"; name = "Interrogation Room" }, /turf/simulated/floor/plasteel{ @@ -3940,7 +3935,11 @@ /area/ruin/space/deepstorage) "ye" = ( /obj/structure/table/reinforced, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, +/obj/structure/rack, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, +/obj/item/grenade/confetti, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -4105,9 +4104,9 @@ /turf/simulated/floor/mineral/titanium, /area/ruin/space/deepstorage) "zh" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/highsecurity{ - name = "Incinerator"; - req_access_txt = "512" + name = "Incinerator" }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -4166,9 +4165,9 @@ /turf/simulated/floor/plating, /area/ruin/space/deepstorage) "zy" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/vault{ - locked = 1; - req_access_txt = "512" + locked = 1 }, /obj/structure/fans/tiny, /turf/simulated/floor/catwalk, @@ -4189,9 +4188,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -4318,9 +4316,9 @@ /area/ruin/space/deepstorage) "As" = ( /obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/vault{ - name = "Auxiliary Power Room"; - req_access_txt = "512" + name = "Auxiliary Power Room" }, /obj/machinery/door/poddoor/multi_tile/impassable{ id_tag = "DS_Engineering" @@ -4353,8 +4351,8 @@ }, /area/ruin/space/deepstorage) "AA" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512"; name = "Evidence Storage" }, /turf/simulated/floor/plasteel{ @@ -4673,10 +4671,10 @@ /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) "Cn" = ( -/obj/structure/safe, /obj/effect/turf_decal/delivery/hollow, -/obj/item/stack/spacecash/c500, -/obj/effect/spawner/random/deepstorage_award, +/obj/structure/rack, +/obj/effect/spawner/random/deepstorage_reward, +/obj/effect/spawner/random/deepstorage_reward, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" @@ -4812,7 +4810,7 @@ /obj/structure/railing{ dir = 8 }, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -5367,9 +5365,8 @@ }, /area/ruin/space/deepstorage) "Hx" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -5482,8 +5479,8 @@ /area/ruin/space/deepstorage) "IR" = ( /obj/effect/turf_decal/delivery/hollow, -/obj/structure/safe, -/obj/item/stack/spacecash/c500, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/bluespace_tap/organic, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -6016,6 +6013,7 @@ /obj/structure/rack, /obj/item/paper/researchnotes, /obj/effect/turf_decal/delivery/hollow, +/obj/effect/spawner/random/deepstorage_reward/main, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -6184,7 +6182,7 @@ /area/ruin/space/unpowered) "Og" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel, /area/ruin/space/deepstorage) "Oh" = ( @@ -6895,9 +6893,8 @@ }, /area/ruin/space/deepstorage) "To" = ( -/obj/machinery/door/airlock/centcom{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/centcom, /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) "Tq" = ( @@ -6923,9 +6920,8 @@ }, /area/ruin/space/deepstorage) "TK" = ( -/obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/highsecurity, /obj/machinery/door/poddoor/multi_tile/impassable{ id_tag = "DS_Storage" }, @@ -7001,9 +6997,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/highsecurity{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/highsecurity, /obj/machinery/door/poddoor/multi_tile/impassable{ id_tag = "DS_Storage" }, @@ -7685,7 +7680,7 @@ /area/ruin/space/deepstorage) "Yk" = ( /obj/structure/table/reinforced, -/obj/item/salvage/ruin/nanotrasen, +/obj/item/paper/researchnotes, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -7918,9 +7913,8 @@ /turf/simulated/floor/engine/airless, /area/ruin/space/unpowered) "ZW" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "512" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "podfloor" diff --git a/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm b/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm index bd9a9b981788..a2980f93f610 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/derelict5.dmm @@ -167,7 +167,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/unpowered) "xs" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/floor/plasteel, /area/ruin/space/unpowered) "xQ" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/dj.dmm b/_maps/map_files/RandomRuins/SpaceRuins/dj.dmm index 717a32bcac86..95caec8d8c88 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/dj.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/dj.dmm @@ -310,11 +310,11 @@ "aQ" = ( /obj/structure/rack, /obj/item/clothing/suit/space/syndicate/orange{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; + desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to the Union!"; name = "Cosmonaut Security Suit" }, /obj/item/clothing/head/helmet/space/syndicate/orange{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; + desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to the Union!"; name = "Cosmonaut Security Helmet" }, /obj/item/clothing/mask/breath, @@ -367,7 +367,7 @@ pixel_y = 28 }, /obj/machinery/economy/vending/cigarette/free{ - slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Russian cigarette!","Cigarettes! Now with 100% less capitalism.") + slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Soviet cigarette!","Cigarettes! Now with 100% less capitalism.") }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -512,7 +512,7 @@ /area/ruin/space/djstation) "bp" = ( /obj/structure/chair/office/light, -/mob/living/simple_animal/hostile/russian/ranged/mosin, +/mob/living/simple_animal/hostile/soviet/ranged/mosin, /turf/simulated/floor/plasteel/dark, /area/ruin/space/djstation) "bq" = ( @@ -583,7 +583,7 @@ pixel_y = 17 }, /obj/item/phone{ - desc = "An old Russian phone. The dial tone is still humming."; + desc = "An old Soviet phone. The dial tone is still humming."; name = "spin-dial phone"; pixel_x = 1; pixel_y = 1 @@ -797,11 +797,11 @@ /area/ruin/space/djstation) "yr" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/ruin/space/djstation) "Zp" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/ruin/space/djstation) diff --git a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm index 091de72050ef..87472fd1364e 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm @@ -63,9 +63,9 @@ /turf/simulated/floor/plating/airless, /area/ruin/space/syndicate_listening_station/asteroid) "kE" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/cable{ d1 = 4; @@ -242,9 +242,9 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/syndicate_listening_station) "zb" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/fans/tiny, /obj/effect/decal/cleanable/dirt, @@ -472,9 +472,9 @@ /turf/simulated/floor/mineral/silver, /area/ruin/space/syndicate_listening_station) "Ow" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -513,9 +513,9 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/syndicate_listening_station) "TS" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/cable{ d1 = 4; diff --git a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm index 24116f28c9cb..4c3d28f03fbc 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm @@ -290,8 +290,8 @@ /turf/simulated/wall, /area/ruin/space/moonbase19) "aN" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271"; name = "Storage Room" }, /turf/simulated/floor/plasteel, @@ -390,16 +390,15 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awaymlock" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271"; name = "Medical Ward" }, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "ba" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/multi_tile/glass, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -846,9 +845,8 @@ }, /area/ruin/space/moonbase19) "cx" = ( -/obj/machinery/door/airlock/security/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/security/glass, /obj/structure/barricade/wooden/crude{ layer = 4 }, @@ -909,9 +907,8 @@ layer = 4 }, /obj/machinery/atmospherics/pipe/simple/visible/universal, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "cI" = ( @@ -1198,8 +1195,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awaycontlockdown" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271"; name = "Specimen Containtment Zone" }, /turf/simulated/floor/catwalk, @@ -1394,8 +1391,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awaymlock" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Medical Ward" }, /turf/simulated/floor/catwalk, @@ -1574,9 +1571,8 @@ /obj/structure/barricade/wooden/crude{ layer = 4 }, -/obj/machinery/door/airlock/external{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/external, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "eZ" = ( @@ -1672,9 +1668,8 @@ }, /area/ruin/space/moonbase19) "fn" = ( -/obj/machinery/door/airlock/centcom{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/centcom, /turf/simulated/floor/plasteel, /area/ruin/space/moonbase19) "fp" = ( @@ -1819,8 +1814,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Cafeteria" }, /turf/simulated/floor/catwalk, @@ -2934,8 +2929,8 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/engineering/glass{ - req_access_txt = "271"; name = "Workshop" }, /turf/simulated/floor/catwalk, @@ -3335,8 +3330,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awayscilock" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Research Division" }, /turf/simulated/floor/catwalk, @@ -3548,9 +3543,8 @@ /turf/simulated/floor/engine, /area/ruin/space/moonbase19) "kW" = ( -/obj/machinery/door/airlock/centcom{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/centcom, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "caution" @@ -3628,9 +3622,8 @@ }, /area/ruin/space/moonbase19) "lq" = ( -/obj/machinery/door/airlock{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -4181,8 +4174,8 @@ /turf/simulated/floor/carpet, /area/ruin/space/moonbase19) "nx" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Engineering Division" }, /turf/simulated/floor/plasteel, @@ -4813,8 +4806,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awayscilock" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Research Division" }, /turf/simulated/floor/catwalk, @@ -4968,8 +4961,8 @@ }, /area/ruin/space/moonbase19) "qx" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Cafeteria" }, /turf/simulated/floor/catwalk, @@ -5354,8 +5347,8 @@ }, /area/ruin/space/moonbase19) "rV" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock{ - req_access_txt = "271"; name = "Dorms" }, /turf/simulated/floor/plasteel{ @@ -5379,9 +5372,8 @@ }, /area/ruin/space/moonbase19) "rZ" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "sa" = ( @@ -5531,10 +5523,6 @@ }, /turf/simulated/floor/engine, /area/ruin/space/moonbase19) -"sy" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall/r_wall, -/area/ruin/space/moonbase19) "sF" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall/indestructible/riveted, @@ -7074,7 +7062,7 @@ /area/ruin/space/moonbase19) "zV" = ( /obj/machinery/economy/vending/medical{ - req_access_txt = "271" + req_access = list(271) }, /turf/simulated/floor/plasteel{ icon_state = "whitecorner"; @@ -7099,8 +7087,8 @@ }, /area/ruin/space/moonbase19) "Af" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/command/glass{ - req_access_txt = "271"; name = "Senior Researcher's Office" }, /obj/effect/mapping_helpers/airlock/polarized{ @@ -7491,7 +7479,7 @@ /obj/structure/table/reinforced, /obj/machinery/door/window/reinforced/normal{ dir = 4; - req_access_txt = "271" + req_access = list(271) }, /obj/machinery/door/poddoor/shutters/preopen{ id_tag = "awayscilock2" @@ -7516,9 +7504,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awayscilock" }, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "BK" = ( @@ -7527,8 +7514,8 @@ /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "BO" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/engineering/glass{ - req_access_txt = "271"; name = "Engineering Division" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -7606,8 +7593,8 @@ /obj/machinery/door/poddoor/impassable{ id_tag = "awaycontlockdown" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271"; name = "Specimen Containtment Zone" }, /turf/simulated/floor/catwalk, @@ -7621,9 +7608,8 @@ }, /area/ruin/space/moonbase19) "Ct" = ( -/obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/highsecurity, /obj/machinery/door/poddoor/preopen{ id_tag = "awayscilock1" }, @@ -7645,8 +7631,8 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Engineering Division" }, /turf/simulated/floor/plasteel, @@ -7882,9 +7868,8 @@ }, /area/ruin/space/moonbase19) "Dt" = ( -/obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/medical/glass, /obj/effect/decal/cleanable/blood/tracks/mapped, /turf/simulated/floor/plasteel{ icon_state = "darkfull"; @@ -8496,8 +8481,8 @@ }, /area/ruin/space/moonbase19) "Gk" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271"; name = "Operation Room" }, /turf/simulated/floor/plasteel{ @@ -8845,8 +8830,8 @@ /turf/simulated/floor/engine, /area/ruin/space/moonbase19) "HO" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271"; name = "Chamber #1" }, /obj/effect/turf_decal/delivery, @@ -9070,8 +9055,8 @@ /area/ruin/space/moonbase19) "IU" = ( /obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/highsecurity{ - req_access_txt = "271"; name = "Chamber #2" }, /turf/simulated/floor/plasteel{ @@ -9197,9 +9182,8 @@ }, /area/ruin/space/moonbase19) "JE" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/external, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "JG" = ( @@ -9839,9 +9823,8 @@ }, /area/ruin/space/moonbase19) "Mx" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) @@ -10578,8 +10561,8 @@ }, /area/ruin/space/moonbase19) "PF" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/security{ - req_access_txt = "271"; name = "Security Checkpoint" }, /turf/simulated/floor/plasteel{ @@ -10888,8 +10871,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Cafeteria" }, /turf/simulated/floor/catwalk, @@ -10979,9 +10962,8 @@ }, /area/ruin/space/moonbase19) "Rg" = ( -/obj/machinery/door/airlock/freezer{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/freezer, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor"; temperature = 273.15 @@ -11060,9 +11042,8 @@ /turf/simulated/floor/engine, /area/ruin/space/moonbase19) "RD" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/multi_tile/glass, /obj/structure/barricade/wooden/crude{ layer = 4 }, @@ -11299,9 +11280,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/door/airlock/centcom{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/centcom, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "caution" @@ -11365,8 +11345,8 @@ }, /area/ruin/space/moonbase19) "Ti" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/command/glass{ - req_access_txt = "271"; name = "Senior Researcher's Office" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -11591,8 +11571,8 @@ "Ue" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock{ - req_access_txt = "271"; name = "Dorms" }, /turf/simulated/floor/plasteel{ @@ -11695,9 +11675,8 @@ /obj/effect/decal/cleanable/blood/tracks/mapped{ dir = 8 }, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "UA" = ( @@ -12043,9 +12022,8 @@ /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "We" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/maintenance_hatch, /obj/machinery/door/poddoor/impassable{ id_tag = "awayscilock" }, @@ -12153,9 +12131,9 @@ }, /area/ruin/space/moonbase19) "WG" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/vault{ - locked = 1; - req_access_txt = "271" + locked = 1 }, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) @@ -12557,8 +12535,8 @@ /area/ruin/space/moonbase19) "Yj" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/engineering/glass{ - req_access_txt = "271"; name = "Engineering Division" }, /turf/simulated/floor/plasteel, @@ -12643,8 +12621,8 @@ id_tag = "awaymlock" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/centcom{ - req_access_txt = "271"; name = "Medical Ward" }, /turf/simulated/floor/catwalk, @@ -12688,8 +12666,8 @@ }, /area/ruin/space/moonbase19) "YM" = ( +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, /obj/machinery/door/airlock/engineering/glass{ - req_access_txt = "271"; name = "Workshop" }, /turf/simulated/floor/catwalk, @@ -12948,9 +12926,8 @@ /turf/simulated/floor/engine, /area/ruin/space/moonbase19) "ZP" = ( -/obj/machinery/door/airlock/medical/glass{ - req_access_txt = "271" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19, +/obj/machinery/door/airlock/medical/glass, /obj/structure/barricade/wooden{ layer = 4 }, @@ -14703,7 +14680,7 @@ Wd rL mh Mv -sy +ag tX tX Dd @@ -16017,7 +15994,7 @@ OZ VR af bP -sy +ag af tX tX diff --git a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm index 9dbdd2061f27..98f13edcf853 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm @@ -1960,9 +1960,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, /obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_one_access_txt = "301" + name = "Engineering External Access" }, /turf/simulated/floor/plating, /area/ruin/ancientstation/engi) @@ -3013,9 +3013,8 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/airlock/maintenance_hatch{ - req_one_access_txt = "301" - }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, +/obj/machinery/door/airlock/maintenance_hatch, /turf/simulated/floor/plating, /area/ruin/ancientstation/thetacorridor) "hF" = ( @@ -3090,9 +3089,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, /obj/machinery/door/airlock/external{ - name = "Engineering External Access"; - req_one_access_txt = "301" + name = "Engineering External Access" }, /turf/simulated/floor/plating/airless, /area/ruin/ancientstation/engi) @@ -3792,9 +3791,9 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, /obj/machinery/door/airlock/highsecurity{ - name = "Prototype Laboratory"; - req_access_txt = "301" + name = "Prototype Laboratory" }, /turf/simulated/floor/plasteel{ icon_state = "whitehall" @@ -3803,9 +3802,9 @@ "jv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta, /obj/machinery/door/airlock/highsecurity{ - name = "Prototype Laboratory"; - req_access_txt = "301" + name = "Prototype Laboratory" }, /turf/simulated/floor/plasteel{ icon_state = "whitehall" diff --git a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm index 592d9f2455ac..3131e93a9a5c 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm @@ -1244,7 +1244,7 @@ /obj/structure/safe/floor, /obj/item/tank/internals/oxygen/red, /obj/item/clothing/mask/gas/syndicate, -/obj/item/mod/control/pre_equipped/traitor, +/obj/item/mod/control/pre_equipped/mining/asteroid, /obj/item/reagent_containers/drinks/bottle/rum, /obj/item/reagent_containers/drinks/bottle/rum, /obj/item/folder/syndicate/blue, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm index 8e0bd98ae0e6..ee7e03df5065 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm @@ -241,8 +241,7 @@ id = "syndicatedruglab"; name = "Syndicate Drug Lab Hangar"; pixel_x = 24; - pixel_y = 4; - req_access_txt = null + pixel_y = 4 }, /turf/simulated/floor/plating, /area/ruin/space/syndicate_druglab) diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm index 29702b1da153..54445ed5d046 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm @@ -78,8 +78,8 @@ name = "Vault Bolt Control"; normaldoorcontrol = 1; pixel_x = 24; - req_access_txt = "150"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(150) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -1082,7 +1082,7 @@ id = "SSBrestricted"; name = "Shutters Control"; pixel_x = -24; - req_access_txt = "151" + req_access = list(151) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1274,8 +1274,7 @@ "gW" = ( /obj/machinery/door/window/classic/reversed{ name = "Animal Storage"; - req_access_txt = "150"; - req_one_access_txt = "150" + req_access = list(150) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -1553,7 +1552,7 @@ id = "SSBrestricted"; name = "Shutters Control"; pixel_x = 24; - req_access_txt = "151" + req_access = list(151) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -1581,7 +1580,7 @@ /area/ruin/unpowered/syndicate_space_base/toxtest) "iB" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/clothing/suit/space/syndicate, /obj/item/clothing/suit/space/syndicate, @@ -1728,7 +1727,7 @@ /area/ruin/unpowered/syndicate_space_base/arrivals) "je" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/clothing/suit/space/syndicate, /obj/item/clothing/suit/space/syndicate, @@ -4979,7 +4978,7 @@ dir = 4; network = list("SyndicateTestLab","SyndicateToxinsTest","SyndicateCaves","SyndicateInterior"); name = "syndicate security camera console"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -5290,7 +5289,7 @@ /area/ruin/unpowered/syndicate_space_base/atmos) "Ed" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/light{ dir = 1 @@ -5332,8 +5331,7 @@ "Ei" = ( /obj/machinery/door/window/classic/reversed{ name = "Animal Storage"; - req_access_txt = "150"; - req_one_access_txt = "150" + req_access = list(150) }, /mob/living/simple_animal/chicken{ faction = list("neutral","syndicate") @@ -5456,10 +5454,10 @@ }, /area/ruin/unpowered/syndicate_space_base/genetics) "ES" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/vault{ id_tag = "syndie_lavaland_vault"; - locked = 1; - req_access_txt = "150" + locked = 1 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -6140,7 +6138,7 @@ /area/ruin/unpowered/syndicate_space_base/main) "Iz" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/light, /obj/item/clothing/gloves/combat, @@ -6396,7 +6394,7 @@ pixel_y = -24; name = "Caves Turret Control Panel"; control_area = "Syndicate Space Base Cave"; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/chair{ dir = 8 @@ -7028,8 +7026,7 @@ /area/ruin/unpowered/syndicate_space_base/toxlaunch) "NT" = ( /obj/structure/closet/secure_closet/medical1{ - req_access = null; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/window/reinforced{ dir = 1 @@ -7692,7 +7689,7 @@ /area/ruin/unpowered/syndicate_space_base/engineering) "Sv" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/ammo_box/magazine/m10mm/hp, /obj/item/ammo_box/magazine/m10mm/hp, @@ -7793,7 +7790,7 @@ /area/ruin/unpowered/syndicate_space_base/storage) "SN" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/ammo_box/magazine/m10mm/hp, /obj/item/ammo_box/magazine/m10mm/hp, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm index e31219ca97e7..26c6e5586f9f 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm @@ -628,7 +628,7 @@ }, /area/ruin/space/syndicakefactory) "wW" = ( -/obj/machinery/suit_storage_unit/syndicate, +/obj/machinery/suit_storage_unit/mining, /turf/simulated/floor/engine, /area/ruin/space/syndicakefactory) "xy" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm index 25369e690d57..ce4becef7b45 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm @@ -147,14 +147,12 @@ on = 1 }, /obj/effect/spawner/random/syndicate/loot/common, -/obj/structure/closet/secure_closet/syndicate/depot, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/syndicate_depot/core) "aB" = ( /obj/effect/spawner/random/syndicate/loot/common, -/obj/structure/closet/secure_closet/syndicate/depot, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -345,7 +343,6 @@ /area/syndicate_depot/core) "bc" = ( /obj/effect/spawner/random/syndicate/loot/rare, -/obj/structure/closet/secure_closet/syndicate/depot, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -371,7 +368,6 @@ on = 1 }, /obj/effect/spawner/random/syndicate/loot/rare, -/obj/structure/closet/secure_closet/syndicate/depot, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -418,7 +414,6 @@ dir = 8 }, /obj/effect/spawner/random/syndicate/loot/common, -/obj/structure/closet/secure_closet/syndicate/depot, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -428,7 +423,6 @@ dir = 4 }, /obj/effect/spawner/random/syndicate/loot/common, -/obj/structure/closet/secure_closet/syndicate/depot, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -448,17 +442,17 @@ }, /area/syndicate_depot/core) "bq" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/syndicate_depot/core) "br" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -539,7 +533,6 @@ /area/syndicate_depot/core) "bE" = ( /obj/effect/spawner/random/syndicate/loot/officer, -/obj/structure/closet/secure_closet/syndicate/depot, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -568,16 +561,15 @@ name = "Sealed Doors"; protected = 0 }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/syndicate_depot/outer) "bJ" = ( -/obj/structure/closet/secure_closet/syndicate/depot, /obj/effect/spawner/random/syndicate/trapped_documents, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -655,8 +647,7 @@ /obj/machinery/turretid/syndicate{ name = "external turret controls"; pixel_x = -32; - req_access = null; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -800,7 +791,6 @@ /area/syndicate_depot/core) "cm" = ( /obj/effect/spawner/random/syndicate/loot/armory, -/obj/structure/closet/secure_closet/syndicate/depot/armory, /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -812,14 +802,12 @@ on = 1 }, /obj/effect/spawner/random/syndicate/loot/armory, -/obj/structure/closet/secure_closet/syndicate/depot/armory, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/syndicate_depot/core) "co" = ( /obj/effect/spawner/random/syndicate/loot/armory, -/obj/structure/closet/secure_closet/syndicate/depot/armory, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -1129,7 +1117,6 @@ dir = 8 }, /obj/effect/spawner/random/syndicate/loot/rare, -/obj/structure/closet/secure_closet/syndicate/depot, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -1173,12 +1160,6 @@ }, /turf/simulated/floor/plating/asteroid/airless, /area/syndicate_depot/outer) -"dg" = ( -/obj/item/gps/ruin{ - gpstag = "ERR#UNKWN" - }, -/turf/simulated/wall/mineral/plastitanium/nodiagonal, -/area/syndicate_depot/core) "Te" = ( /turf/simulated/mineral/random/high_chance, /area/syndicate_depot/outer) @@ -1913,7 +1894,7 @@ aj aj ao ad -dg +at aL aD aZ diff --git a/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm b/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm index 513e8ff077b4..dd84c082cba3 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm @@ -16,7 +16,7 @@ "an" = ( /mob/living/simple_animal/hostile/malf_drone, /turf/space, -/area/space) +/area/space/no_teleport) "ao" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; @@ -38,7 +38,7 @@ /obj/structure/lattice, /obj/structure/grille/broken, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "aN" = ( /obj/machinery/light/small{ dir = 8 @@ -117,7 +117,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "ca" = ( /obj/structure/cable{ d1 = 1; @@ -157,9 +157,7 @@ d2 = 4; icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/tele) "cJ" = ( @@ -174,7 +172,7 @@ icon_state = "2-4" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "dn" = ( /obj/machinery/computer/nonfunctional{ dir = 4 @@ -195,7 +193,7 @@ icon_state = "2-8" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "dv" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 8; @@ -304,7 +302,7 @@ }, /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "fc" = ( /obj/machinery/constructable_frame/machine_frame, /turf/simulated/floor/bluegrid{ @@ -332,7 +330,7 @@ }, /obj/structure/window/reinforced, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "fv" = ( /obj/structure/window/reinforced{ dir = 4 @@ -353,7 +351,7 @@ }, /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "gi" = ( /obj/item/radio/intercom{ pixel_y = 25 @@ -391,9 +389,9 @@ pixel_x = 0 }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "gv" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/ruin/space/telecomms/computer) "gG" = ( @@ -417,13 +415,11 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms Satellite"; - req_access_txt = "61" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" + name = "Telecoms Satellite" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/tele) @@ -446,7 +442,7 @@ }, /obj/structure/window/reinforced, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "hU" = ( /obj/machinery/computer/teleporter, /obj/effect/turf_decal/delivery, @@ -458,7 +454,7 @@ /area/ruin/space/telecomms/computer) "ik" = ( /turf/simulated/wall/r_wall, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "il" = ( /turf/simulated/floor/bluegrid{ icon_state = "dark"; @@ -474,7 +470,7 @@ /area/ruin/space/telecomms/computer) "iD" = ( /turf/simulated/wall/indestructible/riveted, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "iE" = ( /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/tele) @@ -512,9 +508,9 @@ /turf/simulated/floor/catwalk/airless, /area/ruin/space/telecomms/powercontrol) "ky" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms Power Control"; - req_access_txt = "61" + name = "Telecoms Power Control" }, /obj/structure/cable{ d1 = 4; @@ -577,7 +573,7 @@ pixel_x = 0 }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "li" = ( /obj/machinery/power/solar, /obj/structure/cable{ @@ -587,7 +583,7 @@ /turf/simulated/floor/plasteel/airless{ icon_state = "solarpanel" }, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "lo" = ( /obj/structure/window/reinforced{ dir = 1 @@ -649,7 +645,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "mb" = ( /obj/structure/cable{ d1 = 1; @@ -684,7 +680,7 @@ icon_state = "1-4" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "mD" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/bluespace_tap/organic, @@ -695,7 +691,7 @@ dir = 4 }, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "mN" = ( /obj/structure/table, /obj/effect/spawner/random/maintenance, @@ -710,7 +706,7 @@ }, /obj/structure/grille, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "mZ" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Core Access"; @@ -814,7 +810,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/telecomms) "ob" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/indestructible/riveted, /area/ruin/space/telecomms/computer) "oe" = ( @@ -829,7 +825,7 @@ icon_state = "1-8" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "ou" = ( /obj/structure/cable{ d1 = 2; @@ -874,7 +870,7 @@ }, /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "oG" = ( /obj/structure/cable{ icon_state = "0-4"; @@ -903,7 +899,7 @@ /turf/simulated/floor/plasteel/airless{ icon_state = "solarpanel" }, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "pa" = ( /obj/machinery/computer/borgupload, /turf/simulated/floor/bluegrid{ @@ -938,7 +934,7 @@ /obj/structure/grille/broken, /mob/living/simple_animal/hostile/malf_drone, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "pU" = ( /obj/structure/lattice, /obj/structure/grille, @@ -948,7 +944,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "pV" = ( /obj/item/paper/monitorkey, /turf/simulated/floor/plasteel, @@ -988,7 +984,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/computer) "qD" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/ruin/space/telecomms/powercontrol) "qE" = ( @@ -1038,7 +1034,7 @@ icon_state = "2-8" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "rd" = ( /obj/item/pen/gray, /turf/simulated/floor/plasteel, @@ -1050,7 +1046,7 @@ icon_state = "2-4" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "rL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1079,7 +1075,7 @@ icon_state = "1-8" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "sq" = ( /obj/structure/window/reinforced{ dir = 8 @@ -1143,7 +1139,7 @@ dir = 1 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "to" = ( /obj/machinery/porta_turret/ai_turret/disable{ check_synth = 1; @@ -1433,7 +1429,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/computer) "wX" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/indestructible/riveted, /area/ruin/space/telecomms) "wY" = ( @@ -1458,7 +1454,7 @@ pixel_x = 0 }, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "xj" = ( /obj/structure/window/reinforced{ dir = 8 @@ -1498,9 +1494,9 @@ /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/computer) "xL" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms Lounge"; - req_access_txt = "61" + name = "Telecoms Lounge" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor, @@ -1518,9 +1514,9 @@ /turf/simulated/floor/plating, /area/ruin/space/telecomms) "yl" = ( +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/maintenance_hatch{ - name = "Telecoms Storage"; - req_access_txt = "61" + name = "Telecoms Storage" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1533,7 +1529,7 @@ "yo" = ( /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "yq" = ( /obj/structure/cable{ d1 = 1; @@ -1576,9 +1572,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms East Wing"; - req_access_txt = "61" + name = "Telecoms East Wing" }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ @@ -1587,9 +1583,9 @@ }, /area/ruin/space/telecomms/foyer) "yG" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "yJ" = ( /obj/structure/cable{ d1 = 2; @@ -1635,7 +1631,7 @@ icon_state = "1-2" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "za" = ( /obj/structure/closet/crate, /obj/item/clothing/glasses/night, @@ -1645,7 +1641,7 @@ /obj/structure/lattice, /obj/effect/abstract/cheese_trap, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "zq" = ( /obj/structure/barricade/sandbags, /turf/simulated/floor/plasteel, @@ -1658,14 +1654,6 @@ }, /turf/simulated/wall/indestructible/riveted, /area/ruin/space/telecomms/chamber) -"zM" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'SERVER ROOM'."; - name = "SERVER ROOM"; - pixel_y = 0 - }, -/turf/simulated/wall/r_wall, -/area/ruin/space/telecomms/chamber) "zY" = ( /obj/structure/bed, /obj/item/bedsheet/green, @@ -1678,9 +1666,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/telecomms_trap_tank, /obj/effect/abstract/cheese_trap, /turf/simulated/floor/catwalk, @@ -1725,7 +1711,7 @@ /turf/simulated/floor/catwalk, /area/ruin/space/telecomms/powercontrol) "Aj" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/engine, /area/ruin/space/telecomms/computer) "Ay" = ( @@ -1738,7 +1724,7 @@ }, /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Az" = ( /obj/structure/lattice, /obj/structure/cable{ @@ -1749,7 +1735,7 @@ }, /obj/structure/grille, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "AJ" = ( /obj/structure/cable{ d1 = 2; @@ -1770,9 +1756,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/abstract/bot_trap, /turf/simulated/floor/catwalk, /area/ruin/space/telecomms) @@ -1832,7 +1816,7 @@ }, /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "BW" = ( /obj/machinery/atmospherics/unary/tank/air{ dir = 8 @@ -1885,7 +1869,7 @@ icon_state = "2-8" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "CG" = ( /obj/machinery/power/grounding_rod, /turf/simulated/floor/plasteel{ @@ -1919,7 +1903,7 @@ /area/ruin/space/telecomms/powercontrol) "CU" = ( /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Dd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -1965,7 +1949,7 @@ /obj/structure/lattice, /obj/structure/grille, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "DT" = ( /obj/structure/window/reinforced{ dir = 8 @@ -1990,14 +1974,14 @@ /area/ruin/space/telecomms/tele) "Ed" = ( /turf/space, -/area/space) +/area/space/no_teleport) "EF" = ( /obj/structure/window/reinforced{ dir = 8 }, /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "EK" = ( /obj/structure/window/reinforced{ dir = 4 @@ -2005,7 +1989,7 @@ /obj/structure/lattice, /obj/effect/abstract/cheese_trap, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "EM" = ( /turf/simulated/floor/bluegrid{ name = "Mainframe Base"; @@ -2017,7 +2001,7 @@ "EO" = ( /obj/structure/window/reinforced, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "EQ" = ( /obj/structure/window/reinforced, /obj/structure/lattice, @@ -2033,7 +2017,7 @@ }, /obj/machinery/power/tracker, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Ff" = ( /obj/machinery/light{ dir = 8 @@ -2096,13 +2080,13 @@ }, /obj/structure/grille, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Gd" = ( /obj/structure/window/reinforced{ dir = 4 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Gf" = ( /obj/machinery/light{ dir = 4 @@ -2121,7 +2105,7 @@ icon_state = "1-4" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Gt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -2152,7 +2136,7 @@ /turf/simulated/floor/plasteel/airless{ icon_state = "solarpanel" }, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "GH" = ( /obj/structure/lattice, /obj/structure/grille, @@ -2162,7 +2146,7 @@ icon_state = "1-8" }, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "GQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -2193,7 +2177,7 @@ dir = 8 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Hr" = ( /turf/simulated/wall/r_wall, /area/ruin/space/telecomms/computer) @@ -2214,7 +2198,7 @@ icon_state = "1-2" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Hu" = ( /obj/structure/window/reinforced, /turf/simulated/floor/catwalk, @@ -2237,7 +2221,7 @@ pixel_x = 0 }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "HK" = ( /obj/structure/cable{ d1 = 1; @@ -2296,25 +2280,23 @@ pixel_x = 0 }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "IE" = ( /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/tele) "IL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms West Wing"; - req_access_txt = "61" + name = "Telecoms West Wing" }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ @@ -2339,9 +2321,9 @@ icon_state = "1-2" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Jb" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/indestructible/riveted, /area/ruin/space/telecomms/foyer) "Jm" = ( @@ -2391,9 +2373,7 @@ /area/ruin/space/telecomms/computer) "JQ" = ( /obj/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/window/reinforced{ dir = 8 }, @@ -2436,7 +2416,7 @@ icon_state = "1-4" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Ky" = ( /obj/machinery/computer/nonfunctional, /obj/effect/spawner/random_spawners/cobweb_left_rare, @@ -2451,7 +2431,7 @@ dir = 1 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "KQ" = ( /obj/structure/cable{ d1 = 4; @@ -2482,9 +2462,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/window/reinforced{ dir = 8 }, @@ -2492,7 +2470,7 @@ /area/ruin/space/telecomms) "Lp" = ( /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Lq" = ( /obj/structure/cable{ d1 = 1; @@ -2538,7 +2516,7 @@ level = 1 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Ml" = ( /obj/structure/cable, /obj/machinery/power/terminal{ @@ -2558,7 +2536,7 @@ icon_state = "2-8" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "ME" = ( /obj/machinery/light/small{ dir = 1 @@ -2653,7 +2631,7 @@ icon_state = "2-4" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Od" = ( /obj/structure/window/reinforced{ dir = 4 @@ -2674,14 +2652,14 @@ icon_state = "1-2" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "On" = ( /obj/structure/lattice, /obj/structure/window/reinforced{ dir = 8 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "OS" = ( /obj/structure/cable{ d1 = 1; @@ -2741,9 +2719,9 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/tcoms, /obj/machinery/door/airlock/hatch{ - name = "Telecoms Satellite"; - req_access_txt = "61" + name = "Telecoms Satellite" }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ @@ -2757,7 +2735,7 @@ dir = 8 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Qa" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; @@ -2821,7 +2799,7 @@ }, /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "QP" = ( /obj/structure/lattice, /obj/structure/window/reinforced{ @@ -2829,7 +2807,7 @@ }, /obj/effect/abstract/cheese_trap, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "QR" = ( /obj/structure/cable{ d1 = 2; @@ -2847,25 +2825,13 @@ temperature = 80 }, /area/ruin/space/telecomms/chamber) -"QY" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, -/turf/simulated/floor/catwalk, -/area/ruin/space/telecomms) "QZ" = ( /obj/machinery/power/solar, /obj/structure/cable, /turf/simulated/floor/plasteel/airless{ icon_state = "solarpanel" }, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Ra" = ( /obj/structure/window/reinforced{ dir = 4 @@ -2875,7 +2841,7 @@ dir = 6 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Rh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -2916,7 +2882,7 @@ }, /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "RB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, @@ -2988,7 +2954,7 @@ icon_state = "2-8" }, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "SA" = ( /turf/simulated/wall/r_wall, /area/ruin/space/telecomms/powercontrol) @@ -3004,16 +2970,13 @@ dir = 8 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Ta" = ( /obj/structure/chair/office/dark{ dir = 4 }, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/computer) -"To" = ( -/turf/simulated/wall/r_wall, -/area/ruin/space/telecomms/chamber) "Tw" = ( /obj/machinery/computer/telescience{ dir = 4 @@ -3045,7 +3008,7 @@ icon_state = "2-4" }, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "TT" = ( /obj/machinery/doppler_array, /turf/simulated/floor/plasteel{ @@ -3067,7 +3030,7 @@ "TY" = ( /obj/structure/lattice, /turf/space, -/area/space) +/area/space/no_teleport) "Uw" = ( /obj/structure/cable{ d1 = 4; @@ -3097,9 +3060,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = "0" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms/foyer) "UF" = ( @@ -3112,7 +3073,7 @@ }, /obj/structure/lattice, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Vb" = ( /obj/structure/sign/nosmoking_2{ pixel_x = 32; @@ -3136,7 +3097,7 @@ }, /obj/structure/grille, /turf/simulated/floor/catwalk/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Vm" = ( /obj/machinery/light/small, /obj/machinery/light_switch{ @@ -3149,13 +3110,13 @@ dir = 4 }, /turf/simulated/wall/r_wall, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Vp" = ( /obj/structure/window/reinforced{ dir = 4 }, /turf/space, -/area/space) +/area/space/no_teleport) "VB" = ( /obj/effect/decal/cleanable/blood/old, /turf/simulated/floor/plasteel, @@ -3180,7 +3141,7 @@ dir = 1 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "Wp" = ( /obj/machinery/teleport/station, /obj/effect/turf_decal/delivery, @@ -3247,7 +3208,7 @@ dir = 1 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "XB" = ( /obj/structure/environmental_storytelling_holopad/core_room, /turf/simulated/floor/bluegrid{ @@ -3259,7 +3220,7 @@ }, /area/ruin/space/telecomms/chamber) "XJ" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/ruin/space/telecomms/tele) "XP" = ( @@ -3288,11 +3249,11 @@ icon_state = "2-4" }, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "YC" = ( /obj/structure/grille, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "YF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/abstract/bot_trap, @@ -3316,14 +3277,14 @@ dir = 8 }, /turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "YQ" = ( /obj/structure/lattice, /obj/structure/window/reinforced{ dir = 4 }, /turf/space, -/area/space/nearstation) +/area/space/nearstation/no_teleport) "YW" = ( /obj/structure/cable{ d2 = 2; @@ -6860,7 +6821,7 @@ UD oB BQ Zb -QY +nL ML ML AX @@ -7958,7 +7919,7 @@ ux Ad tF iy -To +Zu mZ FA EM @@ -8050,7 +8011,7 @@ ux ux ux ux -To +Zu ME Zj EM @@ -8142,9 +8103,9 @@ pE sv ia kl -To -To -zM +Zu +Zu +FA EM il dn @@ -8518,12 +8479,12 @@ nL vd Od xj -QY -QY -QY -QY -QY -QY +nL +nL +nL +nL +nL +nL vU Xf Ed diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm index 9bf3f4e78423..5265570fb7dd 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm @@ -260,7 +260,7 @@ "aL" = ( /obj/structure/table/reinforced, /obj/item/phone{ - desc = "An old Russian phone. The dial tone is still humming."; + desc = "An old Soviet phone. The dial tone is still humming."; name = "spin-dial phone" }, /turf/simulated/floor/plasteel{ @@ -272,7 +272,7 @@ /obj/structure/chair/comfy/red{ dir = 1 }, -/mob/living/simple_animal/hostile/russian/ranged/mosin, +/mob/living/simple_animal/hostile/soviet/ranged/mosin, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/bridge) "aN" = ( @@ -317,7 +317,7 @@ /area/ruin/space/derelict/bridge) "aS" = ( /obj/machinery/economy/vending/cigarette/free{ - slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Russian cigarette!","Cigarettes! Now with 100% less capitalism.") + slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Soviet cigarette!","Cigarettes! Now with 100% less capitalism.") }, /turf/simulated/floor/plasteel{ dir = 9; @@ -351,11 +351,11 @@ "aX" = ( /obj/structure/closet/cabinet, /obj/item/clothing/suit/space/syndicate/blue{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; + desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to the Union!"; name = "Cosmonaut Command Suit" }, /obj/item/clothing/head/helmet/space/syndicate/blue{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; + desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to the Union!"; name = "Cosmonaut Command Helmet" }, /turf/simulated/floor/wood, @@ -725,7 +725,7 @@ /area/ruin/space/derelict/arrival) "bU" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkred" @@ -880,7 +880,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "cp" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkred" @@ -953,11 +953,11 @@ "cz" = ( /obj/structure/rack, /obj/item/clothing/suit/space/syndicate/orange{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; + desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to the Union!"; name = "Cosmonaut Security Suit" }, /obj/item/clothing/head/helmet/space/syndicate/orange{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; + desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to the Union!"; name = "Cosmonaut Security Helmet" }, /turf/simulated/floor/plasteel{ @@ -1264,10 +1264,6 @@ icon_state = "blue" }, /area/ruin/space/derelict/crew_quarters) -"dl" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, -/area/ruin/space/derelict/crew_quarters) "dm" = ( /obj/machinery/computer/security, /obj/effect/decal/cleanable/dirt, @@ -1418,7 +1414,7 @@ /obj/item/pen, /obj/structure/window/reinforced, /obj/machinery/newscaster{ - desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Russian station."; + desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Union station."; layer = 3.3; name = "custom placement"; pixel_x = 27 @@ -1839,21 +1835,14 @@ /area/ruin/space/derelict/crew_quarters) "eH" = ( /obj/machinery/newscaster{ - desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Russian station."; + desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Union station."; layer = 3.3; name = "custom placement"; pixel_x = 30 }, -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) -"eI" = ( -/obj/structure/sign/securearea, -/obj/effect/decal/cleanable/blood/splatter, -/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, -/area/ruin/space/derelict/arrival) "eJ" = ( /obj/machinery/door/poddoor/impassable{ id_tag = "ruslocksec"; @@ -2010,9 +1999,7 @@ /turf/simulated/floor/plating, /area/ruin/space/derelict/hallway/primary) "fb" = ( -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "fc" = ( @@ -2247,14 +2234,12 @@ }, /area/ruin/space/derelict/arrival) "fB" = ( -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, /obj/structure/cable{ d1 = 2; d2 = 4; icon_state = "2-4" }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "fC" = ( @@ -2266,12 +2251,12 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "fD" = ( -/obj/item/trash/spentcasing, /obj/structure/cable{ d1 = 1; d2 = 8; icon_state = "1-8" }, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "fE" = ( @@ -2282,7 +2267,7 @@ desc = "This guy seemed to have died in terrible way! Half his remains are dust."; name = "Human remains" }, -/mob/living/simple_animal/hostile/russian/ranged/mosin, +/mob/living/simple_animal/hostile/soviet/ranged/mosin, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "fF" = ( @@ -2393,20 +2378,18 @@ name = "suspicious button" }, /obj/machinery/economy/vending/cigarette/free{ - slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Russian cigarette!","Cigarettes! Now with 100% less capitalism.") + slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Soviet cigarette!","Cigarettes! Now with 100% less capitalism.") }, /obj/effect/landmark/damageturf, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "fU" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "fV" = ( /obj/structure/chair/stool/bar, -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "fW" = ( @@ -2486,10 +2469,6 @@ icon_state = "purple" }, /area/ruin/space/derelict/hallway/primary) -"ge" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, -/area/ruin/space/derelict/hallway/primary) "gf" = ( /obj/structure/chair/wood{ dir = 4 @@ -2576,7 +2555,7 @@ }, /area/ruin/space/derelict/arrival) "gr" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "gs" = ( @@ -2702,7 +2681,7 @@ /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "gH" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel/grimy, /area/ruin/space/derelict/crew_quarters) "gI" = ( @@ -2714,10 +2693,6 @@ /obj/item/reagent_containers/drinks/bottle/kahlua, /turf/simulated/floor/plasteel/grimy, /area/ruin/space/derelict/crew_quarters) -"gJ" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, -/area/ruin/space/derelict/arrival) "gK" = ( /obj/structure/chair{ dir = 4 @@ -2732,9 +2707,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "gM" = ( -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/arrival) "gN" = ( @@ -3049,7 +3022,7 @@ /area/ruin/space/derelict/hallway/primary) "hC" = ( /obj/structure/chair/stool, -/mob/living/simple_animal/hostile/russian, +/mob/living/simple_animal/hostile/soviet, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/hallway/primary) "hD" = ( @@ -3123,7 +3096,7 @@ "hM" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/economy/vending/cigarette/free{ - slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Russian cigarette!","Cigarettes! Now with 100% less capitalism.") + slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Soviet cigarette!","Cigarettes! Now with 100% less capitalism.") }, /turf/simulated/floor/plasteel{ dir = 5; @@ -3229,7 +3202,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "ia" = ( @@ -3299,11 +3272,11 @@ "ik" = ( /obj/structure/rack, /obj/item/clothing/head/helmet/space/syndicate/black/engie{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; + desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to the Union!"; name = "Cosmonaut Engineering Helmet" }, /obj/item/clothing/suit/space/syndicate/black/engie{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; + desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to the Union!"; name = "Cosmonaut Engineering Suit" }, /turf/simulated/floor/plasteel{ @@ -3327,9 +3300,7 @@ }, /area/ruin/space/derelict/crew_quarters) "in" = ( -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "chapel" @@ -3374,9 +3345,7 @@ /area/ruin/space/derelict/arrival) "ix" = ( /obj/effect/decal/cleanable/blood/splatter, -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "iy" = ( @@ -3477,7 +3446,7 @@ }, /area/ruin/space/derelict/crew_quarters) "iL" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/crew_quarters) "iM" = ( @@ -3656,7 +3625,7 @@ /area/ruin/space/derelict/arrival) "jj" = ( /obj/item/paper/djstation{ - info = "Fuck. Fuckfuckfuck. I knew this mission was a mistake, that idiot Thomas got himself killed by some angry Russian security bot in the armoury, and the Lt. ran into the annex like a moron and got himself trapped. Now I'm just sitting on my god damn hands because this shuttle won't bloody move. Stupid USSP piece of shit docking arm must be jammed and I don't have the kit to go out and fix it.

Who the hell attacks a space station without EVA gear anyways? It's not like you can just bloody well waltz out into space with a hot coffee and shrug it off."; + info = "Fuck. Fuckfuckfuck. I knew this mission was a mistake, that idiot Thomas got himself killed by some angry commie security bot in the armoury, and the Lt. ran into the annex like a moron and got himself trapped. Now I'm just sitting on my god damn hands because this shuttle won't bloody move. Stupid USSP piece of shit docking arm must be jammed and I don't have the kit to go out and fix it.

Who the hell attacks a space station without EVA gear anyways? It's not like you can just bloody well waltz out into space with a hot coffee and shrug it off."; name = "unknown report" }, /turf/simulated/floor/mineral/plastitanium/red, @@ -3665,11 +3634,11 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/ruin/space/derelict/arrival) "jl" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; locked = 1; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /turf/simulated/floor/plating, /area/ruin/space/derelict/arrival) @@ -3686,9 +3655,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "jo" = ( -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "jp" = ( @@ -3702,9 +3669,7 @@ /area/ruin/space/derelict/arrival) "jq" = ( /obj/effect/landmark/burnturf, -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "jr" = ( @@ -3722,7 +3687,7 @@ }, /area/ruin/space/derelict/hallway/primary) "jt" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "rampbottom" @@ -3931,9 +3896,7 @@ }, /area/ruin/space/derelict/arrival) "jX" = ( -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel{ icon_state = "derelict14" }, @@ -4009,9 +3972,7 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/hallway/primary) "kf" = ( @@ -4312,7 +4273,7 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/russian, +/mob/living/simple_animal/hostile/soviet, /turf/simulated/floor/wood, /area/ruin/space/derelict/crew_quarters) "kF" = ( @@ -4386,7 +4347,7 @@ }, /area/ruin/space/derelict/arrival) "kN" = ( -/obj/item/trash/spentcasing, +/obj/item/trash/spentcasing/shotgun, /turf/simulated/floor/plasteel{ icon_state = "derelict3" }, @@ -4430,9 +4391,7 @@ /area/ruin/space/derelict/arrival) "kU" = ( /obj/machinery/light/small, -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "redblue" @@ -4557,9 +4516,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/crew_quarters) "ll" = ( -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, +/obj/item/trash/spentcasing/bullet, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/crew_quarters) "lm" = ( @@ -4650,7 +4607,7 @@ /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "lw" = ( -/obj/structure/statue/russian_mulebot, +/obj/structure/statue/soviet_mulebot, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "lx" = ( @@ -4907,9 +4864,7 @@ }, /area/ruin/space/derelict/arrival) "mf" = ( -/obj/item/trash/spentcasing{ - icon_state = "762-casing" - }, +/obj/item/trash/spentcasing/bullet/medium, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/arrival) "mg" = ( @@ -5016,7 +4971,7 @@ "mx" = ( /obj/structure/closet/crate/can, /obj/item/clothing/under/costume/mankini{ - desc = "No honest Russian would wear this abomination"; + desc = "No honest comrade would wear this abomination"; name = "lucky underwear" }, /turf/simulated/floor/plasteel{ @@ -5195,7 +5150,7 @@ /area/space/nearstation) "mY" = ( /obj/machinery/economy/vending/cigarette/free{ - slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Russian cigarette!","Cigarettes! Now with 100% less capitalism.") + slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Soviet cigarette!","Cigarettes! Now with 100% less capitalism.") }, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -5988,7 +5943,7 @@ desc = "An issue of The Griffon. Was Nanotrasen supplying this station at some point?" }, /obj/machinery/newscaster{ - desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Russian station."; + desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Union station."; layer = 3.3; name = "custom placement"; pixel_x = 27 @@ -6423,7 +6378,7 @@ /area/ruin/space/derelict/arrival) "ql" = ( /obj/machinery/economy/vending/cigarette/free{ - slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Russian cigarette!","Cigarettes! Now with 100% less capitalism.") + slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Soviet cigarette!","Cigarettes! Now with 100% less capitalism.") }, /turf/simulated/floor/plasteel{ icon_state = "redfull" @@ -6459,10 +6414,6 @@ /obj/effect/landmark/burnturf, /turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, /area/ruin/space/derelict/arrival) -"qq" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, -/area/ruin/space/derelict/arrival) "qr" = ( /obj/structure/cable{ d2 = 2; @@ -6523,7 +6474,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/newscaster{ - desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Russian station."; + desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Union station."; layer = 3.3; name = "custom placement"; pixel_x = 27 @@ -6967,7 +6918,7 @@ /obj/structure/statue/diamond/captain{ anchored = 1; desc = "A statue in honour of those who rose against the tyranny of the Trans-Solar Federation in 2443."; - icon_state = "russian"; + icon_state = "soviet"; layer = 4; name = "Cygni Commemorative Statue"; pixel_y = 16 @@ -7425,7 +7376,7 @@ /area/ruin/space/derelict/solar_control) "sv" = ( /obj/item/gps/ruin{ - gpstag = "Russian Distress Signal" + gpstag = "Soviet Distress Signal" }, /turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, /area/ruin/space/derelict/arrival) @@ -7437,6 +7388,10 @@ icon_state = "red" }, /area/ruin/space/derelict/arrival) +"xi" = ( +/obj/effect/spawner/random/fungus/frequent, +/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, +/area/ruin/space/derelict/arrival) "Ci" = ( /mob/living/simple_animal/hostile/pirate/ranged, /turf/simulated/floor/plasteel/airless{ @@ -7450,17 +7405,14 @@ }, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/crew_quarters) +"Mi" = ( +/obj/effect/spawner/random/fungus/frequent, +/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, +/area/ruin/space/derelict/crew_quarters) "Nv" = ( /obj/effect/spawner/airlock, /turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, /area/ruin/space/derelict/arrival) -"NK" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/template_noop, -/area/template_noop) "Oh" = ( /obj/effect/spawner/airlock/w_to_e, /turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, @@ -7482,9 +7434,13 @@ /obj/structure/chair/wood{ dir = 4 }, -/mob/living/simple_animal/hostile/russian, +/mob/living/simple_animal/hostile/soviet, /turf/simulated/floor/plasteel/dark, /area/ruin/space/derelict/crew_quarters) +"Ye" = ( +/obj/effect/spawner/random/fungus/frequent, +/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal, +/area/ruin/space/derelict/hallway/primary) "Yi" = ( /obj/structure/cable{ d1 = 1; @@ -8270,7 +8226,7 @@ ac ac aW bn -gJ +xi bn bn hI @@ -8633,7 +8589,7 @@ aW bn ed en -eI +cM fg fB fX @@ -9313,7 +9269,7 @@ mS oc oS qg -qq +bn aW ac ac @@ -10844,7 +10800,7 @@ et eQ fl fL -ge +Ye eg ac ac @@ -12719,7 +12675,7 @@ db db db qK -dl +Mi ac ac ac @@ -12949,7 +12905,7 @@ ac ac aV bm -dl +Mi dz dJ db @@ -12992,7 +12948,7 @@ pw db db db -dl +Mi aV ac ac @@ -13355,7 +13311,7 @@ oR db ph bm -dl +Mi bm aV ac @@ -14061,7 +14017,7 @@ ac ac ac ac -NK +ac ac ac ac diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp_tele.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp_tele.dmm index dd40e6e0cdad..ccac33c71720 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/ussp_tele.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp_tele.dmm @@ -179,7 +179,7 @@ /turf/template_noop, /area/template_noop) "R" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating/airless, /area/ruin/space/derelict/teleporter) "U" = ( diff --git a/_maps/map_files/generic/Lavaland.dmm b/_maps/map_files/generic/Lavaland.dmm index be524dc396c6..a3047e86d7a3 100644 --- a/_maps/map_files/generic/Lavaland.dmm +++ b/_maps/map_files/generic/Lavaland.dmm @@ -132,6 +132,15 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) +"ay" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/effect/mapping_helpers/no_lava, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "aD" = ( /obj/structure/chair{ dir = 8 @@ -556,8 +565,8 @@ /obj/machinery/access_button{ autolink_id = "labor_btn_ext"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = -21 + pixel_y = -21; + req_access = list(2) }, /obj/structure/cable{ d1 = 4; @@ -619,6 +628,10 @@ }, /turf/simulated/floor/plating/lavaland_air, /area/shuttle/siberia) +"ci" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "cj" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/portable/pump, @@ -727,11 +740,6 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"cv" = ( -/obj/structure/ore_box, -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "cw" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, /turf/simulated/wall, @@ -839,7 +847,7 @@ }, /area/mine/outpost/hallway/east) "cM" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/lavaland/surface/outdoors/outpost/catwalk) @@ -1155,10 +1163,10 @@ /obj/effect/turf_decal/delivery/hollow/right, /obj/machinery/door_control{ id = "mining_mechbay"; - req_access_txt = "54"; name = "Mech Bay Shutters"; pixel_x = 24; - pixel_y = 5 + pixel_y = 5; + req_access = list(54) }, /obj/machinery/light_switch{ pixel_x = 24; @@ -2031,7 +2039,7 @@ /area/mine/outpost/production) "fa" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/lavaland/surface/outdoors/outpost/catwalk) "fb" = ( @@ -2443,14 +2451,10 @@ "fQ" = ( /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/unexplored/danger) -"fS" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/unexplored) "fU" = ( +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, /obj/machinery/door/airlock/titanium{ - id_tag = "s_docking_airlock"; - req_access_txt = "48" + id_tag = "s_docking_airlock" }, /obj/docking_port/mobile/mining, /obj/structure/fans/tiny, @@ -2697,7 +2701,7 @@ icon_state = "1-2" }, /obj/effect/spawner/random_spawners/dirt_maybe, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/mine/outpost/maintenance/south) "gu" = ( @@ -2764,6 +2768,13 @@ }, /turf/simulated/floor/indestructible/boss, /area/lavaland/surface/outdoors) +"gD" = ( +/obj/structure/sign/nanotrasen{ + pixel_y = -32 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "gE" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -2905,7 +2916,7 @@ id = "gulagshuttleflasher"; name = "Flash Control"; pixel_y = -26; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) @@ -3082,8 +3093,8 @@ id = "Labor"; name = "Labor Camp Lockdown"; pixel_y = -22; - req_access_txt = "2"; - pixel_x = -7 + pixel_x = -7; + req_access = list(2) }, /obj/machinery/flasher_button{ id = "laborairlock"; @@ -3133,6 +3144,12 @@ /obj/item/clothing/shoes/orange, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"ig" = ( +/obj/structure/stone_tile/slab, +/obj/effect/mapping_helpers/no_lava, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "ih" = ( /obj/structure/cable{ d1 = 1; @@ -3492,10 +3509,6 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"ka" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/mineral/random/volcanic, -/area/lavaland/surface/outdoors/unexplored) "kb" = ( /obj/machinery/atmospherics/portable/canister/oxygen, /obj/effect/decal/cleanable/dirt, @@ -3552,10 +3565,6 @@ /obj/structure/lattice/catwalk/mining, /turf/simulated/floor/lava/mapping_lava, /area/lavaland/surface/outdoors/outpost/catwalk) -"kw" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/mineral/random/high_chance/volcanic, -/area/lavaland/surface/outdoors) "ky" = ( /obj/structure/stone_tile/cracked{ dir = 4 @@ -3654,11 +3663,6 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"lh" = ( -/obj/effect/mapping_helpers/no_lava, -/obj/structure/flora/ash/rock/style_random, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "lj" = ( /obj/structure/stone_tile/block{ dir = 1 @@ -3685,20 +3689,6 @@ /obj/structure/glowshroom, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/outpost/catwalk) -"lp" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/obj/effect/mapping_helpers/no_lava, -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "lq" = ( /obj/structure/stone_tile/block/cracked, /obj/structure/stone_tile/block/cracked{ @@ -3839,15 +3829,6 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"md" = ( -/obj/structure/stone_tile/block/cracked, -/obj/structure/stone_tile/block/cracked{ - dir = 1 - }, -/obj/effect/mapping_helpers/no_lava, -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "mf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -3889,7 +3870,7 @@ /obj/machinery/flasher_button{ id = "gulagshuttleflasher"; name = "Flash Control"; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) @@ -4485,8 +4466,8 @@ /obj/machinery/access_button{ autolink_id = "labor_btn_int"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = -21 + pixel_y = -21; + req_access = list(2) }, /obj/structure/cable{ d1 = 4; @@ -4613,6 +4594,13 @@ icon_state = "yellowsiding" }, /area/mine/laborcamp) +"oI" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "oW" = ( /obj/machinery/door/airlock/security/glass{ name = "Labor Camp Security" @@ -4755,6 +4743,11 @@ icon_state = "yellowsiding" }, /area/mine/laborcamp) +"pG" = ( +/obj/structure/ore_box, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "pH" = ( /obj/structure/stone_tile/block{ dir = 8 @@ -5059,11 +5052,6 @@ icon_state = "darkred" }, /area/mine/laborcamp) -"rW" = ( -/obj/structure/stone_tile/slab, -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "sg" = ( /obj/structure/stone_tile/block{ dir = 1 @@ -5614,6 +5602,11 @@ }, /turf/simulated/floor/catwalk, /area/mine/laborcamp/security) +"vK" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/wall/indestructible/boss, +/area/lavaland/surface/outdoors) "vM" = ( /obj/structure/lattice/catwalk/mining, /obj/structure/closet/crate/internals, @@ -5868,13 +5861,6 @@ /obj/structure/closet/crate, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"xy" = ( -/obj/structure/sign/nanotrasen{ - pixel_x = -32 - }, -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "xA" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -5925,6 +5911,10 @@ icon_state = "darkpurplecorners" }, /area/mine/outpost/hallway/west) +"xH" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/wall/boss, +/area/lavaland/surface/outdoors) "xJ" = ( /obj/structure/stone_tile/block{ dir = 4 @@ -5950,10 +5940,6 @@ icon_state = "yellowsiding" }, /area/mine/laborcamp) -"xN" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/mineral/random/volcanic, -/area/lavaland/surface/outdoors/unexplored/danger) "xP" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -5983,7 +5969,6 @@ /area/mine/outpost/maintenance/south) "ya" = ( /obj/effect/mapping_helpers/no_lava, -/obj/effect/mapping_helpers/no_lava, /turf/simulated/wall/indestructible/boss, /area/lavaland/surface/outdoors) "yb" = ( @@ -6014,8 +5999,8 @@ /obj/machinery/access_button{ autolink_id = "labor_btn_ext"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = 21 + pixel_y = 21; + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Labor"; @@ -6080,6 +6065,7 @@ }, /area/mine/outpost/engineering) "ys" = ( +/obj/effect/mapping_helpers/no_lava, /turf/simulated/wall/boss, /area/lavaland/surface/outdoors/unexplored/danger) "yw" = ( @@ -6091,8 +6077,8 @@ /obj/machinery/access_button{ autolink_id = "labor_btn_int"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = 21 + pixel_y = 21; + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/security/brig, @@ -6170,11 +6156,15 @@ /turf/simulated/floor/plating, /area/mine/outpost/maintenance/south) "yR" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/spawner/random_spawners/dirt_maybe, /obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plating, /area/mine/outpost/maintenance/south) +"yS" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/mineral/random/volcanic, +/area/lavaland/surface/outdoors/unexplored/danger) "yU" = ( /obj/machinery/flasher{ id = "gulagshuttleflasher"; @@ -6391,10 +6381,6 @@ dir = 5 }, /area/mine/laborcamp) -"Ad" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/wall/indestructible/boss, -/area/lavaland/surface/outdoors) "Ag" = ( /turf/simulated/floor/plasteel{ icon_state = "darkredyellowfull" @@ -6556,6 +6542,10 @@ icon_state = "darkfull" }, /area/mine/outpost/lockers) +"AS" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/mineral/random/volcanic, +/area/lavaland/surface/outdoors/unexplored) "AW" = ( /obj/structure/stone_tile, /obj/structure/stone_tile/block{ @@ -6564,10 +6554,6 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"AY" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) "Ba" = ( /obj/structure/cable{ d1 = 2; @@ -6689,10 +6675,6 @@ /obj/effect/spawner/random_spawners/wall_rusted_maybe, /turf/simulated/wall, /area/mine/outpost/hallway/east) -"BI" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/lava/mapping_lava, -/area/lavaland/surface/outdoors) "BL" = ( /obj/structure/stone_tile{ dir = 8 @@ -6727,10 +6709,6 @@ /obj/structure/flora/ash/cacti, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"BX" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/wall/boss, -/area/lavaland/surface/outdoors/unexplored/danger) "BY" = ( /obj/structure/lattice/catwalk/mining, /obj/structure/marker_beacon/dock_marker, @@ -7005,7 +6983,7 @@ /turf/simulated/wall, /area/mine/outpost/airlock) "DA" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/effect/spawner/random_spawners/dirt_maybe, /turf/simulated/floor/plating, /area/mine/outpost/maintenance/east) @@ -7458,6 +7436,20 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/catwalk, /area/mine/outpost/engineering) +"Gq" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/effect/mapping_helpers/no_lava, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "Gs" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, /obj/structure/sign/nanotrasen, @@ -7635,6 +7627,10 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/mine/laborcamp) +"HB" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/lava/mapping_lava, +/area/lavaland/surface/outdoors) "HC" = ( /turf/simulated/floor/plasteel{ icon_state = "yellowsiding"; @@ -7722,6 +7718,10 @@ icon_state = "darkfull" }, /area/mine/outpost/storage) +"Is" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors) "Iv" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, /turf/simulated/wall/r_wall, @@ -7914,6 +7914,10 @@ icon_state = "darkfull" }, /area/mine/outpost/storage) +"JA" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/mineral/random/volcanic, +/area/lavaland/surface/outdoors) "JB" = ( /obj/structure/closet/crate/secure/loot, /obj/effect/mapping_helpers/no_lava, @@ -8081,11 +8085,11 @@ /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "KD" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/mine/outpost/maintenance/south) "KH" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/mine/outpost/maintenance/south) "KI" = ( @@ -8200,6 +8204,10 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) +"Lb" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) "Lh" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -8232,10 +8240,6 @@ /obj/structure/railing/corner, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/outpost/catwalk) -"Ly" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "Lz" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ @@ -8515,6 +8519,11 @@ /obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/lava/mapping_lava, /area/lavaland/surface/outdoors) +"NC" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/structure/flora/ash/rock/style_random, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "NF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -8538,11 +8547,6 @@ icon_state = "tranquillite" }, /area/mine/outpost/cafeteria) -"NI" = ( -/obj/effect/mapping_helpers/no_lava, -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "NK" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/spawner/random_spawners/dirt_maybe, @@ -8818,6 +8822,9 @@ icon_state = "darkfull" }, /area/mine/outpost/lockers) +"Pw" = ( +/turf/simulated/wall/boss, +/area/lavaland/surface/outdoors/unexplored/danger) "PD" = ( /obj/structure/sign/poster/official/random{ pixel_x = 32 @@ -9023,7 +9030,7 @@ }, /area/mine/outpost/hallway/east) "QG" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/mine/outpost/custodial) "QO" = ( @@ -9085,10 +9092,6 @@ icon_state = "darkred" }, /area/mine/laborcamp/security) -"Rl" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/wall/boss, -/area/lavaland/surface/outdoors) "Rs" = ( /obj/structure/closet/crate/trashcart, /obj/item/trash/liquidfood, @@ -9106,13 +9109,6 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/outpost/catwalk) -"Rz" = ( -/obj/structure/sign/nanotrasen{ - pixel_y = -32 - }, -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "RJ" = ( /obj/structure/stone_tile/slab/burnt, /obj/structure/stone_tile/slab, @@ -9162,10 +9158,6 @@ name = "south bump"; pixel_y = -30 }, -/obj/structure/extinguisher_cabinet{ - name = "south bump"; - pixel_y = -30 - }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/mining) "Sd" = ( @@ -9382,6 +9374,10 @@ /obj/effect/baseturf_helper/lava_land, /turf/simulated/floor/plating, /area/mine/outpost/maintenance/east) +"Ts" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/mineral/random/high_chance/volcanic, +/area/lavaland/surface/outdoors) "Tt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -9422,6 +9418,13 @@ icon_state = "darkfull" }, /area/mine/outpost/engineering) +"TM" = ( +/obj/structure/sign/nanotrasen{ + pixel_x = -32 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "TN" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -9542,6 +9545,11 @@ }, /turf/simulated/floor/plating, /area/mine/laborcamp) +"UC" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/effect/mapping_helpers/no_lava, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "UI" = ( /obj/structure/lattice/catwalk/mining, /obj/structure/marker_beacon/dock_marker, @@ -9781,13 +9789,6 @@ }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) -"VU" = ( -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "VV" = ( /obj/machinery/firealarm/directional/west, /obj/item/kirbyplants, @@ -9897,10 +9898,6 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/outpost/catwalk) -"WH" = ( -/obj/effect/mapping_helpers/no_lava, -/turf/simulated/mineral/random/volcanic, -/area/lavaland/surface/outdoors) "WJ" = ( /obj/machinery/flasher{ id = "labor"; @@ -10398,7 +10395,6 @@ "Zj" = ( /obj/structure/stone_tile/slab, /obj/effect/mapping_helpers/no_lava, -/obj/effect/mapping_helpers/no_lava, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "Zm" = ( @@ -23294,14 +23290,14 @@ ai ai ai am -WH -Ly -BI -BI -BI -AY -AY -AY +JA +ci +HB +HB +HB +Is +Is +Is AE ec eQ @@ -23551,14 +23547,14 @@ am am am ai -Ly -BI -BI -BI -AY -BI -AY -AY +ci +HB +HB +HB +Is +HB +Is +Is AE ec AE @@ -23808,14 +23804,14 @@ am am am ai -Ly -BI -Ly -AY -BI -AY -AY -AY +ci +HB +ci +Is +HB +Is +Is +Is AE cx AE @@ -24065,13 +24061,13 @@ am am am ai -Ly -BI -BI +ci +HB +HB FC -AY -AY -AY +Is +Is +Is JB Qd Bh @@ -24322,14 +24318,14 @@ am am am ai -BI -BI -BI -BI -BI -BI +HB +HB +HB +HB +HB +HB FC -Ly +ci Aw Ej Aw @@ -24579,14 +24575,14 @@ am am am am -WH -BI -BI -BI -BI -BI -BI -BI +JA +HB +HB +HB +HB +HB +HB +HB Aw Ej Aw @@ -24836,14 +24832,14 @@ am am am am -WH -BI -BI -Ly -BI -BI -BI -BI +JA +HB +HB +ci +HB +HB +HB +HB Aw Ej ab @@ -25093,14 +25089,14 @@ am am am am -ka -Ly -BI -BI -Ly +AS +ci +HB +HB +ci FC -BI -BI +HB +HB Aw lB ab @@ -25350,14 +25346,14 @@ am am am am -ka -ka -BI -BI -AY -AY -lh -BI +AS +AS +HB +HB +Is +Is +NC +HB Aw Ej Aw @@ -25607,14 +25603,14 @@ am am am am -ka -ka -ka -BI -BI +AS +AS +AS +HB +HB uZ -BI -BI +HB +HB Aw FA Aw @@ -25864,14 +25860,14 @@ am am am am -ka -ka -WH -BI -BI -BI -BI -BI +AS +AS +JA +HB +HB +HB +HB +HB SD Zz LS @@ -26121,13 +26117,13 @@ am am am am -ka -WH -BI -BI -BI -BI -BI +AS +JA +HB +HB +HB +HB +HB cr cr bp @@ -26378,13 +26374,13 @@ am am am am -ka -WH -BI -BI -BI -BI -BI +AS +JA +HB +HB +HB +HB +HB cU dH HT @@ -26635,13 +26631,13 @@ am am am am -ka -ka -WH -BI -BI -BI -Ly +AS +AS +JA +HB +HB +HB +ci cU jP bE @@ -26892,13 +26888,13 @@ am am am am -ka -ka -ka -Ly -Ly -BI -Rz +AS +AS +AS +ci +ci +HB +gD cr bY bW @@ -27149,13 +27145,13 @@ am am am am -ka -ka -WH -Ly -BI -BI -AY +AS +AS +JA +ci +HB +HB +Is cU jP bV @@ -27406,13 +27402,13 @@ am am am am -ka -ka -WH -BI -BI -BI -AY +AS +AS +JA +HB +HB +HB +Is cU yY bQ @@ -27663,12 +27659,12 @@ am am am am -ka -ka -WH -BI -BI -BI +AS +AS +JA +HB +HB +HB Mv cr cr @@ -27920,12 +27916,12 @@ am am am am -ka -ka -WH -BI -BI -AY +AS +AS +JA +HB +HB +Is Mv cr ex @@ -28177,13 +28173,13 @@ am am am am -ka -ka -WH -Ly -AY -AY -AY +AS +AS +JA +ci +Is +Is +Is cr eS dY @@ -28196,25 +28192,25 @@ Jk ds dE kf -AY +Is Yz -Ly -AY -AY -AY +ci +Is +Is +Is KS -AY -AY -Ly +Is +Is +ci pl -Ly -Ly -BI -BI -BI -BI -BI -BI +ci +ci +HB +HB +HB +HB +HB +HB Aw Aw Aw @@ -28434,13 +28430,13 @@ am am am am -ka -WH -Ly -Ly -AY -AY -AY +AS +JA +ci +ci +Is +Is +Is cr ss dY @@ -28453,25 +28449,25 @@ cD fG vT kf -Ly -Ly -Ly -Ly -AY -AY -AY -Ly -Ly -Ly -BI -BI -BI -BI -BI -BI -BI -BI -BI +ci +ci +ci +ci +Is +Is +Is +ci +ci +ci +HB +HB +HB +HB +HB +HB +HB +HB +HB Aw Aw Aw @@ -28691,13 +28687,13 @@ am am am am -WH -Ly -Ly -Ly -AY -AY -AY +JA +ci +ci +ci +Is +Is +Is cr cU cU @@ -28710,25 +28706,25 @@ Dz Yv iN Dz -Ly -Ly -Ly -Ly -Ly -Ly -BI -Ly -BI -Ly -BI -BI -BI -BI -BI -BI -BI -BI -BI +ci +ci +ci +ci +ci +ci +HB +ci +HB +ci +HB +HB +HB +HB +HB +HB +HB +HB +HB Aw Aw Aw @@ -28947,45 +28943,45 @@ ai am am am -WH -Ly -Ly -Ly -Ly -Ly -AY -AY -xy -Ly -Ly -AY -AY +JA +ci +ci +ci +ci +ci +Is +Is +TM +ci +ci +Is +Is KS -AY -AY -AY -Ly -Ly +Is +Is +Is +ci +ci AD -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI -BI -BI -BI -BI -BI -BI -BI -BI -BI -BI -BI +ci +ci +ci +ci +ci +ci +HB +HB +HB +HB +HB +HB +HB +HB +HB +HB +HB +HB +HB Aw Aw Aw @@ -29204,45 +29200,45 @@ ab ai ai am -WH -Ly -Ly -Ly -Ly -Ly -Ly -AY -AY -Ly -Ly -Ly -AY -AY -AY -AY -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI -BI -BI -Ly -BI -BI -BI -BI -BI -BI -BI +JA +ci +ci +ci +ci +ci +ci +Is +Is +ci +ci +ci +Is +Is +Is +Is +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB +HB +HB +ci +HB +HB +HB +HB +HB +HB +HB Aw Aw Aw @@ -29461,45 +29457,45 @@ ab ai ab ai -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI -Ly -BI -BI -BI -BI -BI -BI -BI -BI +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB +ci +HB +HB +HB +HB +HB +HB +HB +HB Aw Aw Aw @@ -29718,45 +29714,45 @@ ab ab ab ab -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI -BI -Ly -BI -BI -BI +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB +HB +ci +HB +HB +HB Aw Aw Aw @@ -29975,45 +29971,45 @@ ab ab ab ab -WH -Ly -Ly -Ly -Ly -Ly -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI -Ly -BI -BI -BI -BI +JA +ci +ci +ci +ci +ci +ci +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +JA +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +HB +HB +ci +HB +HB +HB +HB Aw Aw Aw @@ -30232,45 +30228,45 @@ ab ab ab ab -WH -WH -Ly -Ly -Ly -Ly -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -WH -WH -WH -WH -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -BI -BI -BI -BI +JA +JA +ci +ci +ci +ci +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +JA +JA +JA +JA +JA +JA +JA +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +JA +HB +HB +HB +HB Aw Aw Aw @@ -30489,45 +30485,45 @@ ab ab ab ab -Ly -WH -WH -Ly -Ly -Ly -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -WH -BI -BI -BI -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -Ly -WH -BI -BI -BI -BI +ci +JA +JA +ci +ci +ci +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +JA +JA +JA +HB +HB +HB +ci +ci +ci +ci +ci +ci +ci +JA +ci +JA +HB +HB +HB +HB Aw Aw Aw @@ -30746,45 +30742,45 @@ ab ab ab ab -Ly -Ly -Ly -NI -Ly -Ly -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI -BI -BI -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -ka -BI -Ly -Ly -BI +ci +ci +ci +UC +ci +ci +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB +HB +HB +ci +ci +ci +ci +ci +ci +ci +JA +JA +AS +HB +ci +ci +HB Aw Aw Aw @@ -31003,45 +30999,45 @@ ab ab ab ab -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI -BI -BI -BI -BI -BI -BI -BI -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -WH -Ly -BI -BI +ci +ci +ci +ci +ci +ci +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB +HB +HB +HB +HB +HB +HB +HB +ci +ci +ci +ci +ci +JA +AS +AS +AS +JA +ci +HB +HB Aw Aw Aw @@ -31260,45 +31256,45 @@ ab ab ab ab -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI -BI -BI -BI -BI -BI -BI -BI -BI -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -WH -BI -BI +ci +ci +ci +ci +ci +ci +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +HB +HB +HB +HB +HB +HB +HB +HB +HB +HB +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +JA +HB +HB Aw Aw Aw @@ -31517,45 +31513,45 @@ ai ai ab ab -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI -BI -BI -BI -BI -BI -Ly -WH -WH -Ly -Ly -WH -ka -ka -ka -WH -Ly -Ly +ci +ci +ci +ci +ci +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB +HB +HB +HB +HB +HB +ci +JA +JA +ci +ci +JA +AS +AS +AS +JA +ci +ci Aw Aw Aw @@ -31774,45 +31770,45 @@ am am ai ab -Ly -Ly -Ly -Ly -Ly -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -WH -Ly -BI -BI -BI -BI -Ly -Ly -Ly -WH -Ly -Ly -Ly -WH -ka -ka -ka -WH -BI +ci +ci +ci +ci +ci +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +JA +JA +JA +ci +HB +HB +HB +HB +ci +ci +ci +JA +ci +ci +ci +JA +AS +AS +AS +JA +HB Aw Aw Aw @@ -32031,45 +32027,45 @@ am am ai ab -Ly -Ly -Ly -Ly -Ly -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -WH -BI -BI -BI -Ly -WH -WH -WH -WH -Ly -Ly -Ly -WH -ka -ka -WH -BI -BI +ci +ci +ci +ci +ci +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +JA +HB +HB +HB +ci +JA +JA +JA +JA +ci +ci +ci +JA +AS +AS +JA +HB +HB Aw Aw Aw @@ -32288,45 +32284,45 @@ am ai ab ab -Ly -Ly -Ly -Ly -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -WH -BI -BI -Ly -WH -ka -ka -WH +ci +ci +ci +ci +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +AS +JA +HB +HB +ci +JA +AS +AS +JA cu -Ly -Ly -Ly -WH -ka -ka -WH -BI -BI +ci +ci +ci +JA +AS +AS +JA +HB +HB Aw Aw Aw @@ -32545,45 +32541,45 @@ am ai ab ab -Ly -Ly -Ly -Ly -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -WH -BI -WH -WH -ka -ka -ka -WH -cv -Ly -Ly -Ly -WH -ka -ka -ka -WH -BI +ci +ci +ci +ci +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +JA +HB +JA +JA +AS +AS +AS +JA +pG +ci +ci +ci +JA +AS +AS +AS +JA +HB Aw Aw Aw @@ -32802,45 +32798,45 @@ am am ai ab -Ly -Ly -Ly -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -Ly -Ly -Ly -WH -ka -WH -WH -WH -ka -ka -ka -ka -ka -WH -Ly -Ly -kw -ka -ka -ka -ka -WH -BI +ci +ci +ci +ci +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +ci +ci +ci +JA +AS +JA +JA +JA +AS +AS +AS +AS +AS +JA +ci +ci +Ts +AS +AS +AS +AS +JA +HB Aw Aw Aw @@ -33059,45 +33055,45 @@ am am am ai -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -ka -WH -WH -Ly -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -WH -ka -ka -ka -ka -WH -Ly -BI +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +JA +JA +AS +JA +JA +ci +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +JA +AS +AS +AS +AS +JA +ci +HB ab Aw Aw @@ -33316,45 +33312,45 @@ am am am am -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -Ly -Ly +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +ci +ci Aw Aw Aw @@ -33573,45 +33569,45 @@ am am am ai -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -Ly -BI +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +ci +HB Aw Aw Aw @@ -33830,45 +33826,45 @@ am am am am -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -BI +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +HB Aw Aw Aw @@ -34087,45 +34083,45 @@ am am am am -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -BI +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +HB Aw Aw Aw @@ -34344,45 +34340,45 @@ am am am am -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -BI +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +HB Aw Aw Aw @@ -34601,45 +34597,45 @@ am am am am -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -Ly +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +ci Aw Aw Aw @@ -34858,45 +34854,45 @@ am am am am -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -Ly +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +ci ab Aw Aw @@ -35115,45 +35111,45 @@ am am am am -WH -Ly -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -WH +JA +ci +ci +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +JA Aw ab Aw @@ -35372,45 +35368,45 @@ am am am ai -Ly -Ly -WH -WH -Ly -Ly -Ly -Ly -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -Ly +ci +ci +JA +JA +ci +ci +ci +ci +ci +JA +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +ci Aw Aw Aw @@ -35629,45 +35625,45 @@ am am am ai -Ly -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -Ly +ci +ci +JA +ci +ci +ci +ci +ci +ci +JA +JA +ci +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +ci ab Aw Aw @@ -35886,45 +35882,45 @@ am am am ai -Ly -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -WH -ka -WH -WH -WH -WH -Ly -Ly -WH -WH -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -WH +ci +ci +JA +ci +ci +ci +ci +ci +ci +JA +AS +JA +JA +JA +JA +ci +ci +JA +JA +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +JA Aw Aw Aw @@ -36143,45 +36139,45 @@ am am am ai -Ly -Ly -Ly -Ly -Ly -Ly -WH -Ly -Ly -WH -ka -ka -ka -ka -ka -WH -Ly -Ly -Ly -Ly -WH -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -ka -ka -ka -ka -ka -ka -WH +ci +ci +ci +ci +ci +ci +JA +ci +ci +JA +AS +AS +AS +AS +AS +JA +ci +ci +ci +ci +JA +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +AS +AS +AS +AS +AS +AS +JA Aw Aw Aw @@ -36249,17 +36245,17 @@ ak ZY ZY ZY -BX -BX -BX -BX -BX -BX -BX -BX -BX -BX -BX +ys +ys +ys +ys +ys +ys +ys +ys +ys +ys +ys ZY ZY ZY @@ -36400,45 +36396,45 @@ am am am am -WH -Ly -Ly -Ly -Ly -Ly -WH -WH -Ly -WH -ka -ka -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -ka -ka -WH -ka -ka -ka -WH -Ly -WH -WH -ka -ka -ka -ka -WH +JA +ci +ci +ci +ci +ci +JA +JA +ci +JA +AS +AS +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +JA +JA +AS +AS +JA +AS +AS +AS +JA +ci +JA +JA +AS +AS +AS +AS +JA Aw Aw Aw @@ -36504,21 +36500,21 @@ ZY ZY ZY ZY -BX -BX -BX -BI -BX -BX -BI -BI -BI -BX -BX -BI -BX -BX -BX +ys +ys +ys +HB +ys +ys +HB +HB +HB +ys +ys +HB +ys +ys +ys ZY ZY ZY @@ -36657,45 +36653,45 @@ am am am am -ka -WH -Ly -Ly -Ly -Ly -WH -ka -WH -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -Ly -WH -WH -Ly -WH -ka -WH -Ly -Ly -Ly -WH -Ly -WH -WH -WH -WH +AS +JA +ci +ci +ci +ci +JA +AS +JA +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +JA +ci +JA +JA +ci +JA +AS +JA +ci +ci +ci +JA +ci +JA +JA +JA +JA Aw Aw Aw @@ -36759,25 +36755,25 @@ ak ak ak ZY -BX -BX -BX -BI -BX -BI -BI -BI -BI -BI -BI -BI -BI -BI -BX -BI -BX -BX -BX +ys +ys +ys +HB +ys +HB +HB +HB +HB +HB +HB +HB +HB +HB +ys +HB +ys +ys +ys ZY ak ak @@ -36914,45 +36910,45 @@ am am am am -WH -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -WH -Ly -Ly -WH -Ly -Ly -Ly -Ly -WH -Ly -WH -Ly -WH -Ly +JA +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +JA +ci +ci +JA +ci +ci +ci +ci +JA +ci +JA +ci +JA +ci Aw Aw Aw @@ -37016,25 +37012,25 @@ ak ZY ZY ZY -BX -BX -BI +ys +ys +HB pT Ur -BX -BX -BI -BI -BI -BI -BI -BX -BX +ys +ys +HB +HB +HB +HB +HB +ys +ys qo il -BI -BX -BX +HB +ys +ys ZY ZY ZY @@ -37171,45 +37167,45 @@ am am am am -WH -Ly -Ly -Ly -Ly -Ly -WH -ka -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -WH -WH -Ly -Ly -Ly -Ly -Ly -WH -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -Ly -Ly -Ly +JA +ci +ci +ci +ci +ci +JA +AS +AS +AS +AS +JA +ci +ci +ci +ci +ci +JA +JA +ci +ci +ci +ci +ci +JA +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +JA +ci +ci +ci Aw Aw Aw @@ -37272,27 +37268,27 @@ ak ak ak ZY -BX -BX -BI +ys +ys +HB NA -BI +HB pP -BI -Ly +HB +ci qk -Ly -Ly -Ly -rW -Ly -BI +ci +ci +ci +Zj +ci +HB RK -BI +HB pn -BI -BX -BX +HB +ys +ys ZY ak ak @@ -37428,45 +37424,45 @@ am am am am -ka -WH -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -WH -ka -WH -WH -WH -Ly -Ly -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -Ly -Ly +AS +JA +ci +ci +ci +JA +AS +AS +AS +AS +AS +JA +ci +ci +ci +ci +ci +JA +AS +JA +JA +JA +ci +ci +ci +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +JA +ci +ci Aw Aw Aw @@ -37529,27 +37525,27 @@ ak ZY ZY ZY -BX -BI +ys +HB il -BI +HB NA rP -Ly -Ly +ci +ci ft -Ly -Ly -Ly +ci +ci +ci IZ -Ly -Ly +ci +ci Vq pn -BI +HB pT -BI -BX +HB +ys ZY ZY ZY @@ -37685,45 +37681,45 @@ am am am am -WH -Ly -Ly -Ly -WH -ka -ka -ka -ka -ka -ka -ka -WH -WH -Ly -Ly -WH -ka -ka -ka -ka -WH -Ly -Ly -Ly -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +JA +ci +ci +ci +JA +AS +AS +AS +AS +AS +AS +AS +JA +JA +ci +ci +JA +AS +AS +AS +AS +JA +ci +ci +ci +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -37785,29 +37781,29 @@ ak ak ak ZY -BX -BX -BX +ys +ys +ys xJ Pl -VU +oI nr -Ly -Ly +ci +ci Vq -Ly -Ly -Ly +ci +ci +ci rP -Ly -Ly +ci +ci nB sW Pl dr -BX -BX -BX +ys +ys +ys ZY ak ak @@ -37942,45 +37938,45 @@ am am am am -ka -WH -Ly -WH -fS -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -WH -ka -ka -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +JA +ci +JA +Lb +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +JA +AS +AS +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -38042,29 +38038,29 @@ ak ak ak ZY -BX -BI -BI -BX -BI -Ly -Ly +ys +HB +HB +ys +HB +ci +ci nr -Ly -Ly -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci +ci +ci nB -Ly -Ly -BI -BX -BI -BI -BX +ci +ci +HB +ys +HB +HB +ys ZY ak ak @@ -38199,45 +38195,45 @@ am am am am -ka -ka -WH -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +JA +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw ab Aw @@ -38299,29 +38295,29 @@ ak ak ak ZY -BX -Rl -BI -BX -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BX -BI -BX -BX +ys +xH +HB +ys +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ys +HB +ys +ys ZY ak ak @@ -38456,45 +38452,45 @@ am am am am -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -38556,29 +38552,29 @@ ak ak ak ZY -BX -Rl -Ly -Ly -rW +ys +xH +ci +ci +Zj GC Vq -Ly -Ly +ci +ci Xc -Ly -Ly -Ly +ci +ci +ci hF -Ly -Ly +ci +ci rP GC PF -Ly -Ly -BX -BX +ci +ci +ys +ys ZY ak ak @@ -38733,25 +38729,25 @@ am am am am -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw ab @@ -38813,29 +38809,29 @@ ak ak ak ZY -BX -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -VU +ys +ci +ci +ci +ci +ci +ci +ci +ci +oI IZ -Ly +ci ft -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BX +ci +ci +ci +ci +ci +ci +ci +ci +ci +ys ZY ak ak @@ -38990,25 +38986,25 @@ am am am am -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw Aw @@ -39070,13 +39066,13 @@ ak ak ak ZY -BX -Ly -Ly -Ly -Ly -Ly -Ly +ys +ci +ci +ci +ci +ci +ci Zs GC GC @@ -39086,13 +39082,13 @@ GC GC GC rb -Ly -Ly -Ly -Ly -Ly -Ly -BX +ci +ci +ci +ci +ci +ci +ys ZY ak ak @@ -39247,25 +39243,25 @@ am am am am -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -39327,29 +39323,29 @@ ak ak ak ZY -BX -Ly -Ly +ys +ci +ci GC GC zZ jC jC jC -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci jC jC jC zZ GC GC -Ly -Ly -BX +ci +ci +ys ZY ak ak @@ -39504,25 +39500,25 @@ am am am am -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw Aw @@ -39584,29 +39580,29 @@ ak ak ak ZY -BX +ys GO jC -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci GC Vq -Ly +ci Vq -Ly +ci rP GC -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci jC KB -BX +ys ZY ak ak @@ -39761,25 +39757,25 @@ am am am am -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw Aw @@ -39841,29 +39837,29 @@ ak ak ak ZY -BX -Ly -Ly -rW -Ly +ys +ci +ci +Zj +ci sW -Ly -Ly +ci +ci IZ -Ly +ci ft sW IZ -Ly +ci ft -Ly -Ly -VU -Ly -rW -Ly -Ly -BX +ci +ci +oI +ci +Zj +ci +ci +ys ZY ak ak @@ -40018,25 +40014,25 @@ am am am am -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw Aw @@ -40098,29 +40094,29 @@ ak ak ak ZY -BX -Ly +ys +ci rP -Ly -Ly -Ly +ci +ci +ci FL GC Ti -Ly +ci ft -VU +oI IZ -Ly +ci or GC Ci -Ly -Ly -Ly +ci +ci +ci Vq -Ly -BX +ci +ys ZY ak ak @@ -40275,25 +40271,25 @@ am am am am -ka -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw Aw @@ -40355,29 +40351,29 @@ ak ak ak ZY -BX -Ly -Ly -Ly -VU -Ly -Ly -Ly -Ly -Ly +ys +ci +ci +ci +oI +ci +ci +ci +ci +ci ft sW IZ -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci sW -Ly -Ly -Ly -BX +ci +ci +ci +ys ZY ak ak @@ -40532,25 +40528,25 @@ am am am am -ka -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw Aw @@ -40612,29 +40608,29 @@ ak ak ak ZY -BX +ys sW GC -Ly +ci ft -Ly +ci SS ft sW -Ly +ci ft -VU +oI IZ -Ly -VU +ci +oI IZ SS -Ly +ci IZ -Ly +ci GC -VU -BX +oI +ys ZY ak ak @@ -40789,25 +40785,25 @@ ak am am am -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw Aw @@ -40869,29 +40865,29 @@ ak ak ak ZY -BX -Ly -Ly +ys +ci +ci jC Vq FL -Ly -Ly +ci +ci IZ -Ly -Ly +ci +ci sW -Ly -Ly +ci +ci ft -Ly -Ly +ci +ci Ci rP jC -Ly -Ly -BX +ci +ci +ys ZY ak ak @@ -41046,25 +41042,25 @@ ak ak am am -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci ab Aw Aw @@ -41126,29 +41122,29 @@ ak ak ak ZY -BX -Ly -Ly -Ly +ys +ci +ci +ci MS -Ly +ci jC GC Vq -Ly -VU -Ly +ci +oI +ci sW -Ly +ci rP GC jC -Ly +ci AW -Ly -Ly -Ly -BX +ci +ci +ci +ys ZY ZY ak @@ -41303,25 +41299,25 @@ ak ak ak am -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw ab @@ -41383,29 +41379,29 @@ ak ak ZY ZY -BX -Ly -Ly +ys +ci +ci jC -Ly -Ly -Ly +ci +ci +ci ft -Ly +ci IQ -Ly +ci SS -Ly +ci td -Ly +ci IZ -Ly -Ly -Ly +ci +ci +ci jC -Ly -Ly -BX +ci +ci +ys ZY ZY ZY @@ -41560,25 +41556,25 @@ ak ak ak am -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -41640,29 +41636,29 @@ ak ak ZY ZY -BX -Ly -Ly -Ly -Ly -Ly -Ly +ys +ci +ci +ci +ci +ci +ci IZ -Ly -Ly +ci +ci IZ -Ly +ci ft -Ly -Ly +ci +ci ft -Ly -Ly -Ly -Ly -Ly -Ly -BX +ci +ci +ci +ci +ci +ci +ys ZY ZY ak @@ -41817,25 +41813,25 @@ ak ak ak am -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -41897,29 +41893,29 @@ ak ZY ZY ZY -BX -Ly +ys +ci sW -Ly +ci GC GC -Ly +ci Ci -VU +oI rP -Ly -Ly -Ly +ci +ci +ci Vq sW hF -Ly +ci GC GC -Ly -VU -Ly -BX +ci +oI +ci +ys ZY ZY ak @@ -42074,25 +42070,25 @@ ak ak ak am -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -42115,15 +42111,15 @@ aa aa aa aa -Ad +ya gG pP kg RK gr hH -Ly -Ly +ci +ci Aw ly Aw @@ -42139,44 +42135,44 @@ sW wr xE Gb -xN +yS Gb Vq -Ly +ci XE -Ly -Ly +ci +ci sW -Ly -Ly +ci +ci mN Gb QO +Pw +Pw ys -ys -BX GC GC jC -Ly +ci nB Vq rP -Ly -VU -Ly +ci +oI +ci SS -Ly +ci sW -Ly +ci Vq rP nr -Ly +ci jC GC GC -BX +ys ZY ZY ak @@ -42331,25 +42327,25 @@ ak ak ak am -ka -ka -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +AS +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -42379,8 +42375,8 @@ pH Ol ag le -Ad -Ad +ya +ya ls Aw Aw @@ -42392,48 +42388,48 @@ Aw Aw Aw lI -Ad -Ad +ya +ya wr -Ly -Ly -VU -Ly +ci +ci +oI +ci sW -Ly +ci Vq -Ly +ci XE -Ly -Ly -Ly +ci +ci +ci mO -Ly +ci rP -rW +Zj FF FF FF -Ly -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci +ci Fv Zs GC rb vo -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BX +ci +ci +ci +ci +ci +ci +ci +ci +ys ZY ZY ak @@ -42588,25 +42584,25 @@ ak ak ak am -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -42636,8 +42632,8 @@ gr gr gr gs -ya -lp +vK +Gq Eq Pa Eq @@ -42650,24 +42646,24 @@ XU KO KO Eq -Ad +ya hF -Ly -Ly -Ly -Ly +ci +ci +ci +ci XE -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci wr -Ly -Ly -Ly -Ly -rW +ci +ci +ci +ci +Zj FF FF FF @@ -42676,21 +42672,21 @@ Fv Zs vo rP -Ly +ci Zs Ti -Ly +ci or rb -Ly +ci Vq Xl rb vo rP -Ly +ci sW -BX +ys ZY ZY ZY @@ -42845,25 +42841,25 @@ ak ak ak am -ka -WH -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +JA +ci +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw Aw @@ -42893,8 +42889,8 @@ kj HE HE lg -Zj -md +ig +ay lu lq Yo @@ -42909,45 +42905,45 @@ mk mn PF mF -Ly +ci mG -Ly -VU -Ly +ci +oI +ci sW -Ly -Ly +ci +ci XE -Ly -Ly +ci +ci Vq wd rP -Ly -rW +ci +Zj FF FF FF -Ly +ci Zs PF Ti -Ly +ci SS ft -Ly +ci hB -Ly +ci IZ SS -Ly +ci or PF rb -Ly -Ly -rW -BX +ci +ci +Zj +ys ZY ZY ZY @@ -43102,25 +43098,25 @@ ak ak ak am -ka -ka -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +AS +AS +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci Aw Aw Aw @@ -43150,7 +43146,7 @@ ah gG gs gy -ya +vK lr hx hx @@ -43164,47 +43160,47 @@ pS bc Qr bc -Ad +ya IZ -Ly -Ly +ci +ci sW wd -Ly -Ly -Ly +ci +ci +ci mL Gb Gu -Ly -Ly +ci +ci rP -Ly -Ly -rW +ci +ci +Zj FF FF FF -VU +oI Xc Ti hF sW -Ly +ci or rb -Ly +ci Zs Ti -Ly -VU +ci +oI Ci or hF sW -Ly +ci rP -BX +ys ZY ZY ZY @@ -43359,25 +43355,25 @@ ak ak ak ak -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB ab ab Aw @@ -43407,8 +43403,8 @@ Pl hk gr hH -Ad -Ad +ya +ya lw Aw Aw @@ -43420,48 +43416,48 @@ Aw Aw lw Aw -Ad -Ad +ya +ya Vq -Ly -Ly -Ly +ci +ci +ci rP -Ly +ci mI -Ly -Ly +ci +ci Gb Gb -Ly -Ly -Ly -Ly +ci +ci +ci +ci rP -rW +Zj FF FF FF -Ly -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci +ci Xc or jC Ti hF -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BX +ci +ci +ci +ci +ci +ci +ci +ci +ys ZY ZY ak @@ -43616,25 +43612,25 @@ ak ak ak ak -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB Aw Aw Aw @@ -43657,15 +43653,15 @@ aa aa aa aa -Ad +ya gr pP kl RK gG lj -Ly -Ly +ci +ci Aw Aw mv @@ -43682,43 +43678,43 @@ Vq wr sW wr -Ly -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci +ci wd -xN +yS wr XE -Ly -Ly -ys +ci +ci +Pw +Pw ys -BX jC jC GC -Ly +ci EQ -VU +oI sW -Ly +ci Vq -Ly +ci SS -Ly +ci rP -Ly -VU +ci +oI sW kT -Ly +ci GC jC jC -BX +ys ZY ZY ak @@ -43873,25 +43869,25 @@ ak ak ak ak -ka -ka -ka -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI +AS +AS +AS +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB Aw Aw Aw @@ -43953,29 +43949,29 @@ ab mP ZY ZY -BX -Ly +ys +ci rP -Ly +ci jC jC -Ly +ci Fv Vq sW -Ly -Ly -Ly -VU +ci +ci +ci +oI rP vo -Ly +ci jC jC -Ly +ci Vq -Ly -BX +ci +ys ZY ZY ak @@ -44130,25 +44126,25 @@ ak ak ak ak -xN -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI +yS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB Aw Aw Aw @@ -44176,7 +44172,7 @@ gr gr gr jm -rW +Zj ab ab ab @@ -44210,29 +44206,29 @@ al ZY ZY ZY -BX -Ly -Ly -Ly -Ly -Ly -Ly +ys +ci +ci +ci +ci +ci +ci IZ -Ly -Ly +ci +ci IZ -Ly +ci ft -Ly -Ly +ci +ci ft -Ly -Ly -Ly -Ly -Ly -Ly -BX +ci +ci +ci +ci +ci +ci +ys ZY ZY ak @@ -44387,25 +44383,25 @@ ak ak ak ak -xN -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +yS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -44467,29 +44463,29 @@ ak ak ZY ZY -BX -Ly -Ly +ys +ci +ci GC -Ly -Ly -Ly +ci +ci +ci ft -Ly +ci MS -Ly +ci SS -Ly +ci AW -Ly +ci IZ -Ly -Ly -Ly +ci +ci +ci GC -Ly -Ly -BX +ci +ci +ys ZY ZY ZY @@ -44644,25 +44640,25 @@ ak ak ak ak -xN -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +yS +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB Aw Aw Aw @@ -44724,29 +44720,29 @@ ak ak ak ZY -BX -Ly -Ly -Ly +ys +ci +ci +ci IQ -Ly +ci GC jC -VU -Ly +oI +ci Vq -Ly +ci rP -Ly +ci sW jC GC -Ly +ci td -Ly -Ly -Ly -BX +ci +ci +ci +ys ZY ZY ak @@ -44901,25 +44897,25 @@ ak ak ak ak -ka -ka -ka -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI +AS +AS +AS +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB ab Aw Aw @@ -44981,29 +44977,29 @@ ak ak ak ZY -BX -Ly -Ly +ys +ci +ci GC -VU +oI yW -Ly -Ly +ci +ci IZ -Ly -Ly +ci +ci rP -Ly -Ly +ci +ci ft -Ly -Ly +ci +ci Xl sW GC -Ly -Ly -BX +ci +ci +ys ZY ak ak @@ -45158,25 +45154,25 @@ ak ak ak ak -ka -ka -WH -Ly -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI +AS +AS +JA +ci +ci +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB Aw Aw Aw @@ -45238,29 +45234,29 @@ ak ak ak ZY -BX +ys rP jC -Ly +ci ft -Ly +ci SS ft rP -Ly +ci ft -VU +oI IZ -Ly +ci Vq IZ SS -Ly +ci IZ -Ly +ci jC Vq -BX +ys ZY ak ak @@ -45415,25 +45411,25 @@ ak ak ak ak -ka -ka -WH -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI +AS +AS +JA +ci +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB Aw Aw Aw @@ -45495,29 +45491,29 @@ ak ak ak ZY -BX -Ly -Ly -Ly +ys +ci +ci +ci Vq -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci ft sW IZ -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci rP -Ly -Ly -Ly -BX +ci +ci +ci +ys ZY ak ak @@ -45672,25 +45668,25 @@ ak ak ak ak -ka -ka -ka -WH -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BI -BI +AS +AS +AS +JA +JA +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +HB +HB Aw Aw Aw @@ -45752,29 +45748,29 @@ ak ak ak ZY -BX -Ly +ys +ci sW -Ly -Ly -Ly +ci +ci +ci vo jC rb -Ly +ci ft -VU +oI IZ -Ly +ci Zs jC Xl -Ly -Ly -Ly -VU -Ly -BX +ci +ci +ci +oI +ci +ys ZY ak ak @@ -45929,25 +45925,25 @@ ak ak ak ak -xN -ka -ka -ka -ka -WH -Ly -WH -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -WH -BI -BI +yS +AS +AS +AS +AS +JA +ci +JA +ci +ci +ci +ci +ci +ci +ci +ci +JA +HB +HB Aw Aw Aw @@ -46009,29 +46005,29 @@ ak ak ak ZY -BX +ys rb -Ly -rW -Ly +ci +Zj +ci rP -Ly -Ly +ci +ci IZ -Ly +ci ft sW IZ -Ly +ci ft -Ly -Ly +ci +ci Vq -Ly -rW -Ly -Ly -BX +ci +Zj +ci +ci +ys ZY ak ak @@ -46186,25 +46182,25 @@ ak ak ak ak -xN -xN -ka -ka -ka -WH -Ly -WH -Ly -WH -Ly -Ly -Ly -Ly -Ly -WH -WH -BI -BI +yS +yS +AS +AS +AS +JA +ci +JA +ci +JA +ci +ci +ci +ci +ci +JA +JA +HB +HB Aw Aw Aw @@ -46266,29 +46262,29 @@ ak ak ak ZY -BX +ys uR GC -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci jC -VU -Ly -VU -Ly +oI +ci +oI +ci sW jC -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci GC Vm -BX +ys ZY ak ak @@ -46443,25 +46439,25 @@ ak ak ak ak -xN -xN -ka -ka -ka -ka -WH -WH -Ly -WH -WH -Ly -Ly -Ly -Ly -WH -WH -BI -BI +yS +yS +AS +AS +AS +AS +JA +JA +ci +JA +JA +ci +ci +ci +ci +JA +JA +HB +HB Aw Aw Aw @@ -46523,29 +46519,29 @@ ak ak ak ZY -BX -Ly -Ly +ys +ci +ci jC jC HE GC GC GC -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci GC GC GC HE jC jC -Ly -Ly -BX +ci +ci +ys ZY ak ak @@ -46700,25 +46696,25 @@ ak ak ak ak -xN -xN -xN -xN -ka -ka -ka -ka -WH -ka -WH -Ly -WH -Ly -Ly -Ly -WH -BI -BI +yS +yS +yS +yS +AS +AS +AS +AS +JA +AS +JA +ci +JA +ci +ci +ci +JA +HB +HB Aw Aw Aw @@ -46780,13 +46776,13 @@ ak ak ak ZY -BX -Ly -Ly -Ly -Ly -Ly -Ly +ys +ci +ci +ci +ci +ci +ci or jC jC @@ -46796,13 +46792,13 @@ jC jC jC Ti -Ly -Ly -Ly -Ly -Ly -Ly -BX +ci +ci +ci +ci +ci +ci +ys ZY ak ak @@ -46957,25 +46953,25 @@ ak ak ak ak -xN -xN -xN -xN -xN -ka -ka -ka -ka -ka -ka -WH -ka -WH -WH -Ly -Ly -BI -BI +yS +yS +yS +yS +yS +AS +AS +AS +AS +AS +AS +JA +AS +JA +JA +ci +ci +HB +HB Aw Aw Aw @@ -47037,29 +47033,29 @@ ak ak ak ZY -BX -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly +ys +ci +ci +ci +ci +ci +ci +ci +ci +ci IZ -Ly +ci ft -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BX +ci +ci +ci +ci +ci +ci +ci +ci +ci +ys ZY ak ak @@ -47214,25 +47210,25 @@ ak ak ak ak -xN -xN -xN -xN -xN -xN -xN -xN -ka -ka -ka -ka -ka -ka -ka -WH -WH -BI -BI +yS +yS +yS +yS +yS +yS +yS +yS +AS +AS +AS +AS +AS +AS +AS +JA +JA +HB +HB Aw Aw Aw @@ -47294,29 +47290,29 @@ ak ak ak ZY -BX -BX -Ly -Ly +ys +ys +ci +ci qk jC -VU -Ly -Ly +oI +ci +ci Fv -Ly -Ly -Ly +ci +ci +ci vo -Ly -Ly +ci +ci sW jC wA -Ly -Ly -BX -BX +ci +ci +ys +ys ZY ak ak @@ -47471,25 +47467,25 @@ ak ak ak ak -xN -xN -xN -xN -xN -xN -xN -xN -xN -xN -ka -ka -ka -ka -ka -ka -ka -BI -BI +yS +yS +yS +yS +yS +yS +yS +yS +yS +yS +AS +AS +AS +AS +AS +AS +AS +HB +HB Aw Aw Aw @@ -47551,29 +47547,29 @@ ak ak ak ZY -BX -BX -BI -BX -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -Ly -BX -BI -BX -BX +ys +ys +HB +ys +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ci +ys +HB +ys +ys ZY ak ak @@ -47728,25 +47724,25 @@ ak ak ak ak -xN -xN -xN -xN -xN -xN -xN -xN -xN -xN -xN -xN -xN -xN -ka -ka -ka -BI -BI +yS +yS +yS +yS +yS +yS +yS +yS +yS +yS +yS +yS +yS +yS +AS +AS +AS +HB +HB Aw Aw Aw @@ -47808,29 +47804,29 @@ ak ak ak ZY -BX -BI -BI -BX -BI -Ly -Ly +ys +HB +HB +ys +HB +ci +ci kT -Ly -Ly -Ly -Ly -Ly -Ly -Ly +ci +ci +ci +ci +ci +ci +ci nr -Ly -Ly -BI -BX -BI -BI -BX +ci +ci +HB +ys +HB +HB +ys ZY ak ak @@ -48065,29 +48061,29 @@ ak ak ak ZY -BX -BX -BX +ys +ys +ys ta pH Vq kT -Ly -Ly -VU -Ly -Ly -Ly +ci +ci +oI +ci +ci +ci sW -Ly -Ly +ci +ci nr rP pH Sd -BX -BX -BX +ys +ys +ys ZY ak ak @@ -48323,27 +48319,27 @@ ak ZY ZY ZY -BX -BI +ys +HB il -BI +HB BL sW -Ly -Ly +ci +ci ft -Ly -Ly -Ly +ci +ci +ci IZ -Ly -Ly -VU +ci +ci +oI NA -BI +HB zW -BI -BX +HB +ys ZY ZY ZY @@ -48580,27 +48576,27 @@ ak ak ak ZY -BX -BX -BI +ys +ys +HB BL -BI +HB pP -BI -Ly +HB +ci PF -Ly -Ly -Ly +ci +ci +ci qk -Ly -BI +ci +HB RK -BI +HB UU -BI -BX -BX +HB +ys +ys ZY ak ak @@ -48838,25 +48834,25 @@ ak ZY ZY ZY -BX -BX -BI +ys +ys +HB RJ jD -BX -BX -BI -BI -BI -BI -BI -BX -BX +ys +ys +HB +HB +HB +HB +HB +ys +ys sg hm -BI -BX -BX +HB +ys +ys ZY ZY ZY @@ -49095,25 +49091,25 @@ ak ak ak ZY -BX -BX -BX -BI -BX -BI -BI -BI -BI -BI -BI -BI -BI -BI -BX -BI -BX -BX -BX +ys +ys +ys +HB +ys +HB +HB +HB +HB +HB +HB +HB +HB +HB +ys +HB +ys +ys +ys ZY ak ak @@ -49354,21 +49350,21 @@ ak ZY ZY ZY -BX -BX -BX -BI -BX -BX -BI -BI -BI -BX -BX -BI -BX -BX -BX +ys +ys +ys +HB +ys +ys +HB +HB +HB +ys +ys +HB +ys +ys +ys ZY ZY ZY @@ -49613,17 +49609,17 @@ ak ZY ZY ZY -BX -BX -BX -BX -BX -BX -BX -BX -BX -BX -BX +ys +ys +ys +ys +ys +ys +ys +ys +ys +ys +ys ZY ZY ZY diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm index 724323e057ef..fb4d98bb742e 100644 --- a/_maps/map_files/generic/centcomm.dmm +++ b/_maps/map_files/generic/centcomm.dmm @@ -19,9 +19,9 @@ /turf/simulated/wall/indestructible/fakedoor, /area/ninja/holding) "ah" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "CentCom Security"; - req_access_txt = "101" + name = "CentCom Security" }, /turf/simulated/floor/plasteel/dark, /area/centcom/evac) @@ -434,7 +434,7 @@ /area/ninja/holding) "bO" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /turf/simulated/floor/plasteel/freezer, /area/ninja/holding) @@ -862,6 +862,9 @@ "ds" = ( /turf/simulated/wall/indestructible/syndicate, /area/centcom) +"dt" = ( +/turf/simulated/floor/plasteel/stairs/right, +/area/syndicate_mothership) "du" = ( /obj/structure/table, /obj/item/reagent_containers/drinks/shaker, @@ -906,12 +909,12 @@ "dD" = ( /obj/machinery/airlock_controller/air_cycler{ pixel_x = 25; - req_access_txt = "150"; vent_link_id = "syndishuttle_vent"; ext_door_link_id = "syndishuttle_door_ext"; int_door_link_id = "syndishuttle_door_int"; ext_button_link_id = "syndishuttle_btn_ext"; - int_button_link_id = "syndishuttle_btn_int" + int_button_link_id = "syndishuttle_btn_int"; + req_access = list(150) }, /obj/machinery/light{ dir = 4 @@ -1069,10 +1072,10 @@ }, /area/ninja/holding) "ei" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Workshop"; - req_access_txt = "101" + name = "Workshop" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -1934,10 +1937,10 @@ /turf/simulated/floor/plasteel, /area/tdome/arena) "hl" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -1945,7 +1948,7 @@ id_tag = "syndicate_sit_1"; name = "Side Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/docking_port/mobile{ dir = 8; @@ -1960,7 +1963,7 @@ id = "syndicate_sit_1"; name = "Blast Doors"; pixel_y = -23; - req_access_txt = "150" + req_access = list(150) }, /obj/docking_port/stationary{ dir = 8; @@ -1976,9 +1979,9 @@ "hm" = ( /obj/machinery/door_control/no_emag/no_cyborg{ pixel_y = 24; - req_access_txt = "114"; name = "Engineering Storage Shutters"; - id = "SpecopsEngineering" + id = "SpecopsEngineering"; + req_access = list(114) }, /turf/simulated/floor/plasteel{ dir = 5; @@ -1999,7 +2002,7 @@ /obj/machinery/door_control/no_emag{ id = "tdome1"; pixel_x = 24; - req_access_txt = "102" + req_access = list(102) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -2016,9 +2019,9 @@ /turf/simulated/floor/wood, /area/ghost_bar) "hq" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sit_away"; - req_access_txt = "150" + id_tag = "sit_away" }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2080,17 +2083,17 @@ /turf/simulated/floor/wood, /area/wizard_station) "hA" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "sst_away"; - req_access_txt = "150" + id_tag = "sst_away" }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) "hB" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -2098,7 +2101,7 @@ id_tag = "syndicate_elite"; name = "Side Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/docking_port/mobile{ dir = 4; @@ -2129,10 +2132,10 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_sit) "hE" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/security, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Holding Cell"; - req_access_txt = "104" + name = "Holding Cell" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -2142,7 +2145,7 @@ name = "Shuttle Blast Doors"; pixel_x = -26; pixel_y = -2; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2179,7 +2182,7 @@ name = "Shuttle Blast Doors"; pixel_x = 26; pixel_y = -2; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2221,7 +2224,7 @@ /obj/machinery/door_control/no_emag{ id = "tdome2"; pixel_x = -24; - req_access_txt = "102" + req_access = list(102) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -2246,16 +2249,16 @@ /turf/simulated/floor/plating/abductor, /area/abductor_ship) "hX" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door_control/no_emag{ id = "syndicate_elite"; name = "Blast Doors"; pixel_x = -25; - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/door/poddoor{ density = 0; @@ -2263,22 +2266,22 @@ id_tag = "syndicate_elite"; name = "Front Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/shuttle/syndicate_elite) "hY" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door_control/no_emag{ id = "syndicate_sit_1"; name = "Blast Doors"; pixel_x = -25; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /obj/machinery/door/poddoor{ @@ -2287,7 +2290,7 @@ id_tag = "syndicate_sit_1"; name = "Front Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plating, /area/shuttle/syndicate_sit) @@ -2307,9 +2310,9 @@ }, /area/tdome/tdomeobserve) "ic" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/centcom{ - name = "Administrative Office"; - req_access_txt = "109" + name = "Administrative Office" }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -2448,14 +2451,14 @@ name = "SIT Base Access"; pixel_x = -6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "sit_tele"; name = "SIT Teleporter Access"; pixel_x = 6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2482,28 +2485,28 @@ name = "SST Extra Weapons"; pixel_x = -6; pixel_y = -4; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "sst_ready"; name = "SST Base Access"; pixel_x = -6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "sst_tele"; name = "SST Teleporter Access"; pixel_x = 6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "sst_mechbay"; name = "SST Mech Bay"; pixel_x = 6; pixel_y = -4; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2667,11 +2670,11 @@ /obj/machinery/airlock_controller/access_controller{ name = "Syndicate Jail Access Controller"; pixel_y = 24; - req_access_txt = "150"; ext_door_link_id = "syndijail_door_ext"; int_door_link_id = "syndijail_door_int"; ext_button_link_id = "syndijail_btn_ext"; - int_button_link_id = "syndijail_btn_int" + int_button_link_id = "syndijail_btn_int"; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2714,7 +2717,7 @@ /obj/machinery/door_control/no_emag{ id = "commandcenter"; name = "Privacy Shutters"; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2803,14 +2806,14 @@ name = "Nuclear Base Access"; pixel_x = -6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /obj/machinery/door_control/no_emag{ id = "nukeop_ready"; name = "Nuclear Shuttle Access"; pixel_x = 6; pixel_y = 6; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -2926,7 +2929,7 @@ /area/syndicate_mothership) "kk" = ( /obj/structure/closet/secure_closet{ - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -3263,16 +3266,16 @@ name = "Bolt Cell Doors"; normaldoorcontrol = 1; pixel_x = 6; - req_access_txt = "150"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(150) }, /obj/machinery/door_control/no_emag{ id = "syndicate_jail"; name = "Bolt Jail Door"; normaldoorcontrol = 1; pixel_x = -5; - req_access_txt = "150"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership/jail) @@ -3459,7 +3462,7 @@ /obj/machinery/door_control/no_emag{ id = "syndieshutters"; name = "remote shutter control"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -3830,9 +3833,9 @@ /turf/simulated/floor/carpet/arcade, /area/ghost_bar) "mT" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/centcom{ - name = "Restroom"; - req_access_txt = "150" + name = "Restroom" }, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -3869,7 +3872,7 @@ "mX" = ( /obj/machinery/door/window{ name = "Cockpit"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -4153,7 +4156,7 @@ dir = 8; name = "Tactical Toilet"; opacity = 1; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel/freezer, /area/syndicate_mothership) @@ -4342,7 +4345,7 @@ /obj/machinery/door/airlock/centcom{ aiControlDisabled = 1; name = "Assault Pod"; - req_one_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plating, /area/shuttle/assault_pod) @@ -4535,9 +4538,9 @@ /turf/space/transit, /area/space/centcomm) "pg" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /obj/machinery/door/airlock/titanium/glass{ name = "trader shuttle airlock"; - req_access_txt = "160"; security_level = 6 }, /turf/simulated/floor/mineral/titanium/blue, @@ -4662,9 +4665,9 @@ /turf/simulated/floor/grass/jungle, /area/centcom/evac) "pK" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Shuttle Control Office"; - req_access_txt = "114" + name = "Shuttle Control Office" }, /turf/simulated/floor/plasteel/dark, /area/centcom/gamma) @@ -4692,14 +4695,14 @@ normaldoorcontrol = 1; pixel_x = 24; pixel_y = -8; - req_access_txt = "160" + req_access = list(160) }, /obj/machinery/door_control/no_emag{ id = "trader_privacy"; name = "Privacy Shutters Control"; pixel_x = 24; pixel_y = 8; - req_access_txt = "160" + req_access = list(160) }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/trade/sol) @@ -4729,7 +4732,7 @@ id = "adminshuttleblast"; name = "blast door control"; pixel_x = -30; - req_access_txt = "101" + req_access = list(101) }, /obj/machinery/light{ dir = 8 @@ -4846,10 +4849,10 @@ name = "Security Doors"; opacity = 0 }, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /obj/machinery/door/airlock/titanium/glass{ id_tag = "soltrader_north"; name = "trader shuttle airlock"; - req_access_txt = "160"; security_level = 6 }, /turf/simulated/floor/mineral/titanium/blue, @@ -4941,7 +4944,7 @@ name = "Mission Launch Control"; pixel_x = -26; pixel_y = -2; - req_access_txt = "151" + req_access = list(151) }, /obj/item/kirbyplants, /turf/simulated/floor/plasteel{ @@ -5059,9 +5062,8 @@ /turf/simulated/floor/wood, /area/syndicate_mothership) "rc" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "150" - }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate, +/obj/machinery/door/airlock/external, /turf/simulated/floor/plasteel{ icon_state = "bar" }, @@ -5192,14 +5194,14 @@ name = "CentCom Security Shutters"; pixel_x = 8; pixel_y = 36; - req_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC"; name = "Thunderdome Shutters"; pixel_x = 8; pixel_y = 24; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ desc = "A remote control switch to connect the ready room to the rest of Centcom."; @@ -5207,7 +5209,7 @@ name = "Nanotrasen Asset Protection Shutters"; pixel_x = -8; pixel_y = 30; - req_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/wood, /area/centcom/control) @@ -5484,10 +5486,10 @@ /turf/simulated/floor/plasteel/dark, /area/tdome/tdomeobserve) "su" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Bridge"; - req_access_txt = "101" + name = "Bridge" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -5545,9 +5547,9 @@ /turf/simulated/floor/wood, /area/syndicate_mothership) "sE" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/multi_tile/glass{ - name = "Equipment Room"; - req_access_txt = "150" + name = "Equipment Room" }, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -5566,7 +5568,7 @@ /turf/simulated/floor/plating, /area/shuttle/syndicate) "sK" = ( -/turf/simulated/floor/plasteel/stairs/old, +/turf/simulated/floor/plasteel/stairs/left, /area/syndicate_mothership) "sL" = ( /obj/machinery/mech_bay_recharge_port/upgraded/unsimulated, @@ -5641,7 +5643,7 @@ /obj/machinery/door/airlock/centcom{ aiControlDisabled = 1; name = "Assault Pod"; - req_one_access_txt = "150" + req_access = list(150) }, /obj/docking_port/mobile/assault_pod, /turf/simulated/floor/plating, @@ -5668,8 +5670,8 @@ "th" = ( /obj/machinery/door/window/reinforced/normal{ color = "#d70000"; - req_access_txt = "104"; - dir = 8 + dir = 8; + req_access = list(104) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -5809,7 +5811,7 @@ id = "ASSAULT"; name = "Mech Storage"; pixel_y = -24; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel{ icon_state = "darkred" @@ -5905,7 +5907,7 @@ /obj/machinery/door/window{ dir = 8; name = "Tool Storage"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -6015,7 +6017,7 @@ /obj/machinery/door/window{ dir = 1; name = "Secure Storage"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -6265,7 +6267,7 @@ normaldoorcontrol = 1; pixel_x = 24; pixel_y = 8; - req_access_txt = "160" + req_access = list(160) }, /obj/machinery/flasher_button{ id = "soltraderflash"; @@ -6285,10 +6287,10 @@ name = "Security Doors"; opacity = 0 }, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /obj/machinery/door/airlock/titanium/glass{ id_tag = "soltrader_south"; name = "trader shuttle airlock"; - req_access_txt = "160"; security_level = 6 }, /turf/simulated/floor/mineral/titanium/blue, @@ -6360,6 +6362,12 @@ /obj/item/dice/d20, /turf/simulated/floor/wood, /area/trader_station/sol) +"vC" = ( +/obj/machinery/photocopier/faxmachine/longrange{ + department = "Central Command" + }, +/turf/simulated/floor/plasteel, +/area/admin) "vD" = ( /obj/structure/railing, /obj/effect/landmark/spawner/trader, @@ -6906,6 +6914,12 @@ icon_state = "white" }, /area/centcom/control) +"xx" = ( +/obj/machinery/photocopier/faxmachine/longrange/syndie{ + department = "Syndicate" + }, +/turf/simulated/floor/plasteel, +/area/admin) "xy" = ( /obj/structure/bookcase/random, /obj/machinery/light/small, @@ -7148,10 +7162,10 @@ /turf/simulated/floor/grass, /area/centcom/control) "yZ" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/external{ name = "Supply Shuttle"; - opacity = 0; - req_access_txt = "106" + opacity = 0 }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -7302,9 +7316,9 @@ "zK" = ( /obj/machinery/door_control/no_emag/no_cyborg{ pixel_x = 24; - req_access_txt = "114"; name = "Specops Teleporter Shutters"; - id = "CCTELE" + id = "CCTELE"; + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -7347,8 +7361,8 @@ "zW" = ( /obj/machinery/door/window{ name = "Uplink Management Control"; - req_access_txt = "151"; - dir = 4 + dir = 4; + req_access = list(151) }, /turf/simulated/floor/wood, /area/syndicate_mothership) @@ -7423,8 +7437,8 @@ "Am" = ( /obj/machinery/door/window/classic/normal{ name = "cell door"; - req_access_txt = "150"; - dir = 1 + dir = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -7603,9 +7617,9 @@ /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/shuttle/supply) "AU" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "CentCom BSA Control"; - req_access_txt = "114" + name = "CentCom BSA Control" }, /turf/simulated/floor/plasteel/dark, /area/centcom/gamma) @@ -7648,9 +7662,9 @@ /turf/simulated/floor/catwalk, /area/shuttle/supply) "Be" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/centcom{ - name = "CentCom Supply"; - req_access_txt = "106" + name = "CentCom Supply" }, /turf/simulated/floor/plasteel/dark, /area/centcom/suppy) @@ -7692,8 +7706,8 @@ base_state = "right"; icon_state = "right"; name = "Infirmary"; - req_access_txt = "150"; - dir = 4 + dir = 4; + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -7854,9 +7868,9 @@ /turf/simulated/floor/plasteel/dark, /area/tdome/tdomeobserve) "BV" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "syndicate_away"; - req_access_txt = "150" + id_tag = "syndicate_away" }, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -8001,7 +8015,7 @@ /turf/simulated/floor/plasteel/dark, /area/admin) "Cu" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/indestructible/syndicate, /area/admin) "Cv" = ( @@ -8044,7 +8058,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdome"; name = "Main Blast Doors Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -8119,7 +8133,7 @@ id = "CCcustoms2"; name = "CentCom Inner Customs Shutters"; pixel_x = 24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -8132,10 +8146,10 @@ /turf/simulated/floor/plasteel/dark, /area/centcom/control) "CM" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/external{ name = "Supply Shuttle"; - opacity = 0; - req_access_txt = "106" + opacity = 0 }, /turf/simulated/floor/plating, /area/centcom/suppy) @@ -8230,14 +8244,14 @@ name = "Privacy Shutters"; pixel_x = 6; pixel_y = 10; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ pixel_x = -6; pixel_y = -17; name = "Engineering Storage"; id = "SpecopsEngineering"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/carpet, /area/centcom/specops) @@ -8426,9 +8440,9 @@ /turf/simulated/floor/plasteel/freezer, /area/ghost_bar) "DV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Administrative Office"; - req_access_txt = "114" + name = "Administrative Office" }, /obj/machinery/door/poddoor/impassable{ id_tag = "specopsoffice"; @@ -8459,9 +8473,9 @@ }, /area/centcom/specops) "Ea" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/centcom{ - name = "Shuttle Control Office"; - req_access_txt = "109" + name = "Shuttle Control Office" }, /turf/simulated/floor/plasteel{ dir = 8; @@ -8507,7 +8521,7 @@ "Ej" = ( /obj/machinery/door/window/reinforced/normal{ name = "Cell Door"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_sit) @@ -8517,13 +8531,13 @@ /area/shuttle/administration) "El" = ( /obj/effect/mapping_helpers/airlock/unres, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ aiControlDisabled = 1; auto_close_time = 25; hackProof = 1; max_integrity = 3000; - name = "Escape Pod Dock"; - req_access_txt = "101" + name = "Escape Pod Dock" }, /turf/simulated/floor/wood, /area/centcom/evac) @@ -8774,8 +8788,8 @@ "Fp" = ( /obj/machinery/door/window/classic/reversed{ name = "Tool Storage"; - req_access_txt = "150"; - dir = 8 + dir = 8; + req_access = list(150) }, /obj/machinery/light/spot{ dir = 1 @@ -8803,8 +8817,8 @@ "Ft" = ( /obj/machinery/door/window{ name = "Infirmary"; - req_access_txt = "150"; - dir = 4 + dir = 4; + req_access = list(150) }, /obj/machinery/light/spot{ dir = 1 @@ -8994,7 +9008,7 @@ /obj/structure/table/wood, /obj/machinery/photocopier{ icon_state = "fax"; - name = "fax machine" + name = "fake fax machine" }, /obj/item/photo{ name = "butts" @@ -9202,7 +9216,7 @@ /obj/machinery/door/window{ dir = 1; name = "Cell A"; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/admin) @@ -9212,9 +9226,9 @@ "GO" = ( /obj/machinery/door_control/no_emag{ pixel_y = -24; - req_access_txt = "114"; name = "Engineering Storage Shutters"; - id = "SpecopsEngineering" + id = "SpecopsEngineering"; + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -9614,7 +9628,7 @@ id = "adminshuttleblast"; name = "blast door control"; pixel_x = -30; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -9859,10 +9873,10 @@ }, /area/centcom/specops) "Jb" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "109" + name = "Shuttle Hatch" }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -9954,7 +9968,7 @@ /area/centcom/suppy) "Jq" = ( /obj/structure/table/wood, -/obj/item/storage/box/beanbag, +/obj/item/storage/fancy/shell/beanbag, /obj/item/gun/projectile/revolver/doublebarrel, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -10095,7 +10109,7 @@ id = "CCGAMMA"; name = "Gamma Lockdown"; pixel_x = 32; - req_access_txt = "114" + req_access = list(114) }, /obj/structure/filingcabinet/filingcabinet, /turf/simulated/floor/plasteel{ @@ -10535,7 +10549,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdomehea"; name = "Heavy Supply Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -10573,7 +10587,7 @@ id = "ASSAULT"; name = "Mech Storage"; pixel_y = -24; - req_access_txt = "114" + req_access = list(114) }, /obj/effect/turf_decal/caution/stand_clear{ dir = 4 @@ -10816,7 +10830,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdomegen"; name = "General Supply Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -10839,9 +10853,9 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) "Mn" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Gamma Armory"; - req_access_txt = "114" + name = "Gamma Armory" }, /obj/machinery/door/poddoor/impassable{ id_tag = "CCGAMMA"; @@ -10945,9 +10959,9 @@ /area/centcom/specops) "Mz" = ( /obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles, /obj/machinery/door/airlock/centcom{ - name = "CentCom Supply"; - req_access_txt = "106" + name = "CentCom Supply" }, /turf/simulated/floor/plasteel/dark, /area/centcom/suppy) @@ -11039,28 +11053,28 @@ name = "Station Access"; pixel_x = -6; pixel_y = 6; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ id = "CCGAMMA"; name = "Gamma Lockdown"; pixel_x = -6; pixel_y = -3; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ id = "ASSAULT"; name = "Mech Storage"; pixel_x = 6; pixel_y = 6; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door_control/no_emag{ id = "CCDOCK2"; name = "Special Operations Secondary Dock"; pixel_x = 6; pixel_y = -3; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/carpet, /area/centcom/specops) @@ -11072,10 +11086,10 @@ }, /area/holodeck/source_desert) "MS" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_ext"; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/door/poddoor{ density = 0; @@ -11089,7 +11103,7 @@ name = "External Door Control"; pixel_x = -26; pixel_y = 2; - req_access_txt = "150" + req_access = list(150) }, /obj/docking_port/mobile{ dheight = 9; @@ -11656,8 +11670,8 @@ "OM" = ( /obj/machinery/door/window/classic/reversed{ name = "In"; - req_access_txt = "150"; - dir = 1 + dir = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -11692,12 +11706,12 @@ /obj/machinery/door/poddoor/preopen{ id_tag = "adminshuttleblast"; name = "Blast Doors"; - req_access_txt = "101" + req_access = list(101) }, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "General Access"; - req_access_txt = "101" + name = "General Access" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -11719,7 +11733,7 @@ id = "CCDOCK2"; name = "Special Operations Secondary Dock"; pixel_y = 24; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -12365,8 +12379,8 @@ "Rl" = ( /obj/machinery/door/window/classic/normal{ name = "Out"; - req_access_txt = "150"; - dir = 1 + dir = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) @@ -12467,7 +12481,7 @@ name = "Hanger Bay Shutters"; pixel_x = 24; pixel_y = null; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -12552,7 +12566,7 @@ id = "CCcustoms2"; name = "CentCom Inner Customs Shutters"; pixel_x = -24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -12587,7 +12601,7 @@ id = "CCcustoms1"; name = "CentCom Outer Customs Shutters"; pixel_x = 24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -12693,7 +12707,7 @@ name = "Specops Teleporter Shutters"; pixel_x = -24; pixel_y = null; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -12995,7 +13009,7 @@ id = "SpecopsFerry"; name = "Hanger Bay Shutters"; pixel_y = 24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 5; @@ -13090,9 +13104,9 @@ }, /area/centcom/control) "Uj" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/centcom{ - name = "CentCom Bridge"; - req_access_txt = "109" + name = "CentCom Bridge" }, /turf/simulated/floor/wood, /area/centcom/control) @@ -13151,10 +13165,10 @@ }, /area/shuttle/escape) "Us" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Medbay"; - req_access_txt = "101" + name = "Medbay" }, /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) @@ -13361,8 +13375,8 @@ base_state = "right"; icon_state = "right"; name = "Equipment Room"; - req_access_txt = "150"; - dir = 4 + dir = 4; + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -13592,7 +13606,7 @@ id = "CCcustoms1"; name = "CentCom Outer Customs Shutters"; pixel_x = -24; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -13696,10 +13710,10 @@ /turf/simulated/floor/plasteel, /area/admin) "WD" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "109" + name = "Shuttle Hatch" }, /obj/docking_port/mobile{ dir = 8; @@ -13991,7 +14005,7 @@ id = "SPECOPS"; name = "Nanotrasen Asset Protection Shutters"; pixel_y = -24; - req_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -14232,7 +14246,7 @@ id = "CCDOCK2"; name = "Special Operations Secondary Dock"; pixel_y = -24; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) @@ -14294,8 +14308,8 @@ "Ys" = ( /obj/machinery/door/window{ name = "Equipment Room"; - req_access_txt = "150"; - dir = 4 + dir = 4; + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -14383,7 +14397,7 @@ "YJ" = ( /obj/machinery/door/window/classic/normal{ name = "Cell B"; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/admin) @@ -14423,11 +14437,11 @@ /turf/simulated/floor/plasteel, /area/centcom/evac) "YS" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_int"; locked = 1; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 @@ -62431,7 +62445,7 @@ ab ab ab ab -BZ +sK hG UO iT @@ -65778,7 +65792,7 @@ BY BY BY BY -sK +dt XJ XJ tW @@ -69406,7 +69420,7 @@ vH lZ wR wk -lZ +vC lZ lZ lZ @@ -69663,7 +69677,7 @@ lZ lZ lZ wk -lZ +xx lZ lZ lZ diff --git a/_maps/map_files/shuttles/admin_admin.dmm b/_maps/map_files/shuttles/admin_admin.dmm index c7f30616b8f0..8dbc488e6131 100644 --- a/_maps/map_files/shuttles/admin_admin.dmm +++ b/_maps/map_files/shuttles/admin_admin.dmm @@ -6,19 +6,19 @@ /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/shuttle/administration) "ad" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "101" + name = "Shuttle Hatch" }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/shuttle/administration) "ae" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Hatch"; - req_access_txt = "101" + name = "Shuttle Hatch" }, /obj/docking_port/mobile{ dir = 2; @@ -60,7 +60,7 @@ id = "adminshuttleblast"; name = "blast door control"; pixel_x = -30; - req_access_txt = "101" + req_access = list(101) }, /obj/machinery/light{ dir = 8 @@ -98,12 +98,12 @@ /obj/machinery/door/poddoor/preopen{ id_tag = "adminshuttleblast"; name = "Blast Doors"; - req_access_txt = "101" + req_access = list(101) }, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "General Access"; - req_access_txt = "101" + name = "General Access" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -169,15 +169,15 @@ id = "adminshuttleblast"; name = "blast door control"; pixel_x = -30; - req_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) "aB" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Workshop"; - req_access_txt = "101" + name = "Workshop" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -339,10 +339,10 @@ /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bd" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Bridge"; - req_access_txt = "101" + name = "Bridge" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -357,10 +357,10 @@ /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bh" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Medbay"; - req_access_txt = "101" + name = "Medbay" }, /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) @@ -399,18 +399,18 @@ /turf/simulated/floor/mineral/titanium, /area/shuttle/administration) "bp" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/security, /obj/machinery/door/airlock/centcom{ id_tag = "adminshuttle"; - name = "Holding Cell"; - req_access_txt = "104" + name = "Holding Cell" }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) "bq" = ( /obj/machinery/door/window/reinforced/normal{ color = "#d70000"; - req_access_txt = "104"; - dir = 8 + dir = 8; + req_access = list(104) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) diff --git a/_maps/map_files/shuttles/admin_armory.dmm b/_maps/map_files/shuttles/admin_armory.dmm index c9304f924b24..7cab651db9a7 100644 --- a/_maps/map_files/shuttles/admin_armory.dmm +++ b/_maps/map_files/shuttles/admin_armory.dmm @@ -53,11 +53,11 @@ /area/shuttle/administration) "df" = ( /obj/structure/rack, -/obj/item/storage/box/buck{ +/obj/item/storage/fancy/shell/buck{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/window/reinforced, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -221,7 +221,7 @@ id = "adminshuttlebridge"; name = "Bridge Privacy Shutters"; pixel_x = 25; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) @@ -267,7 +267,7 @@ name = "External Window Shutter Control"; pixel_x = -5; pixel_y = 35; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/keycard_auth{ pixel_y = 24 @@ -277,7 +277,7 @@ name = "Airlock Blast Door Control"; pixel_x = 5; pixel_y = 35; - req_access_txt = "19" + req_access = list(19) }, /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -356,11 +356,11 @@ /area/shuttle/administration) "xF" = ( /obj/structure/rack, -/obj/item/storage/box/buck{ +/obj/item/storage/fancy/shell/buck{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 4 @@ -555,11 +555,11 @@ /area/shuttle/administration) "FT" = ( /obj/structure/rack, -/obj/item/storage/box/buck{ +/obj/item/storage/fancy/shell/buck{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 8 @@ -789,7 +789,7 @@ id = "adminarmoryshutters"; name = "Armory Internal Shutters"; pixel_x = -26; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) diff --git a/_maps/map_files/shuttles/admin_skipjack.dmm b/_maps/map_files/shuttles/admin_skipjack.dmm index 6a8e908d034f..aed953b90165 100644 --- a/_maps/map_files/shuttles/admin_skipjack.dmm +++ b/_maps/map_files/shuttles/admin_skipjack.dmm @@ -13,10 +13,10 @@ /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "ad" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxwest_door_ext"; - locked = 1; - req_access_txt = "152" + locked = 1 }, /obj/structure/fans/tiny, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, @@ -77,7 +77,7 @@ "av" = ( /obj/machinery/access_button{ autolink_id = "voxwest_btn_ext"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/wall/mineral/plastitanium, /area/shuttle/administration) @@ -97,7 +97,7 @@ int_button_link_id = "voxwest_btn_int"; int_door_link_id = "voxwest_door_int"; pixel_x = 24; - req_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) @@ -127,19 +127,19 @@ /turf/simulated/floor/plating/airless, /area/shuttle/administration) "aM" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxeast_door_ext"; - locked = 1; - req_access_txt = "152" + locked = 1 }, /obj/structure/fans/tiny, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "aN" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxwest_door_int"; - locked = 1; - req_access_txt = "152" + locked = 1 }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) @@ -162,9 +162,8 @@ /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "bb" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "152" - }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "bd" = ( @@ -232,7 +231,7 @@ "bO" = ( /obj/machinery/access_button{ autolink_id = "voxeast_btn_ext"; - req_access_txt = "152" + req_access = list(152) }, /turf/simulated/wall/mineral/plastitanium, /area/shuttle/administration) @@ -277,16 +276,16 @@ ext_door_link_id = "voxeast_door_ext"; int_door_link_id = "voxeast_door_int"; pixel_x = -24; - req_access_txt = "152"; ext_button_link_id = "voxeast_btn_ext"; - int_button_link_id = "voxeast_btn_int" + int_button_link_id = "voxeast_btn_int"; + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) "cg" = ( /obj/machinery/access_button{ autolink_id = "voxwest_btn_int"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/shuttle/administration) @@ -325,15 +324,15 @@ "cn" = ( /obj/machinery/access_button{ autolink_id = "voxeast_btn_int"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/shuttle/administration) "co" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxeast_door_int"; - locked = 1; - req_access_txt = "152" + locked = 1 }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) @@ -486,7 +485,7 @@ /obj/machinery/door_control{ id = "voxshutters"; name = "remote shutter control"; - req_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/administration) diff --git a/_maps/map_files/shuttles/emergency_bar.dmm b/_maps/map_files/shuttles/emergency_bar.dmm index b2feadfc8cda..44494f912be1 100644 --- a/_maps/map_files/shuttles/emergency_bar.dmm +++ b/_maps/map_files/shuttles/emergency_bar.dmm @@ -463,6 +463,9 @@ /obj/structure/shuttle/engine/propulsion, /turf/simulated/floor/plating/airless, /area/shuttle/escape) +"qr" = ( +/turf/simulated/wall/indestructible/titanium/nodiagonal, +/area/shuttle/escape) "Jz" = ( /obj/structure/chair/stool/bar{ dir = 4 @@ -521,7 +524,7 @@ ab bo bt bz -ab +qr ab "} (3,1,1) = {" @@ -555,7 +558,7 @@ aa aa ab ac -ab +qr aq ab aK @@ -579,7 +582,7 @@ bL (5,1,1) = {" aa ab -ab +qr ak ai ar @@ -604,7 +607,7 @@ bL "} (6,1,1) = {" ab -ab +qr ah ai al @@ -625,7 +628,7 @@ ab bo bw bA -ab +qr ab "} (7,1,1) = {" @@ -656,7 +659,7 @@ aa "} (8,1,1) = {" ab -ab +qr aj ai al @@ -683,7 +686,7 @@ ab (9,1,1) = {" aa ab -ab +qr am ao al @@ -711,7 +714,7 @@ aa aa ab ac -ab +qr ar ab aB @@ -781,7 +784,7 @@ ac bs by bD -ab +qr ab "} (13,1,1) = {" diff --git a/_maps/map_files/shuttles/emergency_clown.dmm b/_maps/map_files/shuttles/emergency_clown.dmm index 807f8e4933e2..2249a3098dd4 100644 --- a/_maps/map_files/shuttles/emergency_clown.dmm +++ b/_maps/map_files/shuttles/emergency_clown.dmm @@ -374,6 +374,9 @@ "Dr" = ( /turf/simulated/wall/indestructible/syndicate, /area/shuttle/escape) +"MA" = ( +/turf/simulated/wall/indestructible/titanium/nodiagonal, +/area/shuttle/escape) "Uo" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -430,7 +433,7 @@ ab aw bf bj -ab +MA ab "} (3,1,1) = {" @@ -464,7 +467,7 @@ aa aa ab ac -ab +MA as Dr aB @@ -488,11 +491,11 @@ bt (5,1,1) = {" aa ab -ab +MA ak ao at -Dr +tH tH aI tH @@ -513,7 +516,7 @@ bt "} (6,1,1) = {" ab -ab +MA ah ai am @@ -565,7 +568,7 @@ aa "} (8,1,1) = {" ab -ab +MA aj ai ap @@ -592,7 +595,7 @@ ab (9,1,1) = {" aa ab -ab +MA an aq av @@ -620,7 +623,7 @@ aa aa ab ac -ab +MA Uo ab aD @@ -690,7 +693,7 @@ ac be bi aw -ab +MA ab "} (13,1,1) = {" diff --git a/_maps/map_files/shuttles/emergency_dept.dmm b/_maps/map_files/shuttles/emergency_dept.dmm index d6f6a2b87054..f504ec930e7a 100644 --- a/_maps/map_files/shuttles/emergency_dept.dmm +++ b/_maps/map_files/shuttles/emergency_dept.dmm @@ -409,7 +409,8 @@ name = "Escape Shuttle Cargo"; normalspeed = 0 }, -/obj/effect/mapping_helpers/airlock/access/all/supply/mail_sorting, +/obj/effect/mapping_helpers/airlock/access/any/supply/general, +/obj/effect/mapping_helpers/airlock/access/any/supply/mining, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutralfull" diff --git a/_maps/map_files/shuttles/emergency_old.dmm b/_maps/map_files/shuttles/emergency_old.dmm index 87b13a61c377..20b71b4435fd 100644 --- a/_maps/map_files/shuttles/emergency_old.dmm +++ b/_maps/map_files/shuttles/emergency_old.dmm @@ -326,6 +326,9 @@ /obj/structure/chair/comfy/shuttle, /turf/simulated/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) +"nt" = ( +/turf/simulated/wall/indestructible/titanium/nodiagonal, +/area/shuttle/escape) "rj" = ( /obj/machinery/economy/vending/wallmed/directional/east, /obj/structure/bed/roller, @@ -395,7 +398,7 @@ ab DZ bb bf -ab +nt ab "} (3,1,1) = {" @@ -429,7 +432,7 @@ aa aa ab ac -ab +nt as ab aZ @@ -453,7 +456,7 @@ bo (5,1,1) = {" aa ab -ab +nt al ap at @@ -478,7 +481,7 @@ bo "} (6,1,1) = {" ab -ab +nt ah ai an @@ -530,7 +533,7 @@ aa "} (8,1,1) = {" ab -ab +nt aj ai an @@ -557,7 +560,7 @@ ab (9,1,1) = {" aa ab -ab +nt ao aq an @@ -585,7 +588,7 @@ aa aa ab ac -ab +nt at ab aA @@ -655,7 +658,7 @@ ac rj be aI -ab +nt ab "} (13,1,1) = {" diff --git a/_maps/map_files/shuttles/emergency_raven.dmm b/_maps/map_files/shuttles/emergency_raven.dmm index d71aa52b0e04..c92d211f102e 100644 --- a/_maps/map_files/shuttles/emergency_raven.dmm +++ b/_maps/map_files/shuttles/emergency_raven.dmm @@ -693,7 +693,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel/dark, /area/shuttle/escape) @@ -721,7 +721,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel/dark, /area/shuttle/escape) @@ -1303,7 +1303,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel/dark, /area/shuttle/escape) @@ -1458,7 +1458,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel/dark, /area/shuttle/escape) diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index 942ebda57b2a..f73acb7c5847 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -609,28 +609,27 @@ /turf/simulated/floor/plasteel, /area/station/security/permabrig) "adP" = ( -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, @@ -641,6 +640,7 @@ /obj/structure/window/reinforced{ dir = 4 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -813,7 +813,7 @@ id = "HoS"; pixel_x = 24; pixel_y = -8; - req_access_txt = "58" + req_access = list(58) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -947,14 +947,14 @@ name = "Prison Wing Lockdown"; pixel_x = -28; pixel_y = 7; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -28; pixel_y = -3; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "hosofficedoor"; @@ -962,7 +962,7 @@ normaldoorcontrol = 1; pixel_x = -28; pixel_y = 17; - req_access_txt = "58" + req_access = list(58) }, /turf/simulated/floor/carpet, /area/station/command/office/hos) @@ -1008,7 +1008,7 @@ name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -1016,7 +1016,7 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1484,7 +1484,7 @@ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; pixel_x = -24; - req_access_txt = "39" + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -1537,7 +1537,6 @@ /turf/space, /area/shuttle/gamma/station) "ahG" = ( -/obj/structure/rack, /obj/item/gun/projectile/shotgun/riot{ pixel_x = -3; pixel_y = -3 @@ -1547,13 +1546,7 @@ pixel_y = 3 }, /obj/item/gun/projectile/shotgun/riot, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -1676,7 +1669,6 @@ }, /area/station/security/brig) "aif" = ( -/obj/structure/rack, /obj/item/storage/box/teargas{ pixel_x = -3; pixel_y = -3 @@ -1696,6 +1688,7 @@ /obj/structure/window/reinforced{ dir = 4 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -1754,21 +1747,20 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/rack, -/obj/item/storage/box/tranquilizer{ +/obj/item/storage/fancy/shell/tranquilizer{ pixel_x = 3; pixel_y = -3 }, /obj/structure/window/reinforced{ dir = 8 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" }, /area/station/security/armory/secure) "aiq" = ( -/obj/structure/rack, /obj/structure/window/reinforced{ dir = 1 }, @@ -1781,9 +1773,7 @@ pixel_x = -3; pixel_y = -3 }, -/obj/structure/window/reinforced{ - dir = 4 - }, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -1928,7 +1918,6 @@ }, /area/station/security/brig) "aiN" = ( -/obj/structure/rack, /obj/item/gun/energy/gun{ pixel_x = 3; pixel_y = 3 @@ -1938,9 +1927,7 @@ pixel_x = -3; pixel_y = -3 }, -/obj/structure/window/reinforced{ - dir = 4 - }, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -2234,7 +2221,6 @@ }, /area/station/security/armory/secure) "ajr" = ( -/obj/structure/rack, /obj/structure/window/reinforced, /obj/item/gun/energy/disabler{ pixel_x = 3; @@ -2245,9 +2231,7 @@ pixel_x = -3; pixel_y = -3 }, -/obj/structure/window/reinforced{ - dir = 4 - }, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -2824,7 +2808,7 @@ name = "Secure Armory Shutter Control"; pixel_x = 7; pixel_y = -28; - req_access_txt = "3" + req_access = list(3) }, /obj/structure/cable{ d1 = 4; @@ -2912,7 +2896,7 @@ }, /area/station/security/main) "als" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/asmaint2) "alt" = ( @@ -4983,10 +4967,6 @@ icon_state = "dark" }, /area/station/security/evidence) -"arR" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/fore) "arS" = ( /obj/item/toy/pet_rock, /obj/machinery/door_control{ @@ -5034,11 +5014,11 @@ /turf/space, /area/station/engineering/solar/fore_port) "asc" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fore) "asf" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/fore) "asg" = ( @@ -5375,8 +5355,7 @@ "asO" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -5432,7 +5411,7 @@ normaldoorcontrol = 1; pixel_x = 5; pixel_y = -35; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/door_control{ desc = "A remote control switch for the brig foyer."; @@ -5441,7 +5420,7 @@ normaldoorcontrol = 1; pixel_x = 5; pixel_y = -25; - req_access_txt = "63" + req_access = list(63) }, /obj/structure/cable{ d1 = 1; @@ -5455,7 +5434,7 @@ normaldoorcontrol = 1; pixel_x = -5; pixel_y = -25; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -5744,8 +5723,7 @@ "atN" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -6079,7 +6057,7 @@ name = "processing tint control"; pixel_x = -24; pixel_y = -8; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel, /area/station/security/processing) @@ -7109,11 +7087,6 @@ icon_state = "red" }, /area/station/security/lobby) -"aya" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/wall_rusted_maybe, -/turf/simulated/wall, -/area/station/maintenance/fore) "ayb" = ( /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, @@ -7284,7 +7257,7 @@ id = "IAA"; pixel_x = -24; pixel_y = 6; - req_access_txt = "38" + req_access = list(38) }, /obj/machinery/economy/vending/lawdrobe, /turf/simulated/floor/plasteel{ @@ -7652,7 +7625,7 @@ id = "brig_courtroom"; name = "Brig Courtroom Shutter Control"; pixel_x = 25; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -7823,7 +7796,7 @@ id = "Interrogation"; name = "interrogation tint control"; pixel_x = -24; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -8033,15 +8006,15 @@ id = "Magistrate"; pixel_x = 24; pixel_y = 6; - req_access_txt = "74" + req_access = list(74) }, /obj/machinery/door_control{ id = "magistrateofficedoor"; name = "Office Door"; normaldoorcontrol = 1; pixel_x = 25; - req_access_txt = "74"; - pixel_y = -4 + pixel_y = -4; + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -8442,8 +8415,7 @@ }, /obj/machinery/alarm/directional/west, /obj/machinery/computer/prisoner{ - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -8676,7 +8648,7 @@ }, /area/station/maintenance/abandonedbar) "aCN" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/abandonedbar) "aCO" = ( @@ -8723,7 +8695,6 @@ /obj/item/stack/rods{ amount = 50 }, -/obj/structure/rack, /obj/item/stack/cable_coil{ pixel_x = -3; pixel_y = 3 @@ -8732,6 +8703,7 @@ amount = 5 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/shelf/engineering, /turf/simulated/floor/plasteel, /area/station/maintenance/electrical) "aCV" = ( @@ -8780,7 +8752,7 @@ id = "brig_courtroom"; name = "Brig Courtroom Shutter Control"; pixel_y = 25; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/light{ dir = 1 @@ -9184,7 +9156,7 @@ id = "Detective"; pixel_x = -8; pixel_y = 24; - req_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -9793,7 +9765,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/abandonedbar) "aGd" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/station/maintenance/abandonedbar) @@ -10107,7 +10079,7 @@ /turf/simulated/wall/r_wall, /area/station/maintenance/solar_maintenance/fore_port) "aHi" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/solar_maintenance/fore_port) "aHj" = ( @@ -10133,10 +10105,6 @@ /obj/effect/landmark/damageturf, /turf/simulated/floor/wood, /area/station/maintenance/fpmaint2) -"aHn" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/fpmaint2) "aHo" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -10305,7 +10273,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aHP" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fsmaint) "aHQ" = ( @@ -10431,7 +10399,7 @@ /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "aIq" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fore) "aIr" = ( @@ -10592,7 +10560,7 @@ /area/station/maintenance/fpmaint) "aIS" = ( /obj/structure/grille, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aIT" = ( @@ -11207,7 +11175,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aKW" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fpmaint2) "aKX" = ( @@ -11372,7 +11340,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "aLt" = ( @@ -11487,7 +11455,7 @@ /obj/machinery/button/windowtint{ id = "Courtroom"; pixel_x = -8; - req_one_access_txt = "74;3" + req_one_access = list(74,3) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -11836,7 +11804,7 @@ /area/station/maintenance/fsmaint) "aML" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aMM" = ( @@ -12091,7 +12059,7 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "aNw" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/hallway/secondary/entry/north) "aNx" = ( @@ -12311,11 +12279,11 @@ }, /area/station/maintenance/fpmaint) "aOr" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fpmaint) "aOs" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aOt" = ( @@ -12576,7 +12544,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fpmaint2) "aPc" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fpmaint2) "aPd" = ( @@ -12611,7 +12579,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aPj" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fpmaint) "aPk" = ( @@ -12655,7 +12623,7 @@ }, /area/station/maintenance/fpmaint) "aPv" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "aPw" = ( @@ -12888,7 +12856,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "aQe" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -13249,7 +13217,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aRm" = ( @@ -14048,8 +14016,8 @@ /obj/machinery/door_control{ id = "paramedic"; name = "Garage Door Control"; - req_access_txt = "66"; - pixel_x = -24 + pixel_x = -24; + req_access = list(66) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard_medi"; @@ -14509,7 +14477,7 @@ }, /area/station/service/chapel) "aUY" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/electrical) "aUZ" = ( @@ -14536,7 +14504,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/garden) "aVg" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/public/storage/tools) "aVh" = ( @@ -14731,7 +14699,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aVF" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -16306,10 +16274,6 @@ }, /area/station/ai_monitored/storage/eva) "baj" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, /obj/item/clothing/shoes/magboots{ pixel_x = 2; pixel_y = 2 @@ -16330,6 +16294,7 @@ pixel_x = 2; pixel_y = 2 }, +/obj/structure/shelf/command, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -19314,7 +19279,7 @@ }, /area/station/hallway/primary/central/north) "biL" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall/r_wall, /area/station/security/brig) "biM" = ( @@ -19493,7 +19458,7 @@ /area/station/service/bar) "bjc" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /turf/simulated/floor/wood, /area/station/service/bar) @@ -19537,7 +19502,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "bjl" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/public/dorms) "bjm" = ( @@ -19552,7 +19517,7 @@ "bjp" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -19598,7 +19563,7 @@ /turf/simulated/floor/grass, /area/station/service/hydroponics) "bjz" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/service/clown) "bjA" = ( @@ -20013,7 +19978,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "bkE" = ( @@ -20499,7 +20464,7 @@ /turf/simulated/wall, /area/station/public/storage/emergency/port) "blT" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/storage/emergency/port) "blV" = ( @@ -21482,7 +21447,7 @@ "boy" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -21853,9 +21818,9 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/lounge) "bpG" = ( -/obj/structure/table, /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/glass/bucket, +/obj/structure/shelf/service, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, @@ -21998,7 +21963,7 @@ }, /area/station/service/hydroponics) "bpW" = ( -/obj/machinery/smartfridge, +/obj/machinery/smartfridge/food/chef, /turf/simulated/floor/plating, /area/station/service/hydroponics) "bpX" = ( @@ -23239,7 +23204,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "btM" = ( @@ -23769,7 +23734,7 @@ /turf/simulated/floor/plasteel, /area/station/public/locker) "bvq" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/locker) "bvr" = ( @@ -24012,14 +23977,14 @@ name = "Kitchen Bar Shutters Control"; pixel_x = -6; pixel_y = -24; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control{ id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = 6; pixel_y = -24; - req_access_txt = "28" + req_access = list(28) }, /obj/structure/cable{ d1 = 1; @@ -24451,7 +24416,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/sorting) "bym" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "byn" = ( @@ -26020,9 +25985,9 @@ }, /area/station/science/robotics) "bEO" = ( -/obj/structure/rack, /obj/effect/spawner/random_spawners/cobweb_left_frequent, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/storage, /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) @@ -26103,16 +26068,6 @@ }, /turf/simulated/floor/plasteel, /area/station/supply/warehouse) -"bFp" = ( -/obj/machinery/door_control{ - id = "qm_warehouse"; - name = "Warehouse Door Control"; - pixel_x = -1; - pixel_y = -24; - req_access_txt = "31" - }, -/turf/simulated/floor/plasteel, -/area/station/supply/warehouse) "bFq" = ( /obj/structure/sign/poster/contraband/random{ pixel_y = -32 @@ -26511,7 +26466,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "bGH" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "bGJ" = ( @@ -26970,7 +26925,7 @@ name = "Robotics Lab Shutters Control"; pixel_x = 24; pixel_y = 32; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -27657,10 +27612,6 @@ }, /area/station/hallway/primary/central/west) "bKT" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, /obj/item/storage/belt/utility, /obj/item/clothing/head/welding{ pixel_x = -3; @@ -27670,6 +27621,7 @@ pixel_x = -3 }, /obj/item/clothing/glasses/welding, +/obj/structure/shelf/science, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -27767,7 +27719,7 @@ name = "Research and Development Lab Shutters Control"; pixel_x = -24; pixel_y = 32; - req_access_txt = "47" + req_access = list(47) }, /obj/effect/landmark/start/scientist, /turf/simulated/floor/plasteel{ @@ -27874,7 +27826,7 @@ /turf/simulated/floor/plating, /area/station/science/robotics) "bLJ" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/storage/tools/auxiliary) "bLK" = ( @@ -28032,7 +27984,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; - req_access_txt = "31" + req_access = list(31) }, /obj/machinery/power/apc/directional/east, /obj/structure/cable{ @@ -28790,7 +28742,7 @@ pixel_x = 6; pixel_y = -2 }, -/obj/structure/rack, +/obj/structure/shelf/medbay, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteyellow" @@ -32738,14 +32690,14 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = 25; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/button/windowtint{ id = "CMO"; pixel_x = 24; pixel_y = 8; - req_access_txt = "40"; - dir = 8 + dir = 8; + req_access = list(40) }, /obj/machinery/light_switch{ pixel_x = 24; @@ -32757,7 +32709,7 @@ id = "Biohazard_medi"; name = "Medical Quarantine"; pixel_x = 35; - req_access_txt = "40" + req_access = list(40) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -33240,7 +33192,7 @@ id = "xenobio4"; name = "Chamber 4 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -34029,7 +33981,7 @@ /turf/simulated/wall, /area/station/maintenance/asmaint) "cja" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "cjb" = ( @@ -34432,7 +34384,7 @@ }, /area/station/medical/virology) "ckM" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/supply/miningdock) "ckO" = ( @@ -34588,7 +34540,7 @@ name = "Biohazard Shutter Control"; pixel_x = -4; pixel_y = 6; - req_access_txt = "30" + req_access = list(30) }, /obj/item/folder/white{ pixel_x = 4 @@ -34604,7 +34556,7 @@ normaldoorcontrol = 1; pixel_x = -4; pixel_y = -4; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -35471,10 +35423,6 @@ icon_state = "brown" }, /area/station/supply/miningdock) -"coT" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/command/office/blueshield) "coU" = ( /obj/item/radio/intercom{ name = "south bump"; @@ -35753,7 +35701,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = 3; - req_one_access_txt = "57" + req_access = list(57) }, /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -35945,9 +35893,9 @@ /obj/machinery/button/windowtint{ id = "Surgery 1"; pixel_y = -24; - req_access_txt = "45"; dir = 1; - pixel_x = 8 + pixel_x = 8; + req_access = list(45) }, /obj/machinery/iv_drip, /turf/simulated/floor/plasteel{ @@ -36941,7 +36889,7 @@ }, /area/station/hallway/primary/aft/north) "cuc" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/aft) "cud" = ( @@ -37209,7 +37157,7 @@ /area/station/maintenance/asmaint2) "cuS" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/asmaint2) "cuZ" = ( @@ -37502,7 +37450,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "cwl" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cwo" = ( @@ -38073,7 +38021,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/incinerator) "cyp" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/port) "cyq" = ( @@ -38297,7 +38245,7 @@ /turf/space, /area/station/engineering/solar/aft_port) "cyP" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cyQ" = ( @@ -38384,7 +38332,7 @@ /area/station/medical/surgery/secondary) "cyZ" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/aft) "czb" = ( @@ -38407,7 +38355,7 @@ }, /area/station/science/hallway) "czf" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/aft) "czg" = ( @@ -38856,7 +38804,7 @@ }, /area/station/medical/storage) "cAu" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cAv" = ( @@ -38868,7 +38816,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "cAz" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cAA" = ( @@ -39042,7 +38990,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/incinerator) "cBe" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -39627,7 +39575,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos/distribution) "cDm" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/aft) "cDo" = ( @@ -39869,7 +39817,7 @@ id = "disvent"; name = "Incinerator Vent Control"; pixel_y = -24; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/meter, /obj/machinery/atmospherics/pipe/simple/visible{ @@ -40035,7 +39983,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "cEx" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/aft) "cEy" = ( @@ -40065,7 +40013,7 @@ }, /area/station/maintenance/aft) "cEE" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "cEH" = ( @@ -40710,10 +40658,6 @@ /obj/structure/table_frame, /turf/simulated/floor/plating, /area/station/maintenance/aft) -"cHe" = ( -/obj/effect/decal/cleanable/generic, -/turf/simulated/wall, -/area/station/maintenance/aft) "cHf" = ( /obj/machinery/space_heater, /turf/simulated/floor/plating, @@ -41389,7 +41333,7 @@ id = "xenobio6"; name = "Chamber 6 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -41618,7 +41562,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -41719,7 +41663,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos/control) "cKE" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/asmaint) "cKF" = ( @@ -41980,7 +41924,7 @@ /area/station/engineering/break_room) "cLN" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cLO" = ( @@ -42106,7 +42050,7 @@ name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 8; - req_access_txt = "24" + req_access = list(24) }, /obj/structure/cable{ d1 = 1; @@ -42421,7 +42365,7 @@ }, /area/station/science/xenobiology) "cNs" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/structure/cable{ d1 = 1; @@ -42608,10 +42552,6 @@ }, /area/station/engineering/smes) "cOf" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, /obj/item/tank/internals/emergency_oxygen/engi, /obj/item/clothing/suit/storage/hazardvest/staff, /obj/item/clothing/suit/storage/hazardvest/staff, @@ -42625,6 +42565,7 @@ name = "west bump"; pixel_x = -28 }, +/obj/structure/shelf/engineering, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "caution" @@ -42718,7 +42659,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "cOr" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/assembly_line) "cOu" = ( @@ -42741,10 +42682,6 @@ }, /turf/simulated/floor/plating, /area/station/engineering/equipmentstorage) -"cOz" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/apmaint2) "cOA" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel, @@ -42840,10 +42777,6 @@ /turf/simulated/wall/r_wall, /area/station/engineering/atmos/distribution) "cOY" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, /obj/item/clothing/suit/storage/hazardvest/staff, /obj/item/tank/internals/emergency_oxygen/engi, /obj/item/clothing/suit/storage/hazardvest/staff, @@ -42860,6 +42793,7 @@ d2 = 4; icon_state = "0-4" }, +/obj/structure/shelf/engineering, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "caution" @@ -43279,7 +43213,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -5; - req_access_txt = "56" + req_access = list(56) }, /obj/item/clipboard{ pixel_x = 5 @@ -43793,7 +43727,6 @@ }, /area/station/science/xenobiology) "cSh" = ( -/obj/structure/table, /obj/item/clothing/glasses/science{ pixel_y = 4 }, @@ -43801,6 +43734,7 @@ /obj/structure/sign/poster/official/safety_eye_protection{ pixel_y = 32 }, +/obj/structure/shelf/science, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -44889,7 +44823,7 @@ name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 4; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/atmospherics/pipe/simple/visible/purple, /turf/simulated/floor/plasteel, @@ -45431,7 +45365,7 @@ id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = -24; - req_access_txt = "56" + req_access = list(56) }, /obj/structure/cable{ d1 = 1; @@ -45821,7 +45755,7 @@ id = "xenobio7"; name = "Chamber 7 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -45872,7 +45806,7 @@ }, /area/station/science/rnd) "cZF" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/r_wall, /area/station/engineering/smes) "cZG" = ( @@ -46853,14 +46787,14 @@ name = "Auxiliary Vent"; pixel_x = 6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/door_control{ id = "turbinevent"; name = "Turbine Vent"; pixel_x = -6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -47637,7 +47571,7 @@ /area/station/engineering/ai_transit_tube) "dge" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) "dgg" = ( @@ -48211,7 +48145,7 @@ id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; pixel_y = 25; - req_access_txt = "17;75" + req_access = list(17,75) }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/turf_decal/stripes/line{ @@ -48620,7 +48554,7 @@ control_area = "\improper AI Satellite Antechamber"; name = "AI Antechamber Turret Control"; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/structure/cable{ d1 = 4; @@ -48732,7 +48666,7 @@ control_area = "\improper AI Satellite Atmospherics"; name = "AI Satellite Atmospherics Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -48853,7 +48787,7 @@ control_area = "\improper AI Satellite Service"; name = "AI Satellite Service Bay Turret Control"; pixel_x = 24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -49170,7 +49104,7 @@ name = "AI Chamber Hallway Turret Control"; pixel_x = 24; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -50569,7 +50503,7 @@ name = "AI Chamber Turret Control"; pixel_x = 5; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/flasher{ id = "AI"; @@ -51613,7 +51547,7 @@ }, /area/station/command/office/hop) "dKb" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -51635,7 +51569,7 @@ id = "justice_blast"; name = "Space Vent"; pixel_x = -32; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/flasher_button{ id = "Execution"; @@ -51954,7 +51888,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "dSu" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/asmaint) "dSD" = ( @@ -52424,10 +52358,6 @@ /obj/structure/flora/tree/jungle/small, /turf/simulated/floor/grass/jungle/no_creep, /area/station/command/bridge) -"ecZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall/r_wall, -/area/station/maintenance/asmaint) "edf" = ( /obj/machinery/computer/general_air_control/large_tank_control{ dir = 1; @@ -52487,7 +52417,7 @@ autolink_id = "atmossm_btn_ext"; name = "Atmospherics Access Button"; pixel_y = -24; - req_access_txt = "24" + req_access = list(24) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -52729,12 +52659,12 @@ "ehs" = ( /obj/machinery/airlock_controller/air_cycler{ pixel_x = -25; - req_access_txt = "10;13"; vent_link_id = "eng_vent"; ext_door_link_id = "eng_door_ext"; int_door_link_id = "eng_door_int"; ext_button_link_id = "eng_btn_ext"; - int_button_link_id = "eng_btn_int" + int_button_link_id = "eng_btn_int"; + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/hardsuitstorage) @@ -52918,7 +52848,7 @@ }, /area/station/engineering/gravitygenerator) "ejH" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -53591,7 +53521,7 @@ /turf/simulated/floor/plating, /area/station/engineering/engine/supermatter) "eDB" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/r_wall, /area/station/ai_monitored/storage/eva) "eDL" = ( @@ -54050,7 +53980,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "eOb" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -54458,7 +54388,7 @@ id = "xenobio2"; name = "Chamber 2 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -54478,8 +54408,8 @@ /obj/machinery/door_control{ id = "mechbay_outer"; name = "Outer Mech Bay Shutters Control"; - req_access_txt = "29"; - pixel_x = 24 + pixel_x = 24; + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -54538,8 +54468,8 @@ /obj/machinery/door_control{ id = "mechbay_inner"; name = "Inner Mech Bay Shutter Control"; - req_access_txt = "29"; - pixel_y = -24 + pixel_y = -24; + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -54621,7 +54551,7 @@ "fcM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "fcQ" = ( @@ -55130,11 +55060,11 @@ name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; - req_access_txt = "12"; ext_door_link_id = "turbine_door_ext"; int_door_link_id = "turbine_door_int"; ext_button_link_id = "turbine_btn_ext"; - int_button_link_id = "turbine_btn_int" + int_button_link_id = "turbine_btn_int"; + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "gasturbine"; @@ -55500,6 +55430,11 @@ icon_state = "redcorner" }, /area/station/security/prisonershuttle) +"fvC" = ( +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/fsmaint) "fvV" = ( /obj/structure/table, /obj/item/toy/crayon/spraycan, @@ -55720,7 +55655,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/exit) "fBj" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "fBk" = ( @@ -55934,7 +55869,7 @@ autolink_id = "engsm_btn_int"; name = "Supermatter Access Button"; pixel_y = -24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -56229,7 +56164,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/aft_starboard) "fNM" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -56738,7 +56673,6 @@ /area/station/public/dorms) "gdp" = ( /obj/machinery/alarm/directional/west, -/obj/structure/rack, /obj/item/clothing/head/helmet/space/plasmaman{ pixel_x = -3; pixel_y = 2 @@ -56757,6 +56691,7 @@ pixel_x = -3; pixel_y = 2 }, +/obj/structure/shelf/medbay, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, @@ -56932,7 +56867,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/assembly_line) "gfL" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/supply/warehouse) "ggr" = ( @@ -57162,7 +57097,7 @@ }, /area/station/hallway/primary/central/west) "gmu" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "gmz" = ( @@ -57685,7 +57620,7 @@ name = "Dispossal Vent Control"; pixel_x = -24; pixel_y = 8; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/driver_button{ id_tag = "trash"; @@ -57694,10 +57629,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/disposal) -"gzz" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/asmaint) "gzA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -58077,7 +58008,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "gJU" = ( @@ -58511,7 +58442,7 @@ autolink_id = "eng_btn_int"; pixel_x = -22; pixel_y = -20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) @@ -58758,8 +58689,8 @@ /obj/machinery/access_button{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = 21 + pixel_y = 21; + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Prison Gate"; @@ -58800,7 +58731,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "gYs" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint) "gYu" = ( @@ -59342,7 +59273,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/fore_port) "hoJ" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/disposal) "hpI" = ( @@ -59545,7 +59476,7 @@ /area/station/security/permabrig) "htV" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "hug" = ( @@ -59618,7 +59549,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -60360,7 +60291,7 @@ id = "xenobio1"; name = "Chamber 1 Containment Blast Door"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -61794,12 +61725,12 @@ "iDk" = ( /obj/machinery/airlock_controller/air_cycler{ pixel_y = -25; - req_access_txt = "13"; vent_link_id = "secmaint_vent"; ext_door_link_id = "secmaint_door_ext"; int_door_link_id = "secmaint_door_int"; ext_button_link_id = "secmaint_btn_ext"; - int_button_link_id = "secmaint_btn_int" + int_button_link_id = "secmaint_btn_int"; + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8; @@ -61832,26 +61763,26 @@ name = "East Bridge Blast Door Control"; pixel_x = 6; pixel_y = 2; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast west"; name = "West Bridge Blast Door Control"; pixel_x = -6; - req_one_access_txt = "19"; - pixel_y = 2 + pixel_y = 2; + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast south"; name = "South Bridge Blast Door Control"; pixel_y = -6; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast north"; name = "North Bridge Blast Door Control"; pixel_y = 10; - req_one_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -62662,7 +62593,7 @@ }, /area/station/security/prison/cell_block/A) "iZV" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) @@ -62888,7 +62819,7 @@ /area/station/security/permabrig) "jgA" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "jgQ" = ( @@ -63887,8 +63818,7 @@ /area/station/public/dorms) "jFf" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/item/circuitboard/chem_dispenser, /obj/item/storage/pill_bottle/random_drug_bottle, @@ -63922,10 +63852,6 @@ /turf/simulated/floor/plating, /area/station/security/permabrig) "jFJ" = ( -/obj/structure/rack{ - dir = 1 - }, -/obj/item/storage/box/lights/mixed, /obj/item/storage/box/lights/mixed, /obj/item/storage/box/lights/mixed, /obj/item/storage/box/lights/mixed, @@ -63937,6 +63863,7 @@ name = "west bump"; pixel_x = -28 }, +/obj/structure/shelf/service, /turf/simulated/floor/plasteel, /area/station/service/janitor) "jGd" = ( @@ -64159,7 +64086,7 @@ id = "teleshutter"; name = "Teleporter Shutters Access Control"; pixel_x = 24; - req_one_access_txt = "62" + req_access = list(62) }, /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plasteel, @@ -65091,7 +65018,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) "kju" = ( @@ -65346,7 +65273,7 @@ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; pixel_y = -24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) @@ -66295,8 +66222,7 @@ /area/station/engineering/control) "kNx" = ( /obj/machinery/computer/prisoner{ - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -66825,7 +66751,7 @@ id = "CE"; pixel_x = -8; pixel_y = 24; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel{ dir = 5; @@ -66934,7 +66860,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/south) "lcL" = ( -/obj/effect/spawner/random_barrier/wall_probably, +/obj/effect/spawner/random/barrier/wall_probably, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "ldf" = ( @@ -67352,7 +67278,7 @@ }, /area/station/engineering/control) "lnV" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/incinerator) "lom" = ( @@ -67647,7 +67573,7 @@ name = "Atmospherics Lockdown"; pixel_x = 10; pixel_y = 24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/door_control{ desc = "A remote control-switch for the engineering security doors."; @@ -67655,14 +67581,14 @@ name = "Engineering Lockdown"; pixel_x = -10; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/door_control{ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_y = 24; - req_access_txt = "11" + req_access = list(11) }, /obj/structure/table/reinforced, /obj/machinery/photocopier/faxmachine{ @@ -67835,7 +67761,7 @@ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; pixel_x = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/stripes, /obj/structure/disposalpipe/segment, @@ -68542,7 +68468,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/aft_port) "lQx" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/legal/courtroom) "lQz" = ( @@ -68660,9 +68586,9 @@ /obj/machinery/button/windowtint{ pixel_x = 24; id = "qm"; - req_access_txt = "41"; dir = 8; - pixel_y = 5 + pixel_y = 5; + req_access = list(41) }, /obj/machinery/light_switch{ dir = 8; @@ -69744,7 +69670,7 @@ /turf/simulated/floor/plating, /area/station/medical/chemistry) "mwL" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/supply/storage) "mxy" = ( @@ -69874,7 +69800,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "mBl" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/port) "mBv" = ( @@ -71040,7 +70966,7 @@ autolink_id = "eng_btn_ext"; pixel_x = -22; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/space, /area/space/nearstation) @@ -71170,6 +71096,11 @@ icon_state = "neutralfull" }, /area/station/hallway/secondary/exit) +"njn" = ( +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/apmaint) "nju" = ( /obj/structure/disposalpipe/segment/corner{ dir = 4 @@ -71441,7 +71372,7 @@ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -71613,7 +71544,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "nyC" = ( -/obj/structure/rack, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plating, /area/station/maintenance/aft) "nzc" = ( @@ -71854,7 +71785,7 @@ id = "xenobio3"; name = "Chamber 3 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -71908,7 +71839,7 @@ id = "xenobio5"; name = "Chamber 5 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -71962,6 +71893,16 @@ icon_state = "purple" }, /area/station/science/rnd) +"nGo" = ( +/obj/machinery/door_control{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -1; + pixel_y = -24; + req_access = list(31) + }, +/turf/simulated/floor/plasteel, +/area/station/supply/warehouse) "nGC" = ( /obj/structure/disposalpipe/segment/corner, /obj/structure/cable{ @@ -72915,11 +72856,11 @@ name = "Incinerator Access Console"; pixel_x = -26; pixel_y = 6; - req_access_txt = "12"; ext_door_link_id = "incinerator_door_ext"; int_door_link_id = "incinerator_door_int"; ext_button_link_id = "incinerator_btn_ext"; - int_button_link_id = "incinerator_btn_int" + int_button_link_id = "incinerator_btn_int"; + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -73231,7 +73172,7 @@ autolink_id = "secmaint_btn_ext"; pixel_x = -25; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /obj/structure/lattice/catwalk, /turf/space, @@ -73807,7 +73748,7 @@ "oxf" = ( /obj/effect/landmark/burnturf, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "oxp" = ( @@ -74616,7 +74557,7 @@ /area/station/maintenance/disposal) "oPp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "oPE" = ( @@ -75259,7 +75200,7 @@ /area/station/service/janitor) "pfF" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/structure/cable{ d1 = 1; @@ -75912,7 +75853,7 @@ /area/station/engineering/atmos) "pxz" = ( /obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/aft) "pxG" = ( @@ -76026,8 +75967,8 @@ /obj/machinery/access_button{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = -21 + pixel_y = -21; + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "red" @@ -76243,7 +76184,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "pEO" = ( @@ -76263,7 +76204,7 @@ autolink_id = "atmossm_btn_int"; name = "Atmospherics Access Button"; pixel_y = -24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/door/airlock/atmos/glass{ autoclose = 0; @@ -76504,7 +76445,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) "pNx" = ( @@ -76728,7 +76669,7 @@ control_area = "\improper AI Upload Chamber"; name = "AI Upload Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -77229,7 +77170,7 @@ }, /area/station/service/chapel/office) "qgj" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/construction) "qgC" = ( @@ -77370,8 +77311,8 @@ layer = 3.6; autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; - req_access_txt = "39"; - pixel_y = -24 + pixel_y = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -77985,7 +77926,7 @@ name = "interior access button"; pixel_x = 9; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 @@ -77993,7 +77934,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "qtx" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/legal/courtroom/gallery) "qup" = ( @@ -78455,7 +78396,7 @@ name = "Prison Wing Lockdown"; pixel_x = -32; pixel_y = 22; - req_access_txt = "2" + req_access = list(2) }, /obj/structure/cable{ d1 = 4; @@ -78884,8 +78825,8 @@ /obj/machinery/access_button{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = 21 + pixel_y = 21; + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -79687,7 +79628,7 @@ /turf/simulated/floor/carpet/black, /area/station/command/meeting_room) "rgs" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/apmaint) "rgv" = ( @@ -79920,7 +79861,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "rmn" = ( @@ -79987,7 +79928,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/gravitygenerator) "rng" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "rnx" = ( @@ -80519,7 +80460,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "rCg" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/asmaint) "rCH" = ( @@ -80711,7 +80652,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_y = -3; - req_one_access_txt = "20" + req_access = list(20) }, /turf/simulated/floor/carpet/royalblue, /area/station/command/office/captain) @@ -80761,7 +80702,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint2) "rID" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) @@ -80856,7 +80797,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "rMq" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint2) "rME" = ( @@ -80913,7 +80854,7 @@ }, /area/station/maintenance/asmaint2) "rNN" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) @@ -80994,7 +80935,7 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/engine, @@ -81845,8 +81786,7 @@ /area/station/supply/storage) "snE" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/effect/spawner/random/maintenance, /mob/living/simple_animal/hostile/scarybat, @@ -83102,7 +83042,7 @@ }, /area/station/medical/medbay) "sTX" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/medical/coldroom) "sWc" = ( @@ -83127,7 +83067,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -83700,7 +83640,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "tmS" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "tmX" = ( @@ -84348,7 +84288,7 @@ /turf/simulated/floor/engine, /area/station/engineering/control) "tEt" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -84679,7 +84619,7 @@ name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = 28; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/stripes, /obj/structure/disposalpipe/segment{ @@ -85549,7 +85489,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "ugC" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "ugH" = ( @@ -85770,7 +85710,7 @@ /area/station/medical/surgery/observation) "unu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -86066,7 +86006,7 @@ /area/station/maintenance/apmaint) "uwi" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/sign/xenobio{ pixel_x = -31 }, @@ -86237,7 +86177,6 @@ pixel_x = -4 }, /obj/item/tank/internals/emergency_oxygen/nitrogen, -/obj/structure/rack, /obj/item/tank/internals/emergency_oxygen/plasma{ pixel_x = 5 }, @@ -86246,6 +86185,7 @@ }, /obj/item/clothing/mask/breath/vox, /obj/item/clothing/mask/breath/vox, +/obj/structure/shelf/medbay, /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, @@ -86259,7 +86199,7 @@ /turf/simulated/floor/plating, /area/station/security/main) "uBz" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -86361,7 +86301,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "uEF" = ( @@ -86382,8 +86322,8 @@ /obj/machinery/access_button{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_access_txt = "2"; - pixel_y = -21 + pixel_y = -21; + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Prison Gate"; @@ -86476,7 +86416,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "uIf" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/asmaint2) "uIn" = ( @@ -86499,7 +86439,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -86541,7 +86481,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel, /area/station/maintenance/fpmaint) "uKy" = ( @@ -86638,7 +86578,7 @@ /area/station/maintenance/fpmaint) "uOG" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "uPg" = ( @@ -86700,14 +86640,14 @@ name = "Queue Privacy Shutters Control"; pixel_x = 6; pixel_y = 25; - req_one_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control{ id = "hop"; name = "Privacy Shutters Control"; pixel_x = -6; pixel_y = 25; - req_one_access_txt = "57" + req_access = list(57) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -86983,8 +86923,8 @@ /obj/machinery/door_control{ id = "janitor"; name = "Janitor Shutters Door Control"; - req_access_txt = "26"; - pixel_x = 24 + pixel_x = 24; + req_access = list(26) }, /turf/simulated/floor/plasteel, /area/station/service/janitor) @@ -87227,7 +87167,7 @@ /turf/simulated/floor/engine, /area/station/engineering/control) "vdx" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/disposal) "vdD" = ( @@ -87351,10 +87291,6 @@ /obj/structure/chair, /turf/simulated/floor/wood, /area/station/maintenance/asmaint) -"vhD" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/port) "vhH" = ( /obj/structure/cable{ d1 = 4; @@ -89188,7 +89124,7 @@ }, /area/station/security/execution) "wcG" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/apmaint2) "wcQ" = ( @@ -89301,7 +89237,7 @@ "wgA" = ( /obj/effect/landmark/burnturf, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) "wgO" = ( @@ -89497,7 +89433,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "wlJ" = ( @@ -90791,7 +90727,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "wTp" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/fpmaint2) "wTH" = ( @@ -90836,7 +90772,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 }, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/incinerator) "wWn" = ( @@ -90892,11 +90828,11 @@ /obj/machinery/airlock_controller/access_controller{ name = "Virology Lab Access Console"; pixel_y = 24; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; - int_button_link_id = "viro_btn_int" + int_button_link_id = "viro_btn_int"; + req_access = list(39) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -91749,7 +91685,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "xsP" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/r_wall, /area/station/engineering/gravitygenerator) "xsZ" = ( @@ -91945,7 +91881,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "xxa" = ( @@ -92633,7 +92569,7 @@ /area/station/engineering/control) "xOA" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "xOM" = ( @@ -92936,8 +92872,10 @@ "xUY" = ( /obj/structure/table/glass, /obj/item/clothing/mask/cigarette/cigar, -/turf/simulated/floor/light{ - color = "#fff" +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "bluered" }, /area/station/command/bridge) "xVe" = ( @@ -93301,7 +93239,7 @@ /area/station/command/office/hop) "ybL" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "ybN" = ( @@ -110415,7 +110353,7 @@ aGn aGn aKW neo -aHn +aGn gxu aGn aLu @@ -114305,7 +114243,7 @@ fkr cqQ rVV jnc -vhD +blQ fea bxb xKE @@ -115077,7 +115015,7 @@ bEB bGY bIz cCh -bFp +nGo qsc bMi bKz @@ -117169,7 +117107,7 @@ cgQ cqL cZw cUh -cOz +cLi ykF ogh weq @@ -118962,8 +118900,8 @@ cwl wFR fnV cwz -sCW -sCW +njn +njn cgQ dCM ieW @@ -119208,8 +119146,8 @@ cfi cgS cgS cgS -coT -coT +cgS +cgS cgS lNb cyg @@ -129171,7 +129109,7 @@ axY avq avq aBu -arR +awl awl awl aLP @@ -129428,7 +129366,7 @@ axX avq avq aBu -arR +awl avq ayb aLP @@ -130448,11 +130386,11 @@ aqI aqI atG awl -arR +awl awl ifp aqc -aya +aqc awl avq aBz @@ -131482,7 +131420,7 @@ ava awE ayf azn -arR +awl tbC tbC tbC @@ -131991,7 +131929,7 @@ aaa atG aqc aqc -arR +awl avb aAQ aNH @@ -135609,7 +135547,7 @@ aHb aHb aOG aGX -aHb +fvC aOG aGY aTg @@ -135683,7 +135621,7 @@ mCO cED xmj tAb -cHe +chf chf chf chf @@ -139808,7 +139746,7 @@ cBR yfJ hQe yfJ -ecZ +oJr kMc kdc csL @@ -140836,7 +140774,7 @@ cBR yfJ nKg yfJ -ecZ +oJr bUx dFe csL @@ -142877,7 +142815,7 @@ cLb cLb eKC mhW -gzz +ciY ciY ciY csL @@ -143905,8 +143843,8 @@ cLb cLb ePp jPx -gzz -gzz +ciY +ciY dSu hWs mtx diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 40e77ab35188..fbbc5126d485 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -1192,7 +1192,7 @@ dir = 4; icon_state = "neutralcorner" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "ahB" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ @@ -1256,7 +1256,7 @@ }, /area/station/security/permabrig) "ahX" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/apmaint) "aia" = ( @@ -1309,15 +1309,15 @@ id = "ailockdown"; name = "AI Asteroid Lockdown"; pixel_y = 32; - req_access_txt = "56"; - pixel_x = -5 + pixel_x = -5; + req_access = list(56) }, /obj/machinery/door_control{ id = "aisat"; name = "AI Core Lockdown"; pixel_y = 32; - req_access_txt = "56"; - pixel_x = 5 + pixel_x = 5; + req_access = list(56) }, /turf/simulated/floor/plasteel{ icon_state = "bcircuit" @@ -1378,7 +1378,7 @@ check_synth = 1; name = "AI Chamber Turret Control"; pixel_y = 28; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/requests_console/directional/south, /turf/simulated/floor/plasteel{ @@ -2332,8 +2332,8 @@ }, /area/station/security/permabrig) "aoE" = ( -/obj/structure/table, /obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plating, /area/station/maintenance/disposal/northeast) "aoF" = ( @@ -3849,7 +3849,7 @@ name = "AI Asteroid Teleport Shutters Control"; pixel_x = 25; pixel_y = 25; - req_one_access_txt = "17;75" + req_one_access = list(17,75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -3908,7 +3908,7 @@ /turf/simulated/wall, /area/station/security/range) "azv" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -4940,7 +4940,7 @@ id = "bridge_lower"; name = "Lower Bridge Lockdown"; pixel_y = 24; - req_one_access_txt = "19;14" + req_one_access = list(19,14) }, /obj/structure/cable/orange{ d1 = 4; @@ -4951,7 +4951,7 @@ id = "bridge_upper"; name = "Upper Bridge Lockdown"; pixel_y = 32; - req_one_access_txt = "19;14" + req_one_access = list(19,14) }, /turf/simulated/floor/carpet/black, /area/station/command/bridge) @@ -5404,9 +5404,7 @@ /area/station/maintenance/fore2) "aLe" = ( /obj/machinery/computer/prisoner{ - dir = 4; - req_access = null; - req_access_txt = "2" + dir = 4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -6712,9 +6710,7 @@ /area/station/maintenance/fore) "aTR" = ( /obj/machinery/computer/prisoner{ - dir = 4; - req_access = null; - req_access_txt = "2" + dir = 4 }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -6955,7 +6951,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "aVo" = ( /obj/structure/table/wood, /obj/item/megaphone, @@ -7099,10 +7095,7 @@ }, /area/station/hallway/primary/fore/west) "aWm" = ( -/obj/machinery/computer/prisoner{ - req_access = null; - req_access_txt = "2" - }, +/obj/machinery/computer/prisoner, /turf/simulated/floor/plasteel, /area/station/security/prisonershuttle) "aWo" = ( @@ -7969,7 +7962,7 @@ /area/station/hallway/primary/central/north) "bbw" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/disposal/south) "bbH" = ( @@ -9158,7 +9151,7 @@ /area/station/hallway/spacebridge/dockmed) "bis" = ( /obj/structure/disposalpipe/segment, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating{ icon_state = "asteroidplating" @@ -9717,7 +9710,7 @@ name = "Medical Asteroid Lockdown"; pixel_x = 10; pixel_y = 39; - req_access_txt = "40" + req_access = list(40) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -11069,7 +11062,7 @@ /area/station/science/hallway) "bsU" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint) "bsV" = ( @@ -12232,7 +12225,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "byx" = ( /obj/machinery/light{ dir = 4 @@ -12627,8 +12620,8 @@ /obj/machinery/access_button{ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; - req_access_txt = "39"; - pixel_y = -24 + pixel_y = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "whitegreenfull" @@ -13465,8 +13458,7 @@ name = "Command EVA shutter control"; pixel_x = 25; pixel_y = 24; - req_access_txt = null; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -13589,7 +13581,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "bEC" = ( /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" @@ -13821,7 +13813,7 @@ autolink_id = "engsm_btn_int"; name = "Supermatter Access Button"; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -14169,7 +14161,7 @@ }, /area/station/service/library) "bGB" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "bGF" = ( @@ -14251,7 +14243,7 @@ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; pixel_y = -24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -14870,7 +14862,7 @@ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -15110,7 +15102,7 @@ name = "Secure Armory Shutter Control"; pixel_x = 12; pixel_y = 28; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -15137,7 +15129,6 @@ }, /area/station/science/genetics) "bLf" = ( -/obj/structure/rack, /obj/item/gun/projectile/shotgun/riot{ pixel_x = -3; pixel_y = 3 @@ -15147,16 +15138,10 @@ pixel_x = 3; pixel_y = -3 }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, /obj/machinery/camera{ c_tag = "Brig Secure Armory" }, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -15208,46 +15193,48 @@ /turf/simulated/floor/grass, /area/station/science/genetics) "bLm" = ( -/obj/structure/rack, /obj/structure/window/reinforced{ dir = 1; layer = 2.9 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = 3; pixel_y = -3 }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/storage/fancy/shell/tranquilizer{ + pixel_x = 7; + pixel_y = -5 + }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" }, /area/station/security/armory/secure) "bLr" = ( -/obj/structure/rack, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/tranquilizer{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag, /obj/structure/window/reinforced{ dir = 4 }, @@ -15255,6 +15242,7 @@ dir = 1; layer = 2.9 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -15616,21 +15604,21 @@ id = "engiestoragesmes"; name = "Secure Storage Blast Door Control"; pixel_x = -24; - req_access_txt = "10;11" + req_access = list(10,11) }, /obj/machinery/door_control{ id = "engineeringlockdown"; name = "Engineering Emergency Lockdown Control"; pixel_x = -24; pixel_y = 8; - req_access_txt = "10;11" + req_access = list(10,11) }, /obj/machinery/door_control{ id = "ceoffice"; name = "Office Emergency Lockdown"; pixel_x = -24; pixel_y = -8; - req_access_txt = "10;11" + req_access = list(10,11) }, /obj/structure/cable{ d2 = 4; @@ -16712,7 +16700,7 @@ /turf/simulated/floor/carpet/black, /area/station/command/bridge) "bSc" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/hallway/primary/aft/west) "bSg" = ( @@ -17127,7 +17115,7 @@ /turf/simulated/floor/plasteel, /area/station/security/processing) "bTQ" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/maintcentral) "bTR" = ( @@ -18230,7 +18218,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plating, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "bYC" = ( /obj/structure/table/wood/poker, /obj/item/deck/cards, @@ -18512,7 +18500,7 @@ /area/station/maintenance/apmaint) "caX" = ( /obj/effect/spawner/random_spawners/dirt_frequent, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "caY" = ( @@ -18675,9 +18663,6 @@ /obj/item/clothing/head/helmet/alt, /obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/head/helmet/alt, -/obj/structure/window/reinforced{ - dir = 8 - }, /obj/structure/window/reinforced, /turf/simulated/floor/plasteel{ dir = 8; @@ -18685,7 +18670,6 @@ }, /area/station/security/armory/secure) "ccO" = ( -/obj/structure/rack, /obj/item/gun/energy/disabler{ pixel_x = -3; pixel_y = 3 @@ -18699,6 +18683,7 @@ dir = 4 }, /obj/structure/window/reinforced, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -19397,7 +19382,6 @@ }, /area/station/security/warden) "cgG" = ( -/obj/structure/rack, /obj/item/storage/box/seccarts{ pixel_x = 3; pixel_y = 2 @@ -19412,17 +19396,16 @@ pixel_x = -3; pixel_y = -3 }, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 4 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" }, /area/station/security/armory/secure) "cgL" = ( -/obj/structure/rack, /obj/item/gun/energy/laser{ pixel_x = -3; pixel_y = 3 @@ -19432,20 +19415,13 @@ pixel_x = 3; pixel_y = -3 }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" }, /area/station/security/armory/secure) "cgR" = ( -/obj/structure/rack, /obj/item/gun/energy/gun{ pixel_x = -3; pixel_y = 3 @@ -19458,10 +19434,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -20431,14 +20404,14 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -21326,7 +21299,7 @@ name = "Arrivals EVA shutter control"; pixel_x = 25; pixel_y = 6; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -24081,7 +24054,7 @@ id = "servlockdown"; name = "Service Asteroid Lockdown"; pixel_y = 32; - req_access_txt = "57" + req_access = list(57) }, /obj/machinery/computer/guestpass/hop{ pixel_x = 28 @@ -25046,13 +25019,13 @@ name = "Desk Shutters"; pixel_x = 24; pixel_y = 8; - req_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control{ id = "hopexternal"; name = "External Lockdown"; pixel_x = 24; - req_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control/ticket_machine_button{ pixel_x = 24; @@ -25963,14 +25936,14 @@ name = "Auxiliary Vent Control"; pixel_x = 6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/door_control{ id = "turbinevent"; name = "Turbine Vent Control"; pixel_x = -6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/meter, @@ -26005,11 +25978,11 @@ name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; - req_access_txt = "12"; ext_door_link_id = "turbine_door_ext"; int_door_link_id = "turbine_door_int"; ext_button_link_id = "turbine_btn_ext"; - int_button_link_id = "turbine_btn_int" + int_button_link_id = "turbine_btn_int"; + req_access = list(12) }, /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) @@ -26316,7 +26289,7 @@ name = "Civilian EVA shutter control"; pixel_x = 25; pixel_y = 24; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -27585,7 +27558,7 @@ control_area = "\improper AI Satellite Secondary Antechamber"; name = "AI Satellite Secondary Antechamber Turret Control"; pixel_y = 32; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -30912,8 +30885,8 @@ layer = 3.6; autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; - req_access_txt = "39"; - pixel_y = -24 + pixel_y = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "whitegreenfull" @@ -31236,7 +31209,7 @@ pixel_y = 2 }, /turf/simulated/floor/plating, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "dCe" = ( /obj/structure/cable/orange{ d1 = 1; @@ -31963,7 +31936,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/bananium, /obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, +/obj/effect/mapping_helpers/airlock/access/all/service/clown, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/orange{ @@ -32507,7 +32480,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -32993,7 +32966,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/disposal/external/southeast) "dYD" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/asmaint) "dYK" = ( @@ -33239,7 +33212,7 @@ name = "Garage Door Control"; pixel_x = 24; pixel_y = 1; - req_access_txt = "66" + req_access = list(66) }, /obj/structure/sink{ dir = 4; @@ -33771,26 +33744,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/simulated/floor/plating, /area/station/maintenance/starboard) -"enw" = ( -/obj/machinery/smartfridge/secure{ - name = "\improper Kitchen Delivery SmartFridge"; - req_one_access_txt = "28;35" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/classic/normal{ - name = "Kitchen"; - dir = 1 - }, -/obj/machinery/door/window/classic/normal, -/obj/effect/mapping_helpers/airlock/windoor/autoname, -/obj/effect/mapping_helpers/airlock/windoor/access/any/service/hydroponics, -/obj/effect/mapping_helpers/airlock/windoor/access/any/service/kitchen{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/station/service/kitchen) "enx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -33867,11 +33820,11 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/rack, /obj/effect/spawner/random/maintenance, /obj/structure/window/basic{ dir = 8 }, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plating, /area/station/maintenance/disposal) "eot" = ( @@ -34537,7 +34490,7 @@ /turf/simulated/floor/plating, /area/station/service/bar) "ezr" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -34693,7 +34646,7 @@ /turf/simulated/floor/plating, /area/station/command/office/hos) "eBq" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -35808,13 +35761,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/starboard) -"eQv" = ( -/obj/effect/spawner/random/maintenance, -/obj/structure/rack, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/mine/unexplored/cere/civilian) "eQA" = ( /obj/machinery/alarm/directional/north, /obj/machinery/atmospherics/unary/thermomachine/freezer/on/server, @@ -35992,7 +35938,7 @@ /turf/simulated/floor/wood, /area/station/legal/magistrate) "eTL" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/gambling_den) "eTM" = ( @@ -36443,9 +36389,9 @@ /turf/simulated/floor/plating, /area/station/engineering/smes) "fcE" = ( -/obj/structure/table, /obj/item/stack/packageWrap, /obj/item/destTagger, +/obj/structure/shelf/command, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkblue" @@ -37375,7 +37321,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/disposal/north) "fsV" = ( -/obj/effect/spawner/random_barrier/wall_probably, +/obj/effect/spawner/random/barrier/wall_probably, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) "fsW" = ( @@ -37562,7 +37508,7 @@ dir = 8 }, /turf/simulated/floor/plating, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "fvb" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -37817,7 +37763,7 @@ }, /area/station/engineering/break_room) "fzh" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fsmaint) "fzj" = ( @@ -38482,7 +38428,7 @@ }, /area/station/medical/break_room) "fLv" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/disposal) "fLy" = ( @@ -38679,6 +38625,23 @@ icon_state = "bluecorner" }, /area/station/hallway/primary/starboard/south) +"fOh" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/window/classic/normal{ + name = "Kitchen"; + dir = 1 + }, +/obj/machinery/door/window/classic/normal, +/obj/effect/mapping_helpers/airlock/windoor/autoname, +/obj/effect/mapping_helpers/airlock/windoor/access/any/service/hydroponics, +/obj/effect/mapping_helpers/airlock/windoor/access/any/service/kitchen{ + dir = 1 + }, +/obj/machinery/smartfridge/food/chef, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/service/kitchen) "fOi" = ( /obj/machinery/light/small{ dir = 4 @@ -39511,7 +39474,7 @@ }, /area/station/hallway/spacebridge/scidock) "fZZ" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall/r_wall, /area/station/turret_protected/aisat/interior/secondary) "gah" = ( @@ -39553,7 +39516,7 @@ dir = 4; icon_state = "neutralcorner" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "gav" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -40519,7 +40482,7 @@ /turf/simulated/floor/plasteel/freezer, /area/station/service/kitchen) "gsr" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "gsx" = ( @@ -40544,7 +40507,7 @@ pixel_y = -24; pixel_x = -32 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -40585,7 +40548,7 @@ /turf/simulated/wall, /area/station/hallway/primary/aft/west) "gtZ" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/station/maintenance/apmaint) @@ -41979,8 +41942,8 @@ /obj/machinery/door_control{ id = "qm_warehouse"; name = "Warehouse Door Control"; - req_access_txt = "31"; - pixel_x = 24 + pixel_x = 24; + req_access = list(31) }, /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -43031,7 +42994,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "hgx" = ( @@ -43694,14 +43657,6 @@ }, /turf/simulated/floor/plasteel, /area/station/science/storage) -"hrm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/damageturf, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutralcorner" - }, -/area/mine/unexplored/cere/civilian) "hrn" = ( /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plasteel{ @@ -44696,11 +44651,11 @@ pixel_x = 8; pixel_y = 2 }, -/obj/structure/table/glass, /obj/item/radio/intercom{ pixel_y = 28; name = "custom placement" }, +/obj/structure/shelf/medbay, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whiteblue" @@ -44900,8 +44855,8 @@ d2 = 2; icon_state = "1-2" }, -/obj/structure/rack, /obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "hIo" = ( @@ -45217,7 +45172,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port2) "hLx" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/solar_maintenance/fore_starboard) "hLB" = ( @@ -45721,7 +45676,7 @@ autolink_id = "atmossm_btn_ext"; name = "Atmospherics Access Button"; pixel_y = -24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 @@ -46238,12 +46193,12 @@ /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) "hZk" = ( -/obj/structure/rack, /obj/item/storage/belt/utility, /obj/item/storage/belt/utility, /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, +/obj/structure/shelf/engineering, /turf/simulated/floor/plasteel{ icon_state = "darkyellow" }, @@ -48919,7 +48874,7 @@ /area/station/hallway/primary/fore/east) "iJM" = ( /obj/effect/spawner/random_spawners/dirt_frequent, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "iJY" = ( @@ -49270,7 +49225,7 @@ }, /area/station/service/library) "iPn" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/disposal/southwest) "iPr" = ( @@ -49492,7 +49447,7 @@ id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -24; - req_access_txt = "7" + req_access = list(7) }, /obj/machinery/atmospherics/unary/portables_connector{ dir = 8 @@ -51403,7 +51358,7 @@ }, /area/station/maintenance/asmaint) "jrT" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/security/checkpoint/secondary) "jrX" = ( @@ -51969,8 +51924,8 @@ /turf/simulated/floor/plasteel/white, /area/station/command/office/rd) "jyk" = ( -/obj/structure/rack, /obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "jyn" = ( @@ -52237,7 +52192,7 @@ name = "Science Asteroid Lockdown"; pixel_x = -24; pixel_y = -5; - req_access_txt = "30" + req_access = list(30) }, /obj/structure/table, /obj/item/book/manual/wiki/sop_science{ @@ -52308,7 +52263,7 @@ name = "AI Sat EVA shutter control"; pixel_x = 24; pixel_y = 25; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -52690,7 +52645,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = -24; - req_access_txt = "67" + req_access = list(67) }, /obj/machinery/button/windowtint{ dir = 1; @@ -53224,7 +53179,7 @@ /area/station/science/xenobiology) "jNU" = ( /obj/structure/disposalpipe/segment, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -54034,7 +53989,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "kad" = ( /obj/effect/decal/cleanable/blood/tracks/mapped{ dir = 10 @@ -55651,7 +55606,7 @@ /turf/simulated/floor/carpet/cyan, /area/station/public/fitness) "kyz" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/disposal/south) "kyK" = ( @@ -55706,7 +55661,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/asmaint) "kzK" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/disposal/east) "kzP" = ( @@ -56501,7 +56456,7 @@ "kMH" = ( /obj/machinery/door/airlock/tranquillite, /obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/all/service/theatre, +/obj/effect/mapping_helpers/airlock/access/all/service/mime, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -56721,7 +56676,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = -24; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/button/windowtint{ dir = 1; @@ -57660,7 +57615,7 @@ name = "Garage Door Control"; pixel_x = -24; pixel_y = 1; - req_access_txt = "66" + req_access = list(66) }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -58562,7 +58517,7 @@ }, /area/station/supply/warehouse) "lqj" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/port) "lqq" = ( @@ -58979,6 +58934,20 @@ }, /turf/simulated/floor/wood, /area/station/public/vacant_office) +"lwZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/port2) "lxe" = ( /obj/structure/table/reinforced, /obj/item/transfer_valve{ @@ -59736,7 +59705,7 @@ }, /area/station/hallway/spacebridge/scidock) "lHD" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/electrical_shop) "lHG" = ( @@ -61678,7 +61647,7 @@ }, /area/station/science/robotics) "mmv" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -61795,7 +61764,7 @@ name = "Dispossal Vent Control"; pixel_x = 24; pixel_y = 8; - req_access_txt = "12" + req_access = list(12) }, /obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plating, @@ -62351,7 +62320,7 @@ /area/station/turret_protected/aisat/interior) "mvD" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint) "mvF" = ( @@ -62581,9 +62550,6 @@ icon_state = "neutral" }, /area/station/public/storage/tools) -"myi" = ( -/turf/simulated/mineral/ancient/outer, -/area/space) "myn" = ( /obj/structure/railing/corner{ dir = 1 @@ -62832,7 +62798,7 @@ }, /area/station/medical/morgue) "mCg" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/asmaint) "mCo" = ( @@ -64327,9 +64293,7 @@ /turf/simulated/floor/plating, /area/station/security/prison/cell_block/A) "mYT" = ( -/obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" - }, +/obj/structure/closet/secure_closet/bar, /obj/item/radio/intercom{ name = "north bump"; pixel_y = 28 @@ -65169,9 +65133,9 @@ /obj/machinery/button/windowtint{ id = "Courtroom"; pixel_x = -24; - req_one_access_txt = "74;3"; dir = 4; - pixel_y = -8 + pixel_y = -8; + req_one_access = list(74,3) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -66366,8 +66330,8 @@ /obj/machinery/button/windowtint{ id = "Detective"; pixel_x = -24; - req_access_txt = "4"; - dir = 4 + dir = 4; + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -68132,8 +68096,8 @@ /obj/machinery/door_control{ id = "engiestoragesmes"; name = "Secure Storage Blast Door Control"; - req_access_txt = "56"; - pixel_x = -24 + pixel_x = -24; + req_access = list(56) }, /turf/simulated/floor/plating, /area/station/engineering/smes) @@ -68198,17 +68162,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) -"olh" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkgreenfull" - }, -/area/station/service/hydroponics) "olr" = ( /obj/structure/table, /obj/item/paper{ @@ -68428,7 +68381,7 @@ name = "Science EVA shutter control"; pixel_x = -25; pixel_y = 24; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/structure/sign/directions/security{ dir = 1; @@ -68813,7 +68766,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "osy" = ( /obj/item/assembly/mousetrap/armed, /turf/simulated/floor/plating/asteroid/ancient, @@ -69069,11 +69022,11 @@ name = "Mixing Room Access Console"; pixel_x = -26; pixel_y = 6; - req_access_txt = "12"; ext_door_link_id = "incinerator_door_ext"; int_door_link_id = "incinerator_door_int"; ext_button_link_id = "incinerator_btn_ext"; - int_button_link_id = "incinerator_btn_int" + int_button_link_id = "incinerator_btn_int"; + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -69172,7 +69125,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port2) "oyh" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plasteel, /area/station/maintenance/starboard) "oyo" = ( @@ -72479,8 +72432,8 @@ /obj/machinery/door_control{ id = "RoboticsShutters"; name = "Robotics Privacy Shutters"; - req_access_txt = "29"; - pixel_y = -24 + pixel_y = -24; + req_access = list(29) }, /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -72931,7 +72884,7 @@ dir = 8; icon_state = "neutralcorner" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "pBi" = ( /obj/structure/table/wood, /obj/item/storage/firstaid/brute, @@ -73711,7 +73664,7 @@ /turf/simulated/floor/plating, /area/station/science/xenobiology) "pMv" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/mine/unexplored/cere/cargo) "pMB" = ( @@ -73825,7 +73778,7 @@ name = "Prison Wing Lockdown"; pixel_x = 1; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "hosofficedoor"; @@ -73833,14 +73786,14 @@ normaldoorcontrol = 1; pixel_x = 11; pixel_y = -28; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -9; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -75164,9 +75117,6 @@ icon_state = "dark" }, /area/station/engineering/gravitygenerator) -"qeS" = ( -/turf/simulated/mineral/ancient, -/area/space) "qeX" = ( /obj/item/reagent_containers/drinks/bottle/patron, /obj/structure/table/wood, @@ -76042,7 +75992,7 @@ /area/station/maintenance/apmaint) "qpx" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/port2) "qpM" = ( @@ -76375,7 +76325,7 @@ id = "teleshutter"; name = "Teleporter Shutters Access Control"; pixel_y = -24; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -76675,7 +76625,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "qyO" = ( /obj/structure/cable/orange{ d1 = 4; @@ -78131,7 +78081,7 @@ /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "qVx" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/station/maintenance/electrical_shop) @@ -78864,14 +78814,6 @@ /obj/structure/cable/orange, /turf/simulated/floor/transparent/glass/reinforced, /area/station/maintenance/fore) -"rjf" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/mine/unexplored/cere/civilian) "rji" = ( /obj/structure/cable{ d1 = 1; @@ -79126,7 +79068,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/south) "rnP" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/mine/unexplored/cere/civilian) @@ -79713,7 +79655,7 @@ }, /area/station/medical/paramedic) "rwZ" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/disposal/south) "rxb" = ( @@ -79842,11 +79784,6 @@ icon_state = "asteroidplating" }, /area/station/maintenance/port) -"rAc" = ( -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/mine/unexplored/cere/civilian) "rAg" = ( /obj/machinery/door/airlock/public/glass{ name = "Holodeck Door" @@ -80227,8 +80164,8 @@ /obj/machinery/door_control{ id = "qm_warehouse"; name = "Warehouse Door Control"; - req_access_txt = "31"; - pixel_x = -24 + pixel_x = -24; + req_access = list(31) }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/corner{ @@ -80865,7 +80802,7 @@ /turf/simulated/wall, /area/station/public/toilet) "rNW" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fsmaint) "rOc" = ( @@ -81357,7 +81294,7 @@ /turf/simulated/floor/wood, /area/station/service/bar) "rVD" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -81390,7 +81327,7 @@ id = "MechbayShutters2"; name = "Mechbay Shutters"; pixel_y = 24; - req_access_txt = "29" + req_access = list(29) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -81468,7 +81405,7 @@ name = "Chemistry Shutter Control"; pixel_x = 24; pixel_y = 22; - req_access_txt = "33" + req_access = list(33) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -82434,7 +82371,7 @@ }, /area/station/medical/surgery/secondary) "sip" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/mine/unexplored/cere/engineering) "sit" = ( @@ -83781,10 +83718,6 @@ /obj/effect/decal/cleanable/cobweb2, /turf/simulated/floor/plating, /area/mine/unexplored/cere/civilian) -"sCn" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/asmaint) "sCr" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 @@ -84218,7 +84151,7 @@ name = "AI Asteroid Teleport Shutters Control"; pixel_x = -25; pixel_y = 25; - req_one_access_txt = "17;75" + req_one_access = list(17,75) }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ @@ -84307,7 +84240,7 @@ }, /area/station/maintenance/apmaint) "sKo" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint) "sKz" = ( @@ -84541,7 +84474,7 @@ id = "RnDShutters"; name = "Research Privacy Shutters"; pixel_y = 24; - req_access_txt = "47" + req_access = list(47) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -84738,7 +84671,7 @@ /area/station/hallway/primary/starboard/south) "sPm" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/apmaint) "sPp" = ( @@ -85437,9 +85370,7 @@ /area/station/maintenance/fpmaint) "sZS" = ( /obj/machinery/computer/prisoner{ - dir = 1; - req_access = null; - req_access_txt = "2" + dir = 1 }, /obj/machinery/light_switch{ dir = 1; @@ -85452,7 +85383,7 @@ name = "Prison Wing Lockdown"; pixel_x = -9; pixel_y = -24; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -87181,12 +87112,12 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/table, /obj/item/stack/packageWrap, /obj/item/destTagger{ pixel_x = 4; pixel_y = 3 }, +/obj/structure/shelf/science, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -87454,6 +87385,22 @@ /obj/item/storage/backpack/satchel/explorer, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) +"tDi" = ( +/obj/item/storage/bag/plants/portaseeder, +/obj/item/storage/bag/plants/portaseeder, +/obj/item/storage/bag/plants, +/obj/item/storage/bag/plants, +/obj/structure/shelf/service, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkgreenfull" + }, +/area/station/service/hydroponics) "tDm" = ( /obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel{ @@ -88134,7 +88081,7 @@ }, /area/station/medical/surgery) "tOn" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/port2) "tOo" = ( @@ -88363,7 +88310,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "tTl" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -88583,41 +88530,41 @@ id = "ailockdown"; name = "AI Asteroid Lockdown"; pixel_y = 40; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/door_control{ id = "servlockdown"; name = "Service Lockdown"; pixel_x = -10; pixel_y = 32; - req_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control{ id = "medlockdown"; name = "Medical Lockdown"; pixel_x = 10; pixel_y = 32; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/door_control{ id = "cargolockdown"; name = "Cargo Lockdown"; pixel_x = 10; pixel_y = 40; - req_access_txt = "41" + req_access = list(41) }, /obj/machinery/door_control{ id = "scilockdown"; name = "Science Lockdown"; pixel_x = -10; pixel_y = 24; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/door_control{ id = "engilockdown"; name = "Engineering Lockdown"; pixel_y = 32; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/carpet/black, /area/station/command/bridge) @@ -88777,7 +88724,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "tXS" = ( /obj/structure/disposalpipe/segment/corner, /turf/simulated/floor/plasteel{ @@ -89372,7 +89319,7 @@ name = "Cargo EVA shutter control"; pixel_x = -25; pixel_y = 24; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -89456,7 +89403,7 @@ id = "engilockdown"; name = "Engineering Lockdown"; pixel_y = 24; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/photocopier/faxmachine{ department = "Chief Engineer's Office" @@ -89630,12 +89577,12 @@ }, /obj/machinery/airlock_controller/access_controller{ name = "Virology Lab Access Console"; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; int_button_link_id = "viro_btn_int"; - pixel_x = -24 + pixel_x = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -90455,7 +90402,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "uvp" = ( /obj/machinery/camera{ c_tag = "SM East"; @@ -91049,7 +90996,7 @@ /turf/simulated/floor/wood, /area/station/command/office/captain) "uBs" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/fore) "uBA" = ( @@ -91486,7 +91433,7 @@ }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "uJd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -91679,7 +91626,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/hallway/primary/aft/west) "uKL" = ( @@ -95553,7 +95500,7 @@ /area/station/public/storage/tools) "vPd" = ( /obj/effect/decal/cleanable/glass, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "vPj" = ( @@ -99131,7 +99078,7 @@ id = "bridge"; dir = 1; pixel_y = 7; - req_one_access_txt = "19;41" + req_one_access = list(19,41) }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -99316,7 +99263,6 @@ }, /area/station/public/fitness) "wOh" = ( -/obj/structure/table, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -99329,6 +99275,7 @@ name = "south bump"; pixel_y = -28 }, +/obj/structure/shelf/supply, /turf/simulated/floor/plasteel{ icon_state = "darkbrown" }, @@ -99576,7 +99523,7 @@ /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) "wRk" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/mine/unexplored/cere/civilian) "wRo" = ( @@ -100447,7 +100394,7 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_y = 24; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/camera{ c_tag = "SM South"; @@ -100591,7 +100538,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/mine/unexplored/cere/civilian) +/area/station/maintenance/port2) "xgU" = ( /obj/structure/sink/puddle, /turf/simulated/floor/plating/asteroid/ancient, @@ -100909,7 +100856,7 @@ }, /area/station/hallway/primary/aft/west) "xmz" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/station/maintenance/port) @@ -101193,7 +101140,7 @@ }, /area/station/hallway/primary/port/north) "xrI" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) "xrN" = ( @@ -101474,8 +101421,7 @@ /area/station/hallway/spacebridge/dockmed) "xwQ" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/item/circuitboard/chem_dispenser, /obj/item/storage/pill_bottle/random_drug_bottle, @@ -101860,7 +101806,7 @@ }, /area/station/science/misc_lab) "xAK" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "xAO" = ( @@ -102180,7 +102126,7 @@ }, /area/station/command/teleporter) "xEX" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/asmaint) "xEZ" = ( @@ -102295,6 +102241,14 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/carpet, /area/station/medical/psych) +"xGy" = ( +/obj/structure/disposalpipe/junction/y{ + dir = 4 + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/port2) "xGA" = ( /obj/machinery/door/airlock/atmos/glass{ autoclose = 0; @@ -102307,7 +102261,7 @@ autolink_id = "atmossm_btn_int"; name = "Atmospherics Access Button"; pixel_y = -24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 @@ -104179,8 +104133,8 @@ /obj/machinery/door_control{ id = "medeva"; name = "Medical EVA shutter control"; - req_one_access_txt = "19;41"; - pixel_y = 24 + pixel_y = 24; + req_one_access = list(19,41) }, /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plating, @@ -104563,7 +104517,7 @@ id = "MechbayShutters"; name = "Mechbay Shutters"; pixel_x = 25; - req_access_txt = "29" + req_access = list(29) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -123539,7 +123493,7 @@ mrt mrt mrt mrt -enw +fOh prN biB cBs @@ -124322,7 +124276,7 @@ glI gIv uCO noy -olh +tDi nWX qxR btd @@ -124520,7 +124474,7 @@ hUU ncn xdr nIF -aXn +cEM mJl vPV xsS @@ -124776,8 +124730,8 @@ hUU fgt ncn xdr -aXn -aXn +cEM +cEM mJl rvT mvM @@ -125033,7 +124987,7 @@ aXn wZC nIF xdr -aXn +cEM uSv uSv gav @@ -125290,7 +125244,7 @@ aXn aXn dQZ xdr -aXn +cEM uSv pDn pDn @@ -125547,7 +125501,7 @@ mNT aXn eyh xdr -aXn +cEM uSv pDn pDn @@ -125804,7 +125758,7 @@ djz aZF dQZ tHQ -aXn +cEM uSv pDn pDn @@ -126061,7 +126015,7 @@ fYh lOr sQV uaM -aXn +cEM uSv pDn pDn @@ -126318,7 +126272,7 @@ tmR qAJ nIF xdr -aXn +cEM uSv pDn pDn @@ -126331,7 +126285,7 @@ pDn pDn pDn uSv -aXn +cEM fmz qxQ jjb @@ -126575,7 +126529,7 @@ djz qpx nIF xdr -aXn +cEM uSv uSv uSv @@ -126588,7 +126542,7 @@ uSv uSv uSv uSv -aXn +cEM pFj hzj acY @@ -126615,7 +126569,7 @@ xbi huq huq huq -huq +xGy uNO czl baF @@ -126827,12 +126781,12 @@ rNK hUU aXn aXn -mic -mic -mic +aZF +aZF +aZF nIF hXc -cEM +aXn aXn aXn aXn @@ -126842,10 +126796,10 @@ tsz sBQ loA uSv -aXn -aXn -aXn -aXn +cEM +cEM +cEM +cEM dQZ tpB qxQ @@ -126872,7 +126826,7 @@ qoK nxG nxG nxG -eiE +lwZ wph oZo baF @@ -127089,8 +127043,8 @@ fuZ dQZ lHU xdr -cEM -cEM +aXn +aXn aXn aXn uSv @@ -127102,7 +127056,7 @@ oyg jfe kUi rAQ -aXn +cEM nIF gnS uCw @@ -127338,7 +127292,7 @@ abE rNK rNK rNK -myi +hUU aXn aht jZY @@ -127347,19 +127301,19 @@ mOV nIF xdr lzs -cEM -cEM aXn aXn aXn aXn aXn aXn -mic +aXn +aXn +aZF qxQ rqr msv -aXn +cEM nIF gnS bBI @@ -127595,8 +127549,8 @@ abE rNK rNK rNK -myi -qeS +hUU +aXn uuY ost bEA @@ -127607,12 +127561,12 @@ puu wvM nIF aZF -mic -aXn +aZF aXn aXn aXn aXn +cEM nIF rqr dYK @@ -127852,9 +127806,9 @@ abE rNK rNK rNK -myi -qeS -hrm +hUU +aXn +gxa uIR tXQ uIR @@ -128109,9 +128063,9 @@ abE rNK rNK rNK -myi -qeS -qeS +hUU +aXn +aXn gan qst gxa @@ -128366,9 +128320,9 @@ abE rNK rNK rNK -myi -myi -qeS +hUU +hUU +aXn aXn aZF aZF @@ -128376,8 +128330,8 @@ tyk kTF aZF aZF -rjf -jNX +eyh +ncn aXn aXn aXn @@ -128624,17 +128578,17 @@ rNK rNK rNK rNK -myi +hUU aXn aXn -mic +aZF uGz lRc uyi rte aZF -rAc -eQv +nIF +quf aXn aXn aXn @@ -128881,7 +128835,7 @@ rNK rNK rNK rNK -myi +hUU hUU aXn aXn @@ -128890,7 +128844,7 @@ dQZ aiS hNJ tOn -rAc +nIF aXn aXn aXn @@ -129139,7 +129093,7 @@ rNK rNK rNK rNK -myi +hUU aXn aXn xxs @@ -129147,7 +129101,7 @@ aAT dQZ dQZ rrc -rAc +nIF aXn aXn aXn @@ -129396,7 +129350,7 @@ cRv rNK rNK rNK -myi +hUU hUU aXn tTh @@ -129654,7 +129608,7 @@ abE rNK rNK rNK -myi +hUU hUU aXn aXn @@ -129911,14 +129865,14 @@ abE rNK rNK rNK -myi -myi -myi hUU hUU hUU -myi -myi +hUU +hUU +hUU +hUU +hUU rNK lzH rNK @@ -150808,7 +150762,7 @@ aXn aXn wLr vpJ -sCn +vpJ vpJ vRX rao diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index 18e3bccec2b8..03e676b8cf72 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -2805,10 +2805,9 @@ }, /area/station/maintenance/fore2) "aqn" = ( -/obj/structure/rack, -/obj/item/crowbar, -/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -2821,7 +2820,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fore2) "aqp" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fore2) "aqq" = ( @@ -3971,11 +3970,6 @@ icon_state = "freezerfloor" }, /area/station/maintenance/fore) -"atq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/wall_rusted_maybe, -/turf/simulated/wall, -/area/station/maintenance/fore) "atr" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/damageturf, @@ -4559,10 +4553,6 @@ /obj/effect/landmark/damageturf, /turf/simulated/floor/wood, /area/station/maintenance/fore) -"auO" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/fore2) "auP" = ( /obj/structure/rack, /obj/machinery/light/small{ @@ -4743,7 +4733,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/maintenance/fore2) "avs" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/disposal) "avt" = ( @@ -5421,7 +5411,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "awW" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/station/maintenance/fore) @@ -5449,7 +5439,7 @@ /turf/simulated/wall, /area/station/service/janitor) "axb" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/starboard2) "axc" = ( @@ -5954,7 +5944,7 @@ }, /area/station/maintenance/fore) "ayr" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fore) "ays" = ( @@ -6353,17 +6343,6 @@ icon_state = "brown" }, /area/station/supply/warehouse) -"azF" = ( -/obj/machinery/door_control{ - id = "qm_warehouse"; - name = "Warehouse Door Control"; - pixel_x = 24; - pixel_y = -3; - req_access_txt = "31" - }, -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/plating, -/area/station/supply/warehouse) "azG" = ( /obj/structure/table, /obj/item/stack/packageWrap, @@ -6373,7 +6352,7 @@ name = "Warehouse Door Control"; pixel_x = -24; pixel_y = -3; - req_access_txt = "31" + req_access = list(31) }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ @@ -7576,7 +7555,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/storage) "aCL" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fore) "aCN" = ( @@ -9915,7 +9894,7 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_y = 24; - req_access_txt = "24" + req_access = list(24) }, /obj/structure/cable/yellow{ d1 = 4; @@ -10800,7 +10779,7 @@ /area/station/maintenance/fore) "aLC" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -11079,20 +11058,12 @@ /turf/simulated/wall/r_wall, /area/station/security/execution) "aMx" = ( -/obj/structure/extinguisher_cabinet{ - name = "east bump"; - pixel_x = 30 - }, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, /obj/structure/cable, -/obj/structure/extinguisher_cabinet{ - name = "east bump"; - pixel_x = 30 - }, /obj/structure/extinguisher_cabinet{ name = "east bump"; pixel_x = 30 @@ -11262,7 +11233,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/engineering/controlroom) "aMV" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/gambling_den) "aMW" = ( @@ -12250,7 +12221,7 @@ id = "janitorshutters"; name = "Janitor Shutters Control"; pixel_x = 25; - req_access_txt = "26" + req_access = list(26) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -16226,7 +16197,7 @@ }, /area/station/supply/qm) "aZE" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/medical/storage) "aZG" = ( @@ -16261,7 +16232,7 @@ id = "cell1lockdown"; name = "Cell Lockdown"; pixel_y = 32; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/flasher_button{ id = "Cell 1"; @@ -16302,7 +16273,7 @@ id = "cell2lockdown"; name = "Cell Lockdown"; pixel_y = 32; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" @@ -16534,7 +16505,7 @@ }, /area/station/maintenance/fore) "baD" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -17818,12 +17789,12 @@ /area/station/service/kitchen) "bdN" = ( /obj/machinery/alarm/directional/west, -/obj/structure/rack, /obj/item/stack/packageWrap, /obj/item/hand_labeler, /obj/item/book/manual/wiki/chef_recipes, /obj/effect/turf_decal/delivery/hollow, /obj/item/wrench, +/obj/structure/shelf/service, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -18871,6 +18842,7 @@ /obj/item/grenade/barrier, /obj/item/grenade/barrier, /obj/structure/rack, +/obj/item/storage/fancy/shell/tranquilizer, /turf/simulated/floor/plasteel, /area/station/security/armory/secure) "bhk" = ( @@ -19003,7 +18975,6 @@ }, /area/station/hallway/primary/fore/south) "bhH" = ( -/obj/machinery/smartfridge, /obj/effect/mapping_helpers/airlock/windoor/access/all/service/hydroponics{ dir = 8 }, @@ -19014,6 +18985,7 @@ /obj/effect/mapping_helpers/airlock/windoor/access/any/service/kitchen{ dir = 8 }, +/obj/machinery/smartfridge/food/chef, /turf/simulated/floor/plasteel, /area/station/service/kitchen) "bhI" = ( @@ -20864,7 +20836,6 @@ }, /area/station/security/processing) "bme" = ( -/obj/structure/rack, /obj/item/gun/energy/laser{ pixel_x = 3; pixel_y = 3 @@ -20875,6 +20846,7 @@ pixel_y = -3 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/gunrack, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "bmg" = ( @@ -21366,7 +21338,6 @@ name = "west bump"; pixel_x = -30 }, -/obj/structure/rack, /obj/item/storage/toolbox/emergency{ pixel_x = 3; pixel_y = -4 @@ -21377,6 +21348,7 @@ /obj/item/pickaxe, /obj/item/pickaxe, /obj/effect/turf_decal/delivery/hollow, +/obj/structure/shelf/supply, /turf/simulated/floor/plasteel, /area/station/supply/miningdock) "bnk" = ( @@ -22730,7 +22702,7 @@ }, /area/station/hallway/primary/central/north) "bqB" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/starboard) "bqC" = ( @@ -22776,7 +22748,6 @@ }, /area/station/security/processing) "bqW" = ( -/obj/structure/rack, /obj/item/gun/projectile/shotgun/riot{ pixel_x = 3; pixel_y = 3 @@ -22787,6 +22758,7 @@ pixel_y = -3 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/gunrack, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "bqX" = ( @@ -23165,7 +23137,7 @@ id = "bridge blast north"; name = "North Bridge Blast Door Control"; pixel_y = 32; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) @@ -24389,14 +24361,14 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -25734,7 +25706,7 @@ id = "bridge blast east"; name = "East Bridge Blast Door Control"; pixel_x = 26; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) @@ -26922,7 +26894,7 @@ name = "West Bridge Blast Door Control"; pixel_x = null; pixel_y = 24; - req_access_txt = "19" + req_access = list(19) }, /obj/structure/cable{ d1 = 4; @@ -27122,7 +27094,7 @@ name = "East Bridge Blast Door Control"; pixel_x = null; pixel_y = 24; - req_access_txt = "19" + req_access = list(19) }, /obj/item/kirbyplants, /obj/structure/cable{ @@ -27819,7 +27791,6 @@ }, /area/station/public/storage/tools) "bDP" = ( -/obj/structure/table/reinforced, /obj/item/stack/rods, /obj/item/stack/cable_coil/random, /obj/item/stack/cable_coil/random, @@ -27829,6 +27800,7 @@ icon_state = "0-4" }, /obj/effect/turf_decal/delivery/hollow, +/obj/structure/shelf, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bDQ" = ( @@ -28504,7 +28476,6 @@ /turf/simulated/floor/carpet, /area/station/command/bridge) "bFL" = ( -/obj/structure/rack, /obj/item/storage/toolbox/emergency, /obj/item/wrench, /obj/machinery/light/small, @@ -28512,6 +28483,7 @@ pixel_y = -3 }, /obj/item/multitool/command, +/obj/structure/shelf/command, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkblue" @@ -29302,7 +29274,7 @@ control_area = "\improper AI Upload Chamber"; name = "AI Upload Turret Control"; pixel_y = -24; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/carpet, /area/station/command/bridge) @@ -29312,14 +29284,14 @@ name = "Expedition Shutters Access Control"; pixel_x = 7; pixel_y = -26; - req_access_txt = "62" + req_access = list(62) }, /obj/machinery/door_control{ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; pixel_x = -7; pixel_y = -26; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/keycard_auth{ pixel_y = -38 @@ -30361,7 +30333,7 @@ id = "transitlock"; name = "Transit Tube Lockdown Control"; pixel_y = 24; - req_access_txt = "11" + req_access = list(11) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -30523,7 +30495,6 @@ /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bKA" = ( -/obj/structure/rack, /obj/item/book/manual/wiki/hacking, /obj/item/book/manual/wiki/engineering_guide, /obj/item/book/manual/wiki/engineering_construction, @@ -30531,6 +30502,7 @@ pixel_x = -32 }, /obj/effect/turf_decal/delivery/hollow, +/obj/structure/shelf, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bKB" = ( @@ -30581,7 +30553,7 @@ name = "Privacy Shutters"; pixel_x = 5; pixel_y = -4; - req_one_access_txt = "18" + req_access = list(18) }, /obj/structure/cable{ d1 = 2; @@ -30995,7 +30967,7 @@ /turf/space, /area/space/nearstation) "bLN" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "bLO" = ( @@ -31736,7 +31708,7 @@ icon_state = "1-2" }, /obj/effect/spawner/random_spawners/blood_often, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "bNI" = ( @@ -32646,7 +32618,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -5; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -34609,7 +34581,7 @@ control_area = "\improper AI Satellite"; name = "AI Antechamber Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ @@ -34914,14 +34886,14 @@ name = "Engineering Secure Storage Control"; pixel_x = -38; pixel_y = 8; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/door_control{ id = "transitlock"; name = "Transit Tube Lockdown Control"; pixel_x = -38; pixel_y = -8; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/computer/security/engineering{ dir = 4 @@ -34932,7 +34904,7 @@ pixel_x = -24; pixel_y = 9; range = 12; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) @@ -35474,7 +35446,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/control) "bYa" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) @@ -36427,8 +36399,7 @@ /area/station/legal/lawoffice) "caM" = ( /obj/machinery/computer/prisoner{ - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -36494,13 +36465,13 @@ name = "Privacy Shutters"; pixel_x = -24; pixel_y = -8; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door_control{ id = "hopqueueshutters"; name = "Queue Shutters"; pixel_x = -24; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door_control/ticket_machine_button{ pixel_x = -24; @@ -36799,7 +36770,6 @@ /obj/structure/sign/poster/official/random{ pixel_y = 32 }, -/obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /area/station/maintenance/port) "cbE" = ( @@ -36960,7 +36930,7 @@ normaldoorcontrol = 1; pixel_x = -24; pixel_y = -8; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/light_switch{ dir = 4; @@ -37052,7 +37022,7 @@ normaldoorcontrol = 1; pixel_x = 24; pixel_y = -24; - req_access_txt = "67" + req_access = list(67) }, /turf/simulated/floor/wood, /area/station/command/office/blueshield) @@ -38225,7 +38195,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/engineering/smes) "cfn" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/port) "cfo" = ( @@ -38432,7 +38402,7 @@ /obj/machinery/button/windowtint{ id = "Courtroom"; pixel_x = -8; - req_one_access_txt = "74;3" + req_one_access = list(74,3) }, /obj/structure/cable{ d1 = 1; @@ -38491,7 +38461,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = -25; - req_access_txt = "74" + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -38570,12 +38540,12 @@ }, /area/station/security/evidence) "cgp" = ( -/obj/structure/table, /obj/item/hand_labeler, /obj/item/storage/box/evidence, /obj/item/storage/box/evidence, /obj/item/pen, /obj/machinery/firealarm/directional/south, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -38780,7 +38750,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -8; - req_access_txt = "57" + req_access = list(57) }, /turf/simulated/floor/carpet, /area/station/command/office/hop) @@ -38827,7 +38797,7 @@ id = "BS"; pixel_x = -24; pixel_y = -8; - req_access_txt = "67" + req_access = list(67) }, /turf/simulated/floor/wood, /area/station/command/office/blueshield) @@ -39946,7 +39916,7 @@ id = "teleaccessshutter"; name = "Teleporter Shutters Access Control"; pixel_y = 24; - req_access_txt = "17" + req_access = list(17) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -41466,7 +41436,7 @@ id = "teleportershutter"; name = "Teleporter Shutters Access Control"; pixel_x = -24; - req_access_txt = "17" + req_access = list(17) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -41593,7 +41563,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_access_txt = "4" + req_access = list(4) }, /obj/item/restraints/handcuffs/pinkcuffs, /obj/item/clothing/under/rank/security/officer, @@ -43024,7 +42994,7 @@ "csI" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -44755,11 +44725,11 @@ /turf/simulated/floor/plating/airless, /area/station/engineering/control) "cxH" = ( -/obj/structure/rack, /obj/item/clothing/gloves/color/black, /obj/item/wrench, /obj/item/clothing/glasses/meson/engine, /obj/effect/turf_decal/delivery/hollow, +/obj/structure/shelf/engineering, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "cxI" = ( @@ -46961,8 +46931,8 @@ /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "cDP" = ( -/obj/structure/rack, /obj/machinery/light/small, +/obj/structure/shelf, /turf/simulated/floor/plating, /area/station/maintenance/port) "cDQ" = ( @@ -47173,7 +47143,7 @@ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; pixel_x = 26; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -47277,7 +47247,7 @@ }, /area/station/hallway/primary/central/se) "cFg" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "cFh" = ( @@ -48784,7 +48754,7 @@ /turf/simulated/wall, /area/station/maintenance/electrical) "cIB" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/electrical) "cIC" = ( @@ -50475,7 +50445,7 @@ /obj/machinery/door_control{ id = "xeno6"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 4 @@ -50905,7 +50875,7 @@ /obj/machinery/door_control{ id = "xeno4"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 4 @@ -50991,7 +50961,7 @@ /obj/machinery/door_control{ id = "xeno5"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 4 @@ -51267,7 +51237,7 @@ id = "xenosecure"; name = "Containment Control"; pixel_y = -3; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel/white, @@ -51821,7 +51791,7 @@ /obj/machinery/door_control{ id = "xeno2"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 8 @@ -51834,7 +51804,7 @@ /obj/machinery/door_control{ id = "xeno3"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 8 @@ -53882,7 +53852,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/abandonedbar) "dbK" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/port2) "dbL" = ( @@ -55342,7 +55312,7 @@ }, /area/station/hallway/secondary/entry/south) "dhi" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/public/construction) "dhj" = ( @@ -56573,7 +56543,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/maintenance/abandonedbar) "dlJ" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/apmaint) "dlK" = ( @@ -56658,7 +56628,7 @@ normaldoorcontrol = 1; pixel_x = -4; pixel_y = -4; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel/white, /area/station/command/office/rd) @@ -56709,7 +56679,7 @@ /area/station/medical/medbay) "dmy" = ( /obj/structure/girder, -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/floor/plating, /area/station/maintenance/port) "dmG" = ( @@ -57022,7 +56992,7 @@ id = "roboticsshutters"; name = "Mech Bay Door Control"; pixel_y = 24; - req_access_txt = "29" + req_access = list(29) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -57062,7 +57032,13 @@ }, /area/station/science/genetics) "dnW" = ( -/turf/simulated/floor/light, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, /area/station/engineering/atmos) "dnX" = ( /obj/structure/chair/sofa/left{ @@ -57234,7 +57210,7 @@ id = "RD"; pixel_x = 24; pixel_y = -36; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplecorner" @@ -58652,7 +58628,7 @@ }, /area/station/medical/virology) "dvS" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/theatre) "dvT" = ( @@ -59467,7 +59443,7 @@ }, /area/station/hallway/primary/aft/south) "dBk" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/medical/morgue) "dBp" = ( @@ -62701,7 +62677,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/maintenance/apmaint) "dRJ" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/r_wall, /area/station/maintenance/apmaint) "dRK" = ( @@ -63706,7 +63682,7 @@ /obj/machinery/door_control{ id = "xeno1"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/window/reinforced{ dir = 8 @@ -65181,7 +65157,7 @@ name = "exterior access button"; pixel_x = 20; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 1; @@ -65213,7 +65189,7 @@ id = "sr2"; pixel_x = 24; pixel_y = -7; - req_access_txt = "45" + req_access = list(45) }, /obj/machinery/light_switch{ dir = 8; @@ -65259,10 +65235,6 @@ /obj/machinery/atmospherics/portable/canister/nitrogen, /turf/simulated/floor/plasteel, /area/station/science/storage) -"euK" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/legal/lawoffice) "evE" = ( /obj/structure/cable{ d1 = 1; @@ -65693,7 +65665,7 @@ }, /area/station/medical/surgery/primary) "eHp" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "eHD" = ( @@ -65747,7 +65719,7 @@ name = "AI Chamber Turret Control"; pixel_x = -5; pixel_y = 24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -66091,7 +66063,7 @@ layer = 3.6; name = "Virology Lab Access Button"; pixel_x = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/airlock/virology{ autoclose = 0; @@ -66865,7 +66837,7 @@ name = "Secure Armory Shutter Control"; pixel_x = 7; pixel_y = -28; - req_access_txt = "3" + req_access = list(3) }, /obj/structure/rack, /obj/item/storage/toolbox/mechanical, @@ -67186,7 +67158,7 @@ autolink_id = "virolab_btn_int"; name = "Virology Lab Access Button"; pixel_y = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/airlock/virology{ autoclose = 0; @@ -68427,10 +68399,6 @@ icon_state = "whitegreen" }, /area/station/medical/virology) -"ghZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/fore) "git" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -68873,8 +68841,8 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_barrier/possibly_welded_airlock, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "gyp" = ( @@ -69963,7 +69931,7 @@ name = "exterior access button"; pixel_x = 20; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 2; @@ -70396,7 +70364,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/library) "huq" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "huN" = ( @@ -70548,7 +70516,7 @@ id = "justice_blast"; name = "Space Vent"; pixel_x = 32; - req_access_txt = "2" + req_access = list(2) }, /obj/structure/closet/secure_closet/injection, /obj/machinery/light{ @@ -70914,8 +70882,8 @@ int_button_link_id = "enginen_btn_int"; int_door_link_id = "enginen_door_int"; pixel_y = -25; - req_access_txt = "10;13"; - vent_link_id = "enginen_vent" + vent_link_id = "enginen_vent"; + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -71516,7 +71484,6 @@ }, /area/station/hallway/secondary/exit) "ibR" = ( -/obj/structure/rack, /obj/item/gun/energy/gun{ pixel_x = 3; pixel_y = 3 @@ -71532,6 +71499,7 @@ pixel_x = -3; pixel_y = -3 }, +/obj/structure/gunrack, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "ibT" = ( @@ -73048,8 +73016,8 @@ }, /area/station/hallway/primary/central/nw) "iXL" = ( -/obj/structure/rack, /obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "iXM" = ( @@ -73334,7 +73302,7 @@ }, /area/station/engineering/atmos) "jhk" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "jhr" = ( @@ -74539,7 +74507,7 @@ name = "interior access button"; pixel_x = -20; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -74626,7 +74594,7 @@ id = "cell3lockdown"; name = "Cell Lockdown"; pixel_y = 32; - req_access_txt = "2" + req_access = list(2) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -75021,32 +74989,31 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) "kii" = ( -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, -/obj/item/storage/box/tranquilizer, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 3; pixel_y = 3 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel, /area/station/security/armory/secure) "kiC" = ( @@ -75086,7 +75053,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "kju" = ( @@ -76271,7 +76238,7 @@ int_door_link_id = "virolab_door_int"; name = "Virology Lab Access Console"; pixel_x = -24; - req_one_access_txt = "39" + req_access = list(39) }, /obj/item/kirbyplants, /turf/simulated/floor/plasteel{ @@ -76665,7 +76632,7 @@ id = "paramedic"; name = "Garage Door Control"; pixel_x = -24; - req_access_txt = "66" + req_access = list(66) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard_medi"; @@ -76735,7 +76702,7 @@ /turf/simulated/floor/plating, /area/station/science/server) "llm" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -76835,7 +76802,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) "lnY" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fsmaint) "loX" = ( @@ -77338,7 +77305,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "lAG" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "lAO" = ( @@ -77676,7 +77643,7 @@ }, /area/station/hallway/secondary/entry/south) "lMM" = ( -/obj/effect/spawner/random_barrier/wall_probably, +/obj/effect/spawner/random/barrier/wall_probably, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "lNF" = ( @@ -77777,7 +77744,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/control) "lQl" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) "lQs" = ( @@ -79061,7 +79028,6 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/port2) "mEk" = ( -/obj/structure/rack, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/item/gun/energy/disabler{ pixel_x = 3; @@ -79072,6 +79038,7 @@ pixel_x = -3; pixel_y = -3 }, +/obj/structure/gunrack, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "mEu" = ( @@ -79130,7 +79097,7 @@ /turf/simulated/floor/plating, /area/station/science/toxins/launch) "mHK" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/structure/barricade/wooden, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/simulated/floor/plating, @@ -79454,7 +79421,7 @@ name = "Turbine Access Console"; pixel_x = 8; pixel_y = -26; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -79466,7 +79433,7 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -36; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control{ id = "auxincineratorvent"; @@ -80320,7 +80287,6 @@ /obj/structure/sign/poster/official/cleanliness{ pixel_y = 32 }, -/obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /area/station/security/permabrig) "nlo" = ( @@ -82321,7 +82287,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "osF" = ( @@ -82419,14 +82385,14 @@ name = "Kitchen Bar Shutters Control"; pixel_x = 6; pixel_y = 24; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control{ id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = -8; pixel_y = 24; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -82905,7 +82871,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/science/xenobiology) "oJY" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint) "oKa" = ( @@ -83410,7 +83376,7 @@ id = "sr1"; pixel_x = -24; pixel_y = -7; - req_access_txt = "45" + req_access = list(45) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -83608,10 +83574,6 @@ /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, /area/station/maintenance/port) -"pcm" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/service/hydroponics) "pcr" = ( /obj/effect/spawner/window/grilled, /turf/simulated/floor/plating, @@ -85212,6 +85174,12 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) +"pXV" = ( +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/engineering/atmos) "pYb" = ( /obj/structure/flora/grass/jungle, /turf/simulated/floor/plating, @@ -85947,7 +85915,6 @@ }, /area/station/medical/storage) "qys" = ( -/obj/structure/table/glass, /obj/item/storage/box/syringes{ pixel_x = 4; pixel_y = 4 @@ -85957,6 +85924,7 @@ name = "east bump"; pixel_x = 28 }, +/obj/structure/shelf/medbay, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -86768,7 +86736,7 @@ dir = 4; id = "qm"; pixel_x = -28; - req_access_txt = "41" + req_access = list(41) }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -87833,7 +87801,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/west) "ryp" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/starboard) "ryz" = ( @@ -88531,10 +88499,11 @@ /turf/simulated/floor/carpet, /area/station/science/robotics/showroom) "rUU" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" }, -/turf/simulated/floor/light, /area/station/engineering/atmos) "rVB" = ( /obj/structure/table/reinforced, @@ -90680,7 +90649,7 @@ /turf/simulated/floor/plasteel/white, /area/station/science/research) "sRU" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/library) "sSf" = ( @@ -92821,14 +92790,14 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = 25; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/button/windowtint{ dir = 8; id = "CMO"; pixel_x = 24; pixel_y = 8; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/light_switch{ dir = 8; @@ -92840,7 +92809,7 @@ id = "Biohazard_medi"; name = "Medical Quarantine"; pixel_x = 35; - req_access_txt = "40" + req_access = list(40) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -92946,7 +92915,7 @@ /turf/simulated/floor/plasteel/grimy, /area/station/service/chapel/office) "ugI" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "ugQ" = ( @@ -94210,8 +94179,8 @@ int_button_link_id = "engines_btn_int"; int_door_link_id = "engines_door_int"; pixel_y = 25; - req_access_txt = "10;13"; - vent_link_id = "engines_vent" + vent_link_id = "engines_vent"; + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -95004,6 +94973,11 @@ /obj/item/weldingtool/research, /turf/simulated/floor/plasteel/white, /area/station/science/explab) +"vys" = ( +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/storage, +/turf/simulated/floor/plating, +/area/station/maintenance/port) "vyO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -97610,7 +97584,7 @@ name = "interior access button"; pixel_x = -20; pixel_y = -20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -97863,7 +97837,7 @@ }, /area/station/security/permabrig) "xbW" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/aft) "xcs" = ( @@ -98431,6 +98405,17 @@ icon_state = "redyellowfull" }, /area/station/medical/break_room) +"xtw" = ( +/obj/machinery/door_control{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = 24; + pixel_y = -3; + req_access = list(31) + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/plating, +/area/station/supply/warehouse) "xtS" = ( /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, @@ -98455,7 +98440,7 @@ /turf/simulated/floor/plasteel/white, /area/station/medical/virology) "xtZ" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/library) "xuv" = ( @@ -98479,7 +98464,7 @@ name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -98487,14 +98472,14 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; pixel_x = -2; pixel_y = -36; - req_access_txt = "3" + req_access = list(3) }, /obj/structure/cable{ d1 = 4; @@ -98848,7 +98833,7 @@ }, /area/station/medical/medbay) "xFW" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/aft) "xFZ" = ( @@ -119857,7 +119842,7 @@ cie cie cie bXU -jJj +vys drn dhG cHA @@ -124173,11 +124158,11 @@ aSD iYX aVF ban -dnW +ban tNx lth fgF -dnW +ban wKG lfU aYt @@ -124687,12 +124672,12 @@ aSD aUc aVF ban +pXV ban ban ban ban -ban -jgG +dnW ban biQ bkC @@ -125972,11 +125957,11 @@ aSD aUc aVF jgG -rUU +jgG iUf iUf iUf -dnW +ban nae ban aZm @@ -126486,12 +126471,12 @@ aSH aUd aVF jVW +rUU beJ beJ beJ beJ -beJ -beJ +rUU bhk biU bkJ @@ -132145,7 +132130,7 @@ aor aor tGh mui -pcm +baF baF baF baF @@ -132896,7 +132881,7 @@ aAp awX abj aRu -ghZ +awX aFq aVK azb @@ -133412,7 +133397,7 @@ gAL abj aVK qZq -ghZ +awX aDt lfg lfg @@ -134427,7 +134412,7 @@ apM aqJ arB aoo -atq +aVK aVK auW awa @@ -142657,7 +142642,7 @@ axm axm axt kXQ -azF +xtw aAR aCH aCH @@ -144964,7 +144949,7 @@ axm arj amG amG -auO +axm apo avq axm @@ -149655,7 +149640,7 @@ bYM bYM bYM sTk -euK +bYM cnP coS cqy diff --git a/_maps/map_files/stations/emeraldstation.dmm b/_maps/map_files/stations/emeraldstation.dmm index 7e2d12d1d425..28e2d2046c1d 100644 --- a/_maps/map_files/stations/emeraldstation.dmm +++ b/_maps/map_files/stations/emeraldstation.dmm @@ -38,14 +38,14 @@ id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = -24; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/door_control{ id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 7; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/computer/security/telescreen/engine, /turf/simulated/floor/plasteel{ @@ -299,7 +299,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) "aeo" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /obj/effect/spawner/random_spawners/wall_rusted_maybe, /turf/simulated/wall, /area/station/maintenance/dorms/starboard) @@ -971,7 +971,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/dorms/fore) @@ -1320,7 +1320,7 @@ }, /area/station/science/research) "aok" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint2) "aor" = ( @@ -1612,13 +1612,12 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "aqN" = ( -/obj/structure/rack, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag{ pixel_y = -3; pixel_x = -3 }, @@ -1626,6 +1625,8 @@ dir = 1; layer = 2.9 }, +/obj/item/storage/fancy/shell/tranquilizer, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -1697,22 +1698,22 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -24; - req_access_txt = "40"; - pixel_y = 24 + pixel_y = 24; + req_access = list(40) }, /obj/machinery/door_control{ id = "Biohazard_medi"; name = "Medical Quarantine"; pixel_x = -24; - req_access_txt = "40"; - pixel_y = 33 + pixel_y = 33; + req_access = list(40) }, /obj/machinery/button/windowtint{ id = "CMO"; pixel_x = -23; pixel_y = 42; - req_access_txt = "40"; - dir = 4 + dir = 4; + req_access = list(40) }, /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners"; @@ -2217,8 +2218,8 @@ /obj/machinery/access_button{ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; - req_access_txt = "32"; - pixel_x = 24 + pixel_x = 24; + req_access = list(32) }, /obj/machinery/light{ dir = 4 @@ -2320,8 +2321,8 @@ id = "disvent"; name = "Incinerator Vent Control"; pixel_y = -24; - req_access_txt = "12"; - pixel_x = 26 + pixel_x = 26; + req_access = list(12) }, /turf/simulated/floor/plating, /area/station/maintenance/incinerator) @@ -2418,7 +2419,7 @@ autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; pixel_x = -24; - req_access_txt = "39" + req_access = list(39) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -2943,12 +2944,6 @@ pixel_y = -4; pixel_x = -17 }, -/obj/machinery/light_switch{ - dir = 8; - name = "east bump"; - pixel_x = 24; - pixel_y = -5 - }, /obj/structure/disposalpipe/trunk{ dir = 8 }, @@ -3083,10 +3078,6 @@ icon_state = "dark" }, /area/station/telecomms/computer) -"aGa" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/apmaint) "aGb" = ( /obj/machinery/camera{ c_tag = "Central Hallway North"; @@ -3781,7 +3772,7 @@ }, /area/station/maintenance/apmaint) "aMQ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -4269,7 +4260,7 @@ /turf/simulated/floor/engine, /area/station/engineering/engine/supermatter) "aRk" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/solar_maintenance/fore_port) "aRm" = ( @@ -4329,7 +4320,7 @@ /turf/simulated/floor/wood, /area/station/service/library) "aRD" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/dorms/fore) "aRO" = ( @@ -4639,10 +4630,6 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/west) -"aVo" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall/r_wall, -/area/station/science/server) "aVp" = ( /obj/structure/closet/emcloset, /turf/simulated/floor/plasteel{ @@ -4898,7 +4885,7 @@ id = "CE"; pixel_x = -8; pixel_y = 24; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/button/windowtint{ dir = 4; @@ -4906,7 +4893,7 @@ pixel_x = -24; pixel_y = 9; range = 12; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/light_switch{ dir = 4; @@ -5128,7 +5115,7 @@ }, /area/station/turret_protected/ai) "aYL" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -5701,7 +5688,7 @@ }, /area/station/supply/expedition) "beq" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -5993,7 +5980,7 @@ normaldoorcontrol = 1; pixel_x = 37; pixel_y = -25; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/door_control{ desc = "A remote control switch for the brig foyer."; @@ -6002,7 +5989,7 @@ normaldoorcontrol = 1; pixel_x = 27; pixel_y = -25; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ icon_state = "darkredfull" @@ -6023,7 +6010,7 @@ /turf/simulated/floor/wood, /area/station/service/bar) "bhp" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/abandoned_office) "bhq" = ( @@ -6626,7 +6613,7 @@ }, /area/station/service/hydroponics) "bmZ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "bnc" = ( @@ -6787,7 +6774,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "boC" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/engineering/secure_storage) "boD" = ( @@ -6972,7 +6959,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "bpT" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -7372,7 +7359,7 @@ "btt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/junction{ dir = 1 @@ -8762,8 +8749,8 @@ /obj/machinery/door_control{ id = "paramedic"; name = "Garage Door Control"; - req_access_txt = "66"; - pixel_x = 24 + pixel_x = 24; + req_access = list(66) }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ @@ -9614,7 +9601,7 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bMX" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/starboard) "bNa" = ( @@ -9904,7 +9891,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "bPz" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/starboard) "bPA" = ( @@ -10437,7 +10424,7 @@ }, /area/station/science/break_room) "bTR" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/aft2) @@ -10880,7 +10867,7 @@ name = "AI Chamber Turret Control"; pixel_x = 5; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/flasher{ id = "AI"; @@ -11153,7 +11140,6 @@ }, /area/station/hallway/secondary/garden) "cbf" = ( -/obj/structure/dispenser/oxygen, /obj/machinery/firealarm/directional/north, /obj/machinery/camera{ c_tag = "Brig Secure Armory North" @@ -11174,7 +11160,7 @@ }, /area/station/engineering/gravitygenerator) "cbp" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/random{ pixel_x = 32 @@ -11509,8 +11495,8 @@ /obj/machinery/access_button{ autolink_id = "engsm_btn_ext"; name = "Supermatter Access Button"; - req_access_txt = "32"; - pixel_x = -24 + pixel_x = -24; + req_access = list(32) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -11919,7 +11905,7 @@ id = "xenobio3"; name = "Chamber 3 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -12100,7 +12086,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/apmaint2) "ckV" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -12138,7 +12124,7 @@ }, /area/station/command/bridge) "cln" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/aft) "clo" = ( @@ -12158,7 +12144,7 @@ /area/station/maintenance/asmaint) "cly" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/hallway/primary/central/ne) "clF" = ( @@ -12283,7 +12269,7 @@ }, /area/station/medical/virology) "cmE" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -13173,7 +13159,7 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/tools/auxiliary) "cvT" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -13422,12 +13408,12 @@ "cyf" = ( /obj/machinery/airlock_controller/air_cycler{ pixel_x = 25; - req_access_txt = "10;13"; vent_link_id = "eng_vent"; ext_door_link_id = "eng_door_ext"; int_door_link_id = "eng_door_int"; ext_button_link_id = "eng_btn_ext"; - int_button_link_id = "eng_btn_int" + int_button_link_id = "eng_btn_int"; + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -13706,7 +13692,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "cBD" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "cBH" = ( @@ -13739,7 +13725,7 @@ name = "Research and Development Lab Shutters Control"; pixel_x = 24; pixel_y = 23; - req_access_txt = "47" + req_access = list(47) }, /turf/simulated/floor/plasteel{ dir = 5; @@ -13826,7 +13812,7 @@ /turf/simulated/floor/engine, /area/station/engineering/engine) "cCG" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/dorms/fore) @@ -15019,6 +15005,14 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/east) +"cOV" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/landmark/spawner/late/crew, +/obj/machinery/requests_console/directional/east, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/arrival/station) "cOY" = ( /obj/machinery/economy/vending/wallmed/directional/east, /turf/simulated/floor/plasteel{ @@ -15067,7 +15061,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cPy" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/dorms/starboard) @@ -15129,7 +15123,7 @@ }, /area/station/science/research) "cPS" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/structure/cable{ @@ -15512,7 +15506,6 @@ }, /obj/structure/disposalpipe/sortjunction/reversed{ dir = 8; - req_access_txt = null; sort_type_txt = "1" }, /turf/simulated/floor/plasteel, @@ -16836,10 +16829,6 @@ icon_state = "whitepurple" }, /area/station/science/xenobiology) -"dhk" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/security/fore) "dht" = ( /obj/structure/cable{ d1 = 1; @@ -16896,6 +16885,13 @@ }, /turf/simulated/floor/wood, /area/station/service/library) +"dhN" = ( +/obj/structure/chair/sofa/bench{ + dir = 1; + cover_color = "#85130b" + }, +/turf/simulated/floor/plasteel, +/area/station/hallway/primary/starboard) "dhP" = ( /obj/structure/computerframe{ dir = 4 @@ -17802,7 +17798,7 @@ "dqX" = ( /obj/structure/chair/sofa, /obj/effect/landmark/start/assistant, -/obj/structure/sign/poster/official/random{ +/obj/machinery/computer/security/telescreen/entertainment{ pixel_y = 32 }, /turf/simulated/floor/carpet, @@ -18748,7 +18744,7 @@ /area/station/hallway/primary/central/se) "dzk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_starboard) "dzA" = ( @@ -18800,7 +18796,7 @@ }, /area/station/service/kitchen) "dAe" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -18989,7 +18985,7 @@ id = "xenobio4"; name = "Chamber 4 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/item/radio/intercom{ name = "west bump"; @@ -19330,7 +19326,7 @@ /turf/simulated/floor/engine, /area/station/engineering/engine) "dEV" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -20298,7 +20294,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/north) "dOx" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/alarm/directional/east, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) @@ -20715,7 +20711,7 @@ }, /area/station/public/shops) "dTb" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -20990,7 +20986,7 @@ autolink_id = "eng_btn_int"; pixel_x = -22; pixel_y = -20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -22028,7 +22024,7 @@ /turf/simulated/floor/wood, /area/station/public/dorms) "ehO" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -22249,7 +22245,7 @@ }, /area/station/security/processing) "ejV" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -23285,11 +23281,6 @@ icon_state = "yellowcorner" }, /area/station/engineering/atmos/storage) -"etY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/wall_rusted_maybe, -/turf/simulated/wall, -/area/station/maintenance/abandonedbar) "eue" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -23329,7 +23320,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) "euu" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/abandonedbar) "euA" = ( @@ -23593,7 +23584,7 @@ id = "xenobio5"; name = "Chamber 5 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -23648,11 +23639,6 @@ }, /turf/simulated/wall, /area/station/engineering/equipmentstorage) -"ewY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/fungus_maybe, -/turf/simulated/wall, -/area/station/maintenance/abandonedbar) "exr" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, @@ -23770,13 +23756,8 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/carpet, /area/station/command/office/hop) -"eyn" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall/r_wall, -/area/station/maintenance/security/aft_starboard) "eyo" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) @@ -24768,8 +24749,7 @@ /area/station/engineering/break_room/secondary) "eHF" = ( /obj/machinery/computer/prisoner{ - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -25261,9 +25241,9 @@ id = "Prison Perma Cell 3"; name = "Cell Lockdown"; pixel_y = 31; - req_access_txt = "2"; specialfunctions = 4; - normaldoorcontrol = 1 + normaldoorcontrol = 1; + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -26185,7 +26165,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "eVV" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -26418,7 +26398,7 @@ }, /area/station/medical/virology) "eYc" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -26469,7 +26449,7 @@ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; pixel_x = -24; - req_one_access_txt = "18" + req_access = list(18) }, /turf/simulated/floor/plasteel, /area/station/ai_monitored/storage/eva) @@ -26621,9 +26601,9 @@ id = "Prison Perma Cell 1"; name = "Cell Lockdown"; pixel_y = 31; - req_access_txt = "2"; specialfunctions = 4; - normaldoorcontrol = 1 + normaldoorcontrol = 1; + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -26784,7 +26764,7 @@ /area/station/engineering/atmos) "faA" = ( /obj/effect/decal/cleanable/glass, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -27571,7 +27551,7 @@ ext_button_link_id = "engsm_btn_ext"; int_button_link_id = "engsm_btn_int"; pixel_x = 22; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -27689,7 +27669,7 @@ }, /area/station/medical/reception) "fis" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/electrical) "fiv" = ( @@ -29025,11 +29005,11 @@ name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; - req_access_txt = "12"; ext_door_link_id = "turbine_door_ext"; int_door_link_id = "turbine_door_int"; ext_button_link_id = "turbine_btn_ext"; - int_button_link_id = "turbine_btn_int" + int_button_link_id = "turbine_btn_int"; + req_access = list(12) }, /obj/machinery/atmospherics/binary/pump/on, /turf/simulated/floor/plasteel{ @@ -29149,7 +29129,7 @@ name = "processing tint control"; pixel_x = -6; pixel_y = 24; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/light_switch{ name = "north bump"; @@ -29458,7 +29438,7 @@ /turf/simulated/floor/wood, /area/station/service/clown) "fxy" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "fxz" = ( @@ -30023,7 +30003,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "fDf" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/abandoned_garden) "fDi" = ( @@ -30122,7 +30102,7 @@ /turf/simulated/floor/wood, /area/station/security/permabrig) "fEp" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -30225,7 +30205,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "fFW" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "trash spawner" @@ -30345,7 +30325,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/west) "fGG" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -30505,7 +30485,7 @@ /turf/space, /area/station/engineering/solar/aft_starboard) "fIk" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "fIl" = ( @@ -30816,7 +30796,7 @@ /turf/simulated/floor/wood, /area/station/public/vacant_office) "fKS" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -31319,7 +31299,7 @@ }, /area/station/security/permabrig) "fOz" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -31399,8 +31379,7 @@ "fPs" = ( /obj/machinery/computer/prisoner{ dir = 8; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -32821,7 +32800,7 @@ }, /area/station/public/dorms) "gez" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/generic, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -33540,7 +33519,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/random{ pixel_y = -32 @@ -35412,11 +35391,11 @@ name = "Incinerator Access Console"; pixel_x = 6; pixel_y = -25; - req_access_txt = "12"; ext_door_link_id = "incinerator_door_ext"; int_door_link_id = "incinerator_door_int"; ext_button_link_id = "incinerator_btn_ext"; - int_button_link_id = "incinerator_btn_int" + int_button_link_id = "incinerator_btn_int"; + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -35653,11 +35632,6 @@ /obj/machinery/hydroponics/constructable, /turf/simulated/floor/plasteel, /area/station/service/hydroponics) -"gFS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/wall_rusted_maybe, -/turf/simulated/wall, -/area/station/maintenance/starboard) "gFW" = ( /obj/structure/cable{ d1 = 1; @@ -35713,7 +35687,7 @@ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; pixel_x = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable{ d1 = 1; @@ -35816,7 +35790,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/dorms/port) "gHn" = ( @@ -35903,9 +35877,9 @@ /obj/machinery/button/windowtint{ id = "Surgery 1"; pixel_y = 8; - req_access_txt = "45"; dir = 4; - pixel_x = -24 + pixel_x = -24; + req_access = list(45) }, /obj/machinery/light_switch{ dir = 4; @@ -36434,7 +36408,7 @@ }, /area/station/security/prison/cell_block) "gNy" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) @@ -36986,7 +36960,7 @@ }, /area/station/medical/storage/secondary) "gTE" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/dorms/starboard) "gTI" = ( @@ -37331,7 +37305,7 @@ }, /area/station/legal/lawoffice) "gWM" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 2; @@ -37514,7 +37488,7 @@ /turf/simulated/floor/grass/no_creep, /area/station/medical/virology) "gYD" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/aft) "gYF" = ( @@ -37897,7 +37871,7 @@ /turf/simulated/floor/plating/airless, /area/station/turret_protected/aisat/interior) "hbO" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -37980,7 +37954,7 @@ d2 = 8; icon_state = "1-8" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) @@ -38235,6 +38209,7 @@ /area/station/maintenance/asmaint) "heu" = ( /obj/structure/closet/wardrobe/black, +/obj/machinery/light, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "hey" = ( @@ -38472,7 +38447,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/control) "hhe" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel{ icon_state = "redyellowfull" }, @@ -38641,7 +38616,7 @@ normaldoorcontrol = 1; pixel_x = 28; pixel_y = 17; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/door_control{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -38649,14 +38624,14 @@ name = "Prison Wing Lockdown"; pixel_x = 28; pixel_y = 7; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 28; pixel_y = -3; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -38706,7 +38681,7 @@ name = "Secure Armory Shutter Control"; pixel_x = -2; pixel_y = -36; - req_access_txt = "3" + req_access = list(3) }, /obj/machinery/door_control{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -38714,14 +38689,14 @@ name = "Prison Wing Lockdown"; pixel_x = -7; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 3; pixel_y = -28; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "darkred" @@ -40143,6 +40118,14 @@ icon_state = "cult" }, /area/station/legal/magistrate) +"hwo" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/landmark/spawner/late/crew, +/obj/structure/closet/walllocker/emerglocker/east, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/arrival/station) "hwx" = ( /obj/machinery/economy/vending/snack, /turf/simulated/floor/wood, @@ -40182,7 +40165,7 @@ /turf/simulated/floor/engine/xenobio, /area/station/science/xenobiology) "hwR" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/starboard) @@ -40553,13 +40536,12 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft2) "hAf" = ( -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -3; pixel_y = -3 }, @@ -40570,6 +40552,7 @@ dir = 1; layer = 2.9 }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -41245,14 +41228,14 @@ id = "hopqueueshutters"; name = "Queue Shutters"; pixel_x = -24; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door_control{ id = "hop"; name = "Privacy Shutters"; pixel_x = -24; pixel_y = -8; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -41974,7 +41957,7 @@ /obj/structure/barricade/wooden/crude, /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) @@ -42749,6 +42732,9 @@ /area/station/public/pet_store) "hWk" = ( /obj/structure/chair/sofa/bench/left, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/south) "hWv" = ( @@ -44178,7 +44164,7 @@ /turf/simulated/floor/carpet, /area/station/legal/courtroom) "ijv" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "ijw" = ( @@ -44198,7 +44184,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/storage) "ijF" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_starboard) @@ -45089,7 +45075,7 @@ }, /area/station/science/genetics) "itb" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/dorms/fore) "ith" = ( @@ -45550,6 +45536,9 @@ /obj/structure/chair{ dir = 4 }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -31 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkredcorners" @@ -45943,8 +45932,8 @@ id = "justice_blast"; name = "Space Vent"; pixel_x = 2; - req_access_txt = "2"; - pixel_y = 22 + pixel_y = 22; + req_access = list(2) }, /obj/structure/table/reinforced, /obj/item/taperecorder{ @@ -46260,7 +46249,7 @@ /turf/simulated/floor/plating, /area/station/security/permabrig) "iEr" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/spawner/random_spawners/oil_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -46628,7 +46617,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/control) "iHn" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) "iHq" = ( @@ -46915,7 +46904,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/dorms/port) @@ -47658,7 +47647,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "iQH" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -48155,7 +48144,7 @@ /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "iVl" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) "iVu" = ( @@ -49958,19 +49947,19 @@ id = "bridge blast entrance"; name = "Bridge Lobby Blast Door Control"; pixel_y = -9; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast south"; name = "Bridge Entrance Blast Door Control"; pixel_y = -1; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "bridge blast north"; name = "Bridge Space Blast Door Control"; pixel_y = 7; - req_one_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel, /area/station/command/bridge) @@ -50365,7 +50354,7 @@ autolink_id = "xeno_btn_int"; name = "Xenobiology Access Button"; pixel_x = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/machinery/door/airlock/research{ autoclose = 0; @@ -50923,7 +50912,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/lobby) "jwE" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/assembly_line) "jwF" = ( @@ -51188,8 +51177,8 @@ /obj/machinery/turretid/stun{ control_area = "\improper AI Satellite Atmospherics"; name = "AI Satellite Atmospherics Turret Control"; - req_access_txt = "75"; - pixel_y = -26 + pixel_y = -26; + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -51240,7 +51229,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/hallway/primary/central/ne) "jzG" = ( @@ -51351,7 +51340,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "jAl" = ( @@ -51361,7 +51350,7 @@ /turf/simulated/floor/grass, /area/station/hallway/secondary/exit) "jAv" = ( -/obj/effect/spawner/random_barrier/wall_probably, +/obj/effect/spawner/random/barrier/wall_probably, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -51840,8 +51829,8 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_y = -1; - req_access_txt = "10"; - pixel_x = -22 + pixel_x = -22; + req_access = list(10) }, /obj/machinery/atmospherics/pipe/simple/visible/green, /obj/effect/turf_decal/stripes/line{ @@ -52013,7 +52002,7 @@ }, /area/station/science/storage) "jFM" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 8; @@ -52293,7 +52282,7 @@ /obj/structure/sign/poster/contraband/random{ pixel_x = -32 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) "jIn" = ( @@ -52459,7 +52448,7 @@ }, /area/station/security/evidence) "jJF" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -52843,6 +52832,17 @@ slowdown = -0.3 }, /area/station/hallway/spacebridge/security/south) +"jNB" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/landmark/spawner/late/crew, +/obj/item/radio/intercom{ + name = "west bump"; + pixel_x = -28 + }, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/arrival/station) "jNM" = ( /obj/machinery/economy/vending/cigarette, /turf/simulated/floor/wood, @@ -53082,10 +53082,6 @@ /obj/structure/sign/explosives, /turf/simulated/floor/plating, /area/station/science/toxins/test) -"jPB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/starboard) "jPE" = ( /obj/structure/cable{ d1 = 1; @@ -53147,7 +53143,7 @@ /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_port) @@ -53574,7 +53570,7 @@ /turf/simulated/floor/carpet, /area/station/hallway/secondary/entry/lounge) "jUP" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) @@ -53778,7 +53774,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) "jWA" = ( @@ -54375,15 +54371,14 @@ "kcA" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/button/windowtint{ dir = 4; id = "IAA"; pixel_x = -24; pixel_y = 6; - req_access_txt = "38" + req_access = list(38) }, /obj/machinery/camera{ c_tag = "Internal Affairs Office"; @@ -54559,7 +54554,7 @@ }, /area/station/maintenance/apmaint) "kdV" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -54766,9 +54761,9 @@ id = "Prison Perma Cell 4"; name = "Cell Lockdown"; pixel_y = 31; - req_access_txt = "2"; specialfunctions = 4; - normaldoorcontrol = 1 + normaldoorcontrol = 1; + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -55598,7 +55593,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/dorms/fore) "koz" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/starboard) @@ -55715,7 +55710,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 9 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/landmark/damageturf, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_starboard) @@ -56400,9 +56395,9 @@ /obj/machinery/door_control{ id = "robotics_surgery"; name = "Robotics Privacy Shutters"; - req_access_txt = "29"; pixel_y = 24; - pixel_x = -24 + pixel_x = -24; + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -57221,7 +57216,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "kFs" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -57637,7 +57632,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) @@ -58373,7 +58368,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "kQk" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -58394,7 +58389,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fsmaint) "kQw" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -58583,7 +58578,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "kRC" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ dir = 1 }, @@ -58693,7 +58688,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "kTf" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/asmaint) "kTl" = ( @@ -59082,7 +59077,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "kXM" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/abandoned_garden) "kXZ" = ( @@ -59218,7 +59213,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft2) "kZk" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/hallway/primary/central/ne) "kZo" = ( @@ -59751,7 +59746,7 @@ }, /area/station/turret_protected/ai) "lfn" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) @@ -59959,18 +59954,6 @@ }, /turf/simulated/floor/plasteel, /area/station/security/permabrig) -"lhw" = ( -/obj/structure/closet/cardboard, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/door_control{ - id = "qm_warehouse"; - name = "Warehouse Door Control"; - pixel_x = -1; - pixel_y = 24; - req_access_txt = "31" - }, -/turf/simulated/floor/plasteel, -/area/station/supply/warehouse) "lhR" = ( /obj/item/decorations/sticky_decorations/flammable/singleeye{ pixel_y = 20 @@ -60056,7 +60039,7 @@ id = "HoS"; pixel_x = 7; pixel_y = -25; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/light_switch{ dir = 1; @@ -60403,14 +60386,14 @@ name = "Auxiliary Vent"; pixel_x = 6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/door_control{ id = "turbinevent"; name = "Turbine Vent"; pixel_x = -6; pixel_y = -24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/atmospherics/binary/pump/on{ dir = 1 @@ -60430,7 +60413,7 @@ }, /area/station/security/prison/cell_block) "llN" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/dorms/port) "llQ" = ( @@ -60791,7 +60774,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) "lpl" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/medical/morgue) "lpm" = ( @@ -60835,7 +60818,7 @@ name = "Engineering Lockdown"; pixel_x = 8; pixel_y = -7; - req_access_txt = "10" + req_access = list(10) }, /turf/simulated/wall/r_wall, /area/station/command/office/ce) @@ -61459,7 +61442,7 @@ /turf/simulated/floor/plating, /area/station/science/toxins/mixing) "lvf" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/aft) "lvl" = ( @@ -61497,8 +61480,8 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = 9; - req_access_txt = "74"; - pixel_y = 25 + pixel_y = 25; + req_access = list(74) }, /obj/machinery/light{ dir = 1 @@ -61801,7 +61784,7 @@ }, /area/station/medical/cloning) "lxY" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/asmaint) "lya" = ( @@ -61897,7 +61880,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "lyU" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/structure/disposalpipe/segment, @@ -62063,7 +62046,7 @@ }, /area/station/supply/lobby) "lzK" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -62594,7 +62577,7 @@ }, /area/station/engineering/atmos) "lEX" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/dorms/starboard) "lFb" = ( @@ -62684,8 +62667,7 @@ /area/station/command/bridge) "lFR" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/item/circuitboard/thermomachine{ pixel_x = -5 @@ -63407,7 +63389,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/security/aft_starboard) "lOB" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -63994,7 +63976,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "lVm" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -64650,7 +64632,7 @@ /area/station/public/dorms) "mcn" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel, /area/station/maintenance/fpmaint) "mct" = ( @@ -65738,7 +65720,7 @@ }, /area/station/command/office/cmo) "mmI" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "mmJ" = ( @@ -65937,7 +65919,7 @@ d2 = 4; icon_state = "2-4" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) @@ -66139,7 +66121,7 @@ /turf/simulated/floor/wood, /area/station/public/vacant_office) "mqJ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -67628,7 +67610,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "mGi" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -67771,7 +67753,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/ne) "mIg" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -68160,7 +68142,7 @@ control_area = "\improper AI Satellite Antechamber"; name = "AI Antechamber Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -68781,8 +68763,7 @@ "mSw" = ( /obj/machinery/computer/prisoner{ dir = 1; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /obj/item/radio/intercom{ name = "south bump"; @@ -69555,7 +69536,7 @@ control_area = "\improper AI Satellite Service"; name = "AI Satellite Service Bay Turret Control"; pixel_x = -29; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -69594,7 +69575,7 @@ /turf/simulated/floor/plasteel, /area/station/command/teleporter) "mZE" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/ne) "mZK" = ( @@ -69989,7 +69970,7 @@ }, /area/station/hallway/primary/central/sw) "ndJ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/landmark/burnturf, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) @@ -70379,7 +70360,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "ngX" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -71395,7 +71376,7 @@ }, /area/station/service/chapel) "nqq" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/aft2) "nqr" = ( @@ -71524,7 +71505,7 @@ name = "Chemistry Privacy Shutter Control"; pixel_x = -24; pixel_y = 24; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ @@ -72316,7 +72297,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "nzv" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/structure/barricade/wooden, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) @@ -72436,7 +72417,7 @@ "nAB" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plating, /area/station/service/chapel) @@ -72557,7 +72538,7 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/tools/auxiliary) "nBB" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 4 @@ -72946,7 +72927,7 @@ }, /area/station/supply/lobby) "nFE" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/dorms/fore) "nFI" = ( @@ -73101,8 +73082,8 @@ id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = 7; - req_access_txt = "56"; - pixel_y = 24 + pixel_y = 24; + req_access = list(56) }, /turf/simulated/floor/plasteel, /area/station/engineering/control) @@ -73181,8 +73162,8 @@ /obj/machinery/button/windowtint{ id = "Courtroom"; pixel_x = -6; - req_one_access_txt = "74;3"; - range = 10 + range = 10; + req_one_access = list(74,3) }, /obj/item/megaphone{ pixel_y = -11 @@ -73209,8 +73190,8 @@ name = "Court Entrance Control"; normaldoorcontrol = 1; pixel_x = 1; - req_access_txt = "74"; - pixel_y = 10 + pixel_y = 10; + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -74091,7 +74072,7 @@ }, /area/station/medical/medbay) "nOx" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -75142,8 +75123,7 @@ "nYy" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/light{ dir = 8 @@ -75496,7 +75476,7 @@ }, /area/station/security/permabrig) "oaV" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/aft2) "oaW" = ( @@ -76248,7 +76228,7 @@ /turf/simulated/floor/plating, /area/station/service/chapel/funeral) "ohZ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_starboard) "oic" = ( @@ -76531,6 +76511,9 @@ /area/station/maintenance/apmaint2) "okc" = ( /obj/item/kirbyplants, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 30 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" @@ -76915,7 +76898,7 @@ }, /area/station/public/sleep) "oni" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -77083,7 +77066,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) "ooR" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/security/aft_port) "ooY" = ( @@ -77509,7 +77492,7 @@ }, /area/station/service/kitchen) "osB" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -77687,9 +77670,9 @@ /obj/machinery/door_control{ id = "mechbay_inner"; name = "Inner Mech Bay Shutter Control"; - req_access_txt = "29"; pixel_y = -24; - pixel_x = 25 + pixel_x = 25; + req_access = list(29) }, /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plasteel{ @@ -79000,8 +78983,8 @@ }, /area/station/security/prisonershuttle) "oIR" = ( -/obj/machinery/smartfridge, /obj/machinery/door/firedoor, +/obj/machinery/smartfridge/food/chef, /turf/simulated/floor/plasteel, /area/station/service/hydroponics) "oIU" = ( @@ -79071,7 +79054,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/ne) "oJh" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/solar_maintenance/fore_port) "oJl" = ( @@ -79136,7 +79119,7 @@ /turf/simulated/floor/lava/plasma/fuming, /area/station/engineering/atmos/asteroid_core) "oKb" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -79684,7 +79667,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/south) "oNO" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/blood/drip, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) @@ -80934,9 +80917,9 @@ /obj/machinery/button/windowtint{ id = "Surgery 2"; pixel_y = 8; - req_access_txt = "45"; dir = 8; - pixel_x = 24 + pixel_x = 24; + req_access = list(45) }, /obj/machinery/light_switch{ dir = 8; @@ -80984,7 +80967,7 @@ /turf/simulated/floor/carpet, /area/station/security/detective) "oYL" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, @@ -81186,7 +81169,7 @@ }, /area/station/science/xenobiology) "pav" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, @@ -81613,7 +81596,7 @@ }, /area/station/service/kitchen) "peH" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/structure/disposalpipe/segment, @@ -81822,7 +81805,7 @@ }, /area/station/hallway/primary/fore/north) "pgk" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -81860,7 +81843,7 @@ /turf/simulated/floor/plating, /area/station/engineering/ai_transit_tube) "pgr" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -82687,7 +82670,7 @@ id = "teleshutter"; name = "Teleporter Shutters Access Control"; pixel_x = 24; - req_one_access_txt = "62" + req_access = list(62) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -83223,7 +83206,7 @@ /turf/simulated/floor/carpet, /area/station/hallway/primary/central/se) "puz" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -83636,7 +83619,7 @@ }, /area/station/medical/reception) "pzm" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint) "pzs" = ( @@ -83694,7 +83677,7 @@ /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_port) "pAf" = ( @@ -83865,6 +83848,13 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) +"pBn" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 1; + cover_color = "#85130b" + }, +/turf/simulated/floor/plasteel, +/area/station/hallway/primary/starboard) "pBo" = ( /turf/simulated/floor/engine, /area/station/science/explab/chamber) @@ -84621,7 +84611,7 @@ "pHY" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -84756,7 +84746,7 @@ /turf/simulated/floor/plating, /area/station/aisat/service) "pIP" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/aft) "pIU" = ( @@ -85221,7 +85211,7 @@ }, /area/station/turret_protected/aisat/interior) "pMM" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -85254,7 +85244,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/dorms/starboard) "pNl" = ( @@ -85630,7 +85620,7 @@ id = "Detective"; pixel_x = -8; pixel_y = 24; - req_access_txt = "4" + req_access = list(4) }, /obj/machinery/computer/med_data, /obj/machinery/light{ @@ -86352,7 +86342,7 @@ id = "xenobio6"; name = "Chamber 6 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" @@ -86393,7 +86383,7 @@ /turf/simulated/floor/wood, /area/station/service/bar) "pZQ" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "pZU" = ( @@ -86556,7 +86546,7 @@ }, /area/station/legal/courtroom) "qbz" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_port) "qbZ" = ( @@ -87236,7 +87226,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "qib" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) @@ -87929,7 +87919,7 @@ "qpR" = ( /obj/effect/decal/cleanable/shreds, /obj/item/airlock_electronics/destroyed, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -88096,7 +88086,7 @@ id = "xenobio1"; name = "Chamber 1 Containment Blast Door"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -89773,7 +89763,7 @@ /turf/simulated/floor/carpet, /area/station/medical/psych) "qIf" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/dorms/starboard) "qIk" = ( @@ -89991,10 +89981,6 @@ "qKo" = ( /turf/simulated/wall, /area/station/hallway/primary/central/north) -"qKt" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall/r_wall, -/area/station/maintenance/asmaint) "qKE" = ( /obj/structure/chair, /turf/simulated/floor/plasteel, @@ -90280,7 +90266,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/aft2) "qMW" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -90854,11 +90840,11 @@ /turf/simulated/floor/carpet, /area/station/hallway/secondary/entry/lounge) "qTo" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/aft) "qTH" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) "qTK" = ( @@ -90942,6 +90928,13 @@ /obj/structure/lattice, /turf/space, /area/space/nearstation) +"qUn" = ( +/obj/structure/chair/sofa, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet, +/area/station/public/dorms) "qUr" = ( /obj/effect/landmark/damageturf, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ @@ -91374,8 +91367,8 @@ name = "Jury Entrance Control"; normaldoorcontrol = 1; pixel_x = 1; - req_access_txt = "74"; - pixel_y = 10 + pixel_y = 10; + req_access = list(74) }, /obj/item/reagent_containers/glass/beaker/waterbottle{ pixel_x = 5 @@ -91439,7 +91432,7 @@ /turf/simulated/floor/plating, /area/station/security/warden) "qYA" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -92026,6 +92019,14 @@ /obj/effect/turf_decal/stripes/corner, /turf/simulated/floor/plating, /area/station/engineering/secure_storage) +"rcZ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/landmark/spawner/late/crew, +/obj/structure/closet/walllocker/emerglocker/west, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/arrival/station) "rdc" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -92134,7 +92135,7 @@ }, /area/station/medical/morgue) "reh" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fsmaint) "reu" = ( @@ -92300,7 +92301,7 @@ id = "xenobio2"; name = "Chamber 2 Containment Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -92435,7 +92436,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 8 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -93242,6 +93243,9 @@ /obj/structure/chair/sofa/bench/left{ dir = 4 }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -31 + }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/ne) "rnD" = ( @@ -93840,7 +93844,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/west) "rtG" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fpmaint) "rtR" = ( @@ -93916,7 +93920,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/dorms/port) "ruB" = ( @@ -94065,7 +94069,7 @@ }, /area/station/public/shops) "rvy" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "rvz" = ( @@ -94909,8 +94913,8 @@ /obj/machinery/door_control{ id = "mechbay_outer"; name = "Outer Mech Bay Shutters Control"; - req_access_txt = "29"; - pixel_y = 24 + pixel_y = 24; + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -95508,7 +95512,7 @@ id = "Interrogation"; name = "interrogation tint control"; pixel_x = -24; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -95552,7 +95556,7 @@ }, /area/station/science/storage) "rKe" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -95639,7 +95643,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "rKO" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint2) @@ -95977,7 +95981,7 @@ name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 5; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light{ dir = 8 @@ -96109,6 +96113,9 @@ c_tag = "Dormitories Lounge"; dir = 8 }, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, /turf/simulated/floor/wood, /area/station/public/dorms) "rOC" = ( @@ -96471,7 +96478,7 @@ name = "Atmospherics Lockdown"; pixel_x = -8; pixel_y = 10; - req_access_txt = "24" + req_access = list(24) }, /obj/item/book/manual/atmospipes, /obj/machinery/computer/security/telescreen/engine{ @@ -98863,7 +98870,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/security/fore) "snP" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -99303,7 +99310,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/dorms/starboard) "ssV" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /obj/effect/spawner/random_spawners/wall_rusted_maybe, /turf/simulated/wall, /area/station/maintenance/starboard) @@ -99359,7 +99366,7 @@ }, /area/station/medical/break_room) "stp" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/starboard) "stv" = ( @@ -99644,7 +99651,7 @@ name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; - req_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -99705,7 +99712,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "sww" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) @@ -100056,7 +100063,7 @@ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; pixel_x = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -100294,7 +100301,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint2) "sBB" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) @@ -100927,9 +100934,9 @@ id = "Prison Perma Cell 2"; name = "Cell Lockdown"; pixel_y = 31; - req_access_txt = "2"; specialfunctions = 4; - normaldoorcontrol = 1 + normaldoorcontrol = 1; + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -101287,7 +101294,7 @@ /turf/simulated/floor/plasteel, /area/station/command/office/ce) "sKI" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -101969,7 +101976,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "sRI" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "sRJ" = ( @@ -102119,7 +102126,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "sTJ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -102241,6 +102248,12 @@ /area/station/legal/courtroom/gallery) "sUJ" = ( /obj/item/kirbyplants, +/obj/machinery/light_switch{ + dir = 4; + name = "west bump"; + pixel_x = -24; + pixel_y = 5 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "yellow" @@ -102333,7 +102346,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft2) "sVz" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -102448,11 +102461,11 @@ /obj/machinery/airlock_controller/access_controller{ name = "Virology Lab Access Console"; pixel_y = 24; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; - int_button_link_id = "viro_btn_int" + int_button_link_id = "viro_btn_int"; + req_access = list(39) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -102725,7 +102738,7 @@ }, /area/station/medical/virology/lab) "sYo" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/service/library) "sYy" = ( @@ -103198,7 +103211,7 @@ /turf/simulated/floor/grass, /area/station/public/park) "tcL" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/security/fore) "tdh" = ( @@ -103692,7 +103705,7 @@ }, /area/station/supply/storage) "thk" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -103808,7 +103821,7 @@ /turf/space, /area/space/nearstation) "tiu" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /obj/effect/turf_decal/siding{ dir = 9 }, @@ -104996,7 +105009,7 @@ /turf/simulated/floor/engine/xenobio, /area/station/science/xenobiology) "tsp" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, @@ -105286,7 +105299,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) "tuC" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -106087,7 +106100,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "tEl" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -106382,6 +106395,17 @@ icon_state = "darkbluecorners" }, /area/station/medical/storage/secondary) +"tGI" = ( +/obj/item/radio/intercom{ + name = "south bump"; + pixel_y = -28 + }, +/obj/structure/chair/sofa/bench/left{ + dir = 1; + cover_color = "#85130b" + }, +/turf/simulated/floor/plasteel, +/area/station/hallway/primary/starboard) "tGJ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -106503,7 +106527,7 @@ /turf/simulated/floor/grass, /area/station/security/permabrig) "tIC" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "tID" = ( @@ -106904,7 +106928,7 @@ }, /area/station/medical/cloning) "tLi" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "tLr" = ( @@ -106954,7 +106978,7 @@ }, /area/station/telecomms/computer) "tMm" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_port) "tMn" = ( @@ -107466,7 +107490,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/dorms/starboard) "tSJ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 2; d2 = 4; @@ -107738,7 +107762,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/aft) "tUA" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/supply/storage) "tUI" = ( @@ -107837,7 +107861,7 @@ /turf/simulated/floor/plating, /area/station/engineering/engine) "tVF" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/dorms/starboard) @@ -108176,7 +108200,7 @@ /area/station/medical/cloning) "tYb" = ( /obj/effect/landmark/damageturf, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -108246,12 +108270,15 @@ name = "west bump"; pixel_x = -28 }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, /area/station/public/dorms) "tYI" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -108441,9 +108468,9 @@ /obj/machinery/button/windowtint{ pixel_x = 24; id = "qm"; - req_access_txt = "41"; dir = 8; - pixel_y = 5 + pixel_y = 5; + req_access = list(41) }, /obj/machinery/light_switch{ dir = 8; @@ -108876,7 +108903,7 @@ /turf/simulated/floor/plasteel, /area/station/public/park) "uej" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/engineering/tech_storage) "uen" = ( @@ -109599,7 +109626,7 @@ }, /area/station/hallway/secondary/entry/lounge) "ulr" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -109654,7 +109681,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "umn" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -109787,7 +109814,7 @@ }, /area/station/service/theatre) "unV" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -109927,7 +109954,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) "uph" = ( @@ -110839,7 +110866,7 @@ }, /area/station/science/lobby) "uye" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fsmaint2) "uyf" = ( @@ -111236,7 +111263,7 @@ }, /area/station/hallway/primary/central/ne) "uBC" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, @@ -111638,7 +111665,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/miningdock) "uFA" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "uFC" = ( @@ -111915,6 +111942,7 @@ /area/station/hallway/primary/fore/north) "uHu" = ( /obj/structure/closet/wardrobe/mixed, +/obj/machinery/light, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "uHy" = ( @@ -111954,7 +111982,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/east) "uHL" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -113235,7 +113263,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/dorms/starboard) "uTQ" = ( @@ -113995,7 +114023,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/storage) "vbP" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "vbS" = ( @@ -114360,7 +114388,7 @@ /turf/simulated/floor/grass, /area/station/hallway/secondary/exit) "vfZ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ icon_state = "redyellowfull" }, @@ -114932,7 +114960,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint2) "vlS" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/apmaint) "vlT" = ( @@ -115849,8 +115877,8 @@ /obj/machinery/access_button{ autolink_id = "engsm_btn_int"; name = "Supermatter Access Button"; - req_access_txt = "32"; - pixel_x = -24 + pixel_x = -24; + req_access = list(32) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -115882,7 +115910,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/east) "vuF" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/dorms/fore) @@ -117085,7 +117113,7 @@ }, /area/station/security/checkpoint/secondary) "vGd" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -117920,7 +117948,7 @@ }, /area/station/service/hydroponics) "vMJ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -120659,7 +120687,7 @@ }, /area/station/service/bar) "wno" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_port) @@ -120902,7 +120930,7 @@ }, /area/station/medical/sleeper) "woU" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -121012,7 +121040,7 @@ }, /area/station/maintenance/asmaint) "wpY" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/decorations/sticky_decorations/flammable/tinsel/halloween{ pixel_y = 20 }, @@ -121560,8 +121588,6 @@ }, /area/station/public/construction) "wwv" = ( -/obj/structure/rack, -/obj/item/storage/box/tranquilizer, /obj/structure/window/reinforced{ dir = 1; layer = 2.9 @@ -121569,6 +121595,7 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/structure/dispenser/oxygen, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -121946,7 +121973,7 @@ }, /area/station/engineering/atmos/asteroid_filtering) "wAK" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/service/janitor) "wAM" = ( @@ -122006,7 +122033,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "wCd" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -122352,7 +122379,7 @@ /area/station/hallway/primary/starboard/south) "wFX" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/item/ammo_box/shotgun/beanbag, /turf/simulated/floor/wood, @@ -122423,7 +122450,7 @@ }, /area/station/medical/virology) "wHk" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "wHn" = ( @@ -122605,7 +122632,7 @@ }, /area/station/engineering/atmos/transit) "wJj" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/dorms/port) @@ -122725,7 +122752,7 @@ name = "Secure Armory Shutter Control"; pixel_x = -24; pixel_y = -28; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" @@ -123107,7 +123134,7 @@ }, /area/station/science/genetics) "wNQ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; @@ -123450,7 +123477,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/incinerator) "wQC" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -124065,7 +124092,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "wXp" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/security/aft_starboard) "wXr" = ( @@ -124499,7 +124526,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "xbZ" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) "xcb" = ( @@ -124624,7 +124651,7 @@ /turf/simulated/floor/wood, /area/station/legal/courtroom/gallery) "xdA" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/engineering/gravitygenerator) "xdB" = ( @@ -124666,7 +124693,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/west) "xdQ" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/security/aft_starboard) "xdR" = ( @@ -124832,7 +124859,7 @@ /turf/simulated/floor/engine, /area/station/engineering/engine) "xfz" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -124966,7 +124993,7 @@ name = "Office Door"; normaldoorcontrol = 1; pixel_x = -8; - req_access_txt = "57" + req_access = list(57) }, /obj/item/pen{ pixel_x = -8; @@ -125508,14 +125535,14 @@ name = "Kitchen Diner Shutters Control"; pixel_x = 26; pixel_y = 7; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control{ id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = 26; pixel_y = -3; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -125963,7 +125990,7 @@ autolink_id = "eng_btn_ext"; pixel_x = -22; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/space, /area/space/nearstation) @@ -126027,7 +126054,7 @@ }, /area/station/security/permabrig) "xqe" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -126164,7 +126191,7 @@ /area/station/maintenance/dorms/starboard) "xrb" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -126213,14 +126240,14 @@ normaldoorcontrol = 1; pixel_x = -4; pixel_y = -4; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/door_control{ id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -4; pixel_y = 6; - req_access_txt = "30" + req_access = list(30) }, /obj/item/reagent_containers/drinks/coffee{ pixel_x = 8; @@ -126794,9 +126821,9 @@ /obj/machinery/door_control{ id = "robotics"; name = "Robotics Privacy Shutters"; - req_access_txt = "29"; pixel_y = 8; - pixel_x = 25 + pixel_x = 25; + req_access = list(29) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -127213,7 +127240,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/dorms/starboard) "xBo" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "xBs" = ( @@ -127368,10 +127395,6 @@ /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/grass, /area/station/public/dorms) -"xCE" = ( -/obj/effect/decal/cleanable/generic, -/turf/simulated/wall, -/area/station/maintenance/fsmaint) "xCI" = ( /obj/structure/closet/l3closet/janitor, /obj/machinery/light{ @@ -127405,7 +127428,7 @@ /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 4; @@ -128053,7 +128076,7 @@ /turf/simulated/floor/engine, /area/station/engineering/engine) "xJV" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -128363,7 +128386,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/security/fore) @@ -128396,7 +128419,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "xNz" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, @@ -128416,7 +128439,7 @@ /turf/simulated/floor/plasteel, /area/station/legal/courtroom) "xNN" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/security/aft_starboard) "xNP" = ( @@ -128761,6 +128784,18 @@ /obj/effect/spawner/random_spawners/oil_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) +"xRf" = ( +/obj/structure/closet/cardboard, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/door_control{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -1; + pixel_y = 24; + req_access = list(31) + }, +/turf/simulated/floor/plasteel, +/area/station/supply/warehouse) "xRh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ @@ -128817,7 +128852,7 @@ name = "AI Chamber Hallway Turret Control"; pixel_x = 24; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -128961,7 +128996,7 @@ /turf/simulated/floor/grass, /area/station/hallway/secondary/exit) "xTH" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -139037,8 +139072,8 @@ oQf oQf oQf oQf -aGa -aGa +oQf +oQf oQf oQf oQf @@ -148812,7 +148847,7 @@ qxw tKR svJ wRe -lhw +xRf gAx vTT mYq @@ -161187,10 +161222,10 @@ nIV tId jsx asq +rcZ tId tId -tId -jsx +jNB asq heu cJq @@ -162215,10 +162250,10 @@ nIV lAJ usj asq +hwo lAJ lAJ -lAJ -usj +cOV asq uHu cJq @@ -162886,7 +162921,7 @@ oGg mlh nYZ vAZ -eBG +qUn aAt dwn tVG @@ -170070,7 +170105,7 @@ oPy avl jIe ubU -xCE +gdv tLi mvJ kAO @@ -171316,8 +171351,8 @@ qNS qNS qNS qNS -dhk -dhk +cwI +cwI iOR dOx cjO @@ -171635,7 +171670,7 @@ dkG kyA uci kyA -cIa +tGI dws dws dws @@ -171892,7 +171927,7 @@ rSC uks uci kyA -kyA +dhN ajq aNu nRd @@ -172089,7 +172124,7 @@ vYn jIn lFR fGR -dhk +cwI cwI qmg fXf @@ -172149,7 +172184,7 @@ wBF kwm qHk kyA -kyA +pBn ajq aNu anY @@ -175523,7 +175558,7 @@ mlm rqT jCt txo -jPB +caq bXh nQD bsO @@ -178132,7 +178167,7 @@ ahk cXx nZP iLJ -aVo +xGq fOz nuJ fEa @@ -180153,7 +180188,7 @@ cAv wSV nrP ekk -gFS +cGm fIk stp caq @@ -182438,7 +182473,7 @@ aZh aZh mXw sAp -gFS +cGm xTH mwB jcy @@ -184052,7 +184087,7 @@ kTf pSv adX lGk -qKt +qsn qsn eak tbq @@ -184524,7 +184559,7 @@ aAN bMX iWS nFo -gFS +cGm iEK caq jnP @@ -185491,7 +185526,7 @@ kcF wYs alJ ipU -eyn +xNN ohZ cJE qKm @@ -186109,7 +186144,7 @@ vkZ ybH wTf het -etY +kdx kdx hST euu @@ -186366,7 +186401,7 @@ bAR hST hST lKD -ewY +euu wqs lpW hfF diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index 744fe6d45ab8..749a1eba6c9f 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -160,7 +160,7 @@ dir = 8; id = "Detective"; pixel_x = 24; - req_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -212,8 +212,7 @@ /obj/machinery/alarm/directional/west, /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -631,7 +630,7 @@ name = "exterior access button"; pixel_x = 25; pixel_y = 7; - req_access_txt = "75;13" + req_access = list(75,13) }, /turf/space, /area/space/nearstation) @@ -1395,7 +1394,7 @@ name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/driver_button{ id_tag = "trash"; @@ -1499,12 +1498,12 @@ /obj/machinery/airlock_controller/air_cycler{ pixel_x = -25; pixel_y = 4; - req_access_txt = "13"; vent_link_id = "arrivalsmaint_vent"; ext_door_link_id = "arrivalsmaint_door_ext"; int_door_link_id = "arrivalsmaint_door_int"; ext_button_link_id = "arrivalsmaint_btn_ext"; - int_button_link_id = "arrivalsmaint_btn_int" + int_button_link_id = "arrivalsmaint_btn_int"; + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -1779,7 +1778,7 @@ }, /area/station/engineering/solar/fore_port) "aon" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fore) "aou" = ( @@ -2222,7 +2221,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aqO" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) @@ -3202,7 +3201,7 @@ /turf/simulated/wall, /area/station/public/mrchangs) "avs" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "avv" = ( @@ -4095,7 +4094,7 @@ }, /area/station/command/office/captain/bedroom) "ayk" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "ayr" = ( @@ -4118,7 +4117,7 @@ /turf/simulated/floor/plating, /area/station/public/locker) "ayv" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/fsmaint) "ayx" = ( @@ -4169,7 +4168,7 @@ id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = 24; - req_access_txt = "31" + req_access = list(31) }, /obj/structure/cable{ d1 = 1; @@ -4415,7 +4414,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -4541,7 +4540,7 @@ }, /area/station/public/dorms) "aAf" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -4584,7 +4583,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "aAA" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fpmaint) "aAC" = ( @@ -4770,11 +4769,11 @@ }, /area/station/security/permabrig) "aBx" = ( -/obj/structure/rack, /obj/structure/reagent_dispensers/peppertank{ pixel_x = -32 }, /obj/item/gun/energy/ionrifle, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkred" @@ -5808,7 +5807,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) "aFM" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -5819,7 +5818,7 @@ }, /area/station/maintenance/fsmaint) "aFO" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fsmaint) "aFQ" = ( @@ -5853,7 +5852,6 @@ /turf/simulated/floor/plasteel, /area/station/engineering/control) "aGb" = ( -/obj/structure/table, /obj/effect/turf_decal/delivery/hollow, /obj/item/storage/belt/utility, /obj/item/storage/belt/utility, @@ -5861,6 +5859,7 @@ /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson, +/obj/structure/shelf/engineering, /turf/simulated/floor/plasteel, /area/station/engineering/control) "aGc" = ( @@ -6155,7 +6154,7 @@ id = "xenobio2"; name = "Xenobio Pen 2 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -6429,7 +6428,7 @@ /turf/simulated/floor/plasteel, /area/station/public/dorms) "aIo" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fsmaint) "aIp" = ( @@ -6829,7 +6828,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/fore/north) "aJl" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aJm" = ( @@ -7334,7 +7333,7 @@ /turf/simulated/floor/plating, /area/station/engineering/atmos/distribution) "aLc" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -7880,7 +7879,7 @@ /turf/simulated/floor/wood, /area/station/service/clown) "aMB" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -7944,7 +7943,6 @@ /turf/simulated/floor/plasteel, /area/station/public/construction) "aMN" = ( -/obj/structure/rack, /obj/item/gun/energy/gun{ pixel_y = 6 }, @@ -7952,6 +7950,7 @@ pixel_y = 3 }, /obj/item/gun/energy/gun, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkred" @@ -8535,7 +8534,7 @@ dir = 1; id = "Courtroom"; pixel_y = 8; - req_one_access_txt = "74;3" + req_one_access = list(74,3) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -8718,7 +8717,7 @@ id = "engsm"; name = "Radiation Shutters Control"; pixel_x = 24; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -8847,26 +8846,6 @@ /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel, /area/station/engineering/control) -"aPR" = ( -/obj/machinery/door_control{ - id = "qm_warehouse"; - name = "Warehouse Door Control"; - pixel_x = -24; - req_access_txt = "31" - }, -/obj/structure/table, -/obj/machinery/kitchen_machine/microwave{ - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch{ - dir = 4; - name = "custom placement"; - pixel_x = -24; - pixel_y = -8 - }, -/turf/simulated/floor/plasteel, -/area/station/supply/warehouse) "aPS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -9751,10 +9730,6 @@ }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) -"aTc" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/maintenance/fsmaint) "aTd" = ( /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -10955,7 +10930,7 @@ }, /area/station/hallway/primary/central/north) "aWv" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fore) "aWx" = ( @@ -11263,7 +11238,7 @@ }, /area/station/hallway/primary/port/east) "aXu" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "aXw" = ( @@ -13945,14 +13920,14 @@ name = "Engineering Lockdown"; pixel_x = -24; pixel_y = -5; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/door_control{ id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -24; pixel_y = 5; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light{ dir = 8 @@ -14607,7 +14582,7 @@ name = "Transit Tube Lockdown"; pixel_x = -24; pixel_y = -5; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ desc = "A remote control-switch for secure storage."; @@ -14615,7 +14590,7 @@ name = "Engineering Secure Storage"; pixel_x = -24; pixel_y = 5; - req_access_txt = "11" + req_access = list(11) }, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" @@ -15477,6 +15452,10 @@ name = "south bump"; pixel_y = -28 }, +/obj/item/destTagger{ + pixel_x = 4; + pixel_y = 3 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -15597,7 +15576,6 @@ /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "bjd" = ( -/obj/structure/rack, /obj/item/stack/packageWrap{ pixel_x = 2; pixel_y = -3 @@ -15616,10 +15594,7 @@ }, /obj/item/stack/wrapping_paper, /obj/item/stack/wrapping_paper, -/obj/item/destTagger{ - pixel_x = 4; - pixel_y = 3 - }, +/obj/structure/shelf/supply, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -17499,7 +17474,7 @@ /obj/machinery/button/windowtint{ id = "CE"; pixel_y = -24; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" @@ -19894,7 +19869,7 @@ /area/station/service/barber) "buI" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/machinery/light/small{ dir = 1 @@ -20096,7 +20071,7 @@ id = "hop"; name = "Privacy Shutters Control"; pixel_y = 25; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/computer/account_database, /turf/simulated/floor/wood, @@ -20201,7 +20176,7 @@ control_area = "\improper AI Satellite Antechamber"; name = "AI Antechamber Turret Control"; pixel_x = 24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -21257,7 +21232,7 @@ id = "hop"; name = "Privacy Shutters Control"; pixel_x = -24; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/carpet, /area/station/command/office/hop) @@ -21339,14 +21314,14 @@ name = "Bridge Access Blast Door Control"; pixel_x = -1; pixel_y = -24; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; pixel_y = -34; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/camera{ c_tag = "Bridge - Command Chair"; @@ -21394,7 +21369,6 @@ /area/station/command/bridge) "byx" = ( /obj/machinery/light, -/obj/structure/rack, /obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/emergency{ pixel_x = -2; @@ -21407,6 +21381,7 @@ pixel_y = -28 }, /obj/item/multitool/command, +/obj/structure/shelf/command, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkblue" @@ -22456,13 +22431,13 @@ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_y = -24; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control{ id = "gateshutter"; name = "Expedition Shutter Control"; pixel_y = -34; - req_access_txt = "62" + req_access = list(62) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -22515,14 +22490,14 @@ name = "Queue Shutters Control"; pixel_x = -6; pixel_y = -35; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control{ id = "hop"; name = "Privacy Shutters Control"; pixel_x = -6; pixel_y = -24; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -23559,7 +23534,7 @@ id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -24; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -23633,7 +23608,7 @@ id = "bridge blast"; name = "Bridge Access Blast Door Control"; pixel_x = -24; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -23969,7 +23944,7 @@ id = "bridge blast"; name = "Bridge Access Blast Door Control"; pixel_x = 24; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -24117,7 +24092,7 @@ name = "Kitchen Counter Shutters"; pixel_x = -6; pixel_y = 24; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -25670,7 +25645,7 @@ }, /area/station/aisat) "bNY" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "bOa" = ( @@ -26232,7 +26207,7 @@ name = "exterior access button"; pixel_x = -25; pixel_y = -7; - req_access_txt = "75;13" + req_access = list(75,13) }, /turf/space, /area/space/nearstation) @@ -26284,7 +26259,7 @@ id = "xenobio5"; name = "Xenobio Pen 5 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -27485,7 +27460,7 @@ "bUK" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_access_txt = "37" + req_access = list(37) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -28351,7 +28326,7 @@ id = "mechbay"; name = "Mech Bay Shutters Control"; pixel_y = -24; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" @@ -28629,7 +28604,7 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = -24; - req_access_txt = "73" + req_access = list(73) }, /obj/structure/table/wood, /obj/machinery/photocopier/faxmachine/longrange{ @@ -28769,7 +28744,7 @@ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_y = -26; - req_access_txt = "19" + req_access = list(19) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -29298,7 +29273,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fsmaint) "cbc" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/fsmaint) "cbd" = ( @@ -29611,11 +29586,11 @@ pixel_x = -2; pixel_y = -2 }, -/obj/structure/table/reinforced, /obj/machinery/requests_console/directional/north, /obj/machinery/light{ dir = 1 }, +/obj/structure/shelf/medbay, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" }, @@ -30001,7 +29976,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "cdG" = ( -/obj/structure/rack, +/obj/effect/spawner/random/storage, /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -30222,7 +30197,6 @@ /obj/structure/sign/poster/official/random{ pixel_y = -32 }, -/obj/structure/table/glass, /obj/item/reagent_containers/spray/plantbgone{ pixel_x = 2; pixel_y = 6 @@ -30243,6 +30217,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/structure/shelf/service, /turf/simulated/floor/plasteel, /area/station/service/hydroponics) "ceE" = ( @@ -30946,20 +30921,20 @@ name = "Xenobiology Containment Control"; pixel_x = 7; pixel_y = 24; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/door_control{ id = "rdtoxins"; name = "Toxins Containment Control"; pixel_x = -7; pixel_y = 24; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/door_control{ id = "rdrnd"; name = "Experi-mentor shutters"; pixel_y = 34; - req_access_txt = "30" + req_access = list(30) }, /obj/machinery/computer/security/telescreen/rd{ pixel_x = 31; @@ -30969,7 +30944,7 @@ id = "RD"; pixel_x = -24; pixel_y = 26; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -31240,7 +31215,7 @@ id = "paramedic"; name = "Garage Door Control"; pixel_y = 24; - req_access_txt = "66" + req_access = list(66) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -31872,8 +31847,7 @@ "ckx" = ( /obj/machinery/mecha_part_fabricator{ id = "0"; - name = "forgotten exosuit fabricator"; - req_access = "0" + name = "forgotten exosuit fabricator" }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -32055,10 +32029,6 @@ /obj/effect/landmark/damageturf, /turf/simulated/floor/plating, /area/station/maintenance/port) -"cli" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/supply/qm) "cll" = ( /obj/structure/sign/poster/random{ pixel_y = -32 @@ -32288,7 +32258,7 @@ "cmn" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -32600,7 +32570,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -32745,7 +32715,7 @@ id = "turbinevent"; name = "Turbine Vent Control"; pixel_y = -24; - req_access_txt = "12" + req_access = list(12) }, /obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet{ @@ -32787,14 +32757,14 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -36; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control{ id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = -8; pixel_y = -24; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plasteel, @@ -32911,7 +32881,7 @@ id = "mechbay"; name = "Mech Bay Shutters Control"; pixel_y = 24; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -33615,7 +33585,7 @@ }, /area/station/hallway/primary/aft/north) "crN" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/aft2) "crP" = ( @@ -34508,7 +34478,7 @@ id = "Surgery 1"; pixel_x = -24; pixel_y = -4; - req_access_txt = "45" + req_access = list(45) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -35831,7 +35801,7 @@ /turf/simulated/wall, /area/station/maintenance/asmaint) "cAP" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "cAS" = ( @@ -35915,7 +35885,7 @@ dir = 1; id = "BS"; pixel_y = -22; - req_access_txt = "67" + req_access = list(67) }, /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) @@ -37770,7 +37740,7 @@ }, /area/station/service/chapel) "cHY" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/asmaint) "cHZ" = ( @@ -37790,7 +37760,7 @@ id = "imnotmakingyoulubepissoff"; name = "Chemistry Privacy Shutter Control"; pixel_y = -24; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -38910,7 +38880,7 @@ "cMz" = ( /obj/machinery/door/morgue{ name = "Relic Closet"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -39212,7 +39182,7 @@ id = "XenoPens"; name = "Xenobiology Shutters"; pixel_x = 24; - req_access_txt = "55" + req_access = list(55) }, /obj/machinery/camera{ c_tag = "Xenobiology Lab - Central Port"; @@ -39417,7 +39387,7 @@ "cOA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/machinery/light_switch{ name = "north bump"; @@ -40265,7 +40235,7 @@ /turf/simulated/wall, /area/station/medical/psych) "cRV" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/port) "cSa" = ( @@ -41507,7 +41477,7 @@ id = "Psych"; pixel_x = -24; pixel_y = 8; - req_access_txt = "64" + req_access = list(64) }, /obj/machinery/light_switch{ dir = 4; @@ -42418,12 +42388,12 @@ }, /area/station/maintenance/asmaint) "dcx" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/starboard) "dcC" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "dcD" = ( @@ -43561,7 +43531,7 @@ /obj/structure/closet/crate/secure{ desc = "A secure crate containing various materials for building a customised test-site."; name = "Test Site Materials Crate"; - req_access_txt = "8" + req_access = list(8) }, /obj/item/target/alien, /obj/item/target/syndicate, @@ -44087,9 +44057,9 @@ /obj/machinery/button/windowtint{ pixel_x = 24; id = "qm"; - req_access_txt = "41"; dir = 8; - pixel_y = 5 + pixel_y = 5; + req_access = list(41) }, /turf/simulated/floor/plasteel, /area/station/supply/qm) @@ -44286,7 +44256,6 @@ }, /area/station/security/main) "dCp" = ( -/obj/structure/rack, /obj/machinery/firealarm/directional/west, /obj/item/gun/energy/disabler{ pixel_y = 6 @@ -44295,6 +44264,7 @@ pixel_y = 3 }, /obj/item/gun/energy/disabler, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkred" @@ -44377,7 +44347,7 @@ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; pixel_y = 26; - req_access_txt = "19" + req_access = list(19) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -44473,7 +44443,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/exit) "dHr" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "dHE" = ( @@ -44668,7 +44638,7 @@ pixel_x = -6; pixel_y = 24; range = 4; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/light_switch{ name = "custom placement"; @@ -44862,7 +44832,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fsmaint) "dSv" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/starboard) "dSx" = ( @@ -44919,8 +44889,8 @@ /obj/machinery/access_button{ autolink_id = "enginesm_btn_ext"; name = "Supermatter Access Button"; - req_access_txt = "10"; - pixel_x = 24 + pixel_x = 24; + req_access = list(10) }, /obj/machinery/camera{ c_tag = "Engineering - Central"; @@ -45447,7 +45417,6 @@ /obj/machinery/airlock_controller/air_cycler{ pixel_x = 9; pixel_y = -25; - req_access_txt = null; vent_link_id = "atmossouth_vent"; ext_door_link_id = "atmossouth_door_ext"; int_door_link_id = "atmossouth_door_int"; @@ -46267,7 +46236,7 @@ name = "Brig Lockdown"; pixel_x = -26; pixel_y = 7; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/camera{ c_tag = "Warden's Office"; @@ -46443,7 +46412,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "eBq" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/starboard) "eBr" = ( @@ -47187,8 +47156,8 @@ /obj/machinery/access_button{ autolink_id = "atmossm_btn_ext"; name = "Atmospherics Access Button"; - req_access_txt = "24"; - pixel_x = 24 + pixel_x = 24; + req_access = list(24) }, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/simulated/floor/plasteel{ @@ -48603,7 +48572,7 @@ }, /area/station/security/range) "fuy" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "fuC" = ( @@ -50838,7 +50807,7 @@ name = "interior access button"; pixel_x = 25; pixel_y = -7; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/plasteel{ @@ -51033,6 +51002,26 @@ /obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel, /area/station/security/main) +"gvz" = ( +/obj/machinery/door_control{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -24; + req_access = list(31) + }, +/obj/structure/table, +/obj/machinery/kitchen_machine/microwave{ + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch{ + dir = 4; + name = "custom placement"; + pixel_x = -24; + pixel_y = -8 + }, +/turf/simulated/floor/plasteel, +/area/station/supply/warehouse) "gvJ" = ( /obj/structure/cable{ d1 = 4; @@ -51959,7 +51948,7 @@ id = "xenobio7"; name = "Xenobio Pen 7 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -52453,7 +52442,7 @@ id = "armory"; name = "Armory Shutter"; pixel_y = -24; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -52954,7 +52943,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /obj/effect/spawner/window/reinforced/tinted/grilled, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -53420,7 +53409,6 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) "htP" = ( -/obj/structure/table, /obj/item/reagent_containers/condiment/milk{ pixel_x = 6; pixel_y = 8 @@ -53441,6 +53429,7 @@ /obj/structure/noticeboard{ pixel_y = 32 }, +/obj/structure/shelf, /turf/simulated/floor/plasteel/dark, /area/station/service/cafeteria) "huo" = ( @@ -54341,7 +54330,7 @@ id = "paramedic"; name = "Garage Door Control"; pixel_y = -24; - req_access_txt = "66" + req_access = list(66) }, /obj/effect/turf_decal/stripes/corner, /obj/structure/disposalpipe/junction/reversed{ @@ -54679,7 +54668,7 @@ name = "Service Shutter Control"; pixel_x = 24; pixel_y = 24; - req_access_txt = "35" + req_access = list(35) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -54698,7 +54687,7 @@ id = "xenobio8"; name = "Xenobio Pen 8 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/item/reagent_containers/spray/cleaner{ pixel_x = 5 @@ -55670,7 +55659,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/control) "iot" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "ioy" = ( @@ -56430,7 +56419,7 @@ id = "xenobio6"; name = "Xenobio Pen 6 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -56982,7 +56971,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "iRX" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -57528,7 +57517,7 @@ name = "Xenobiology Access Button"; pixel_x = -3; pixel_y = 26; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" @@ -58289,7 +58278,7 @@ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; pixel_y = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 4; @@ -58412,7 +58401,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "jDK" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/hallway/primary/central/se) "jEw" = ( @@ -58422,7 +58411,7 @@ /turf/space, /area/space/nearstation) "jEA" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "jEC" = ( @@ -59431,8 +59420,8 @@ /obj/machinery/access_button{ autolink_id = "atmossm_btn_int"; name = "Atmospherics Access Button"; - req_access_txt = "24"; - pixel_x = -24 + pixel_x = -24; + req_access = list(24) }, /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/simulated/floor/plating, @@ -59594,15 +59583,15 @@ id = "Magistrate"; pixel_x = -24; pixel_y = 6; - req_access_txt = "74" + req_access = list(74) }, /obj/machinery/door_control{ id = "magistrateofficedoor"; name = "Office Door"; normaldoorcontrol = 1; pixel_x = -25; - req_access_txt = "74"; - pixel_y = -4 + pixel_y = -4; + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -61039,13 +61028,13 @@ normaldoorcontrol = 1; pixel_x = 6; pixel_y = 7; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/flasher_button{ id = "secentranceflasher"; name = "Brig Entrance Flash Control"; pixel_y = -3; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/plasteel, /area/station/security/warden) @@ -61154,7 +61143,7 @@ name = "Atmospherics Lockdown"; pixel_x = -4; pixel_y = 24; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light_switch{ name = "custom placement"; @@ -61268,7 +61257,7 @@ id = "xenobio4"; name = "Xenobio Pen 4 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -62112,7 +62101,7 @@ id = "XenoPens"; name = "Xenobiology Shutters"; pixel_y = -24; - req_access_txt = "55" + req_access = list(55) }, /obj/item/book/manual/wiki/sop_science{ pixel_y = 4 @@ -62739,13 +62728,13 @@ /area/station/hallway/secondary/bridge) "lnd" = ( /obj/machinery/airlock_controller/air_cycler{ - req_access_txt = "10;13"; vent_link_id = "engine_vent"; ext_door_link_id = "engine_door_ext"; int_door_link_id = "engine_door_int"; pixel_y = 24; ext_button_link_id = "engine_btn_ext"; - int_button_link_id = "engine_btn_int" + int_button_link_id = "engine_btn_int"; + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -63295,7 +63284,7 @@ }, /area/station/medical/medbay) "lBw" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/starboard2) "lBy" = ( @@ -63516,7 +63505,7 @@ name = "interior access button"; pixel_x = -22; pixel_y = 20; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/structure/lattice/catwalk, /turf/space, @@ -64206,7 +64195,7 @@ id = "xenobio1"; name = "Xenobio Pen 1 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -65309,7 +65298,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/lobby) "msw" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "msD" = ( @@ -65605,7 +65594,7 @@ id = "CMO"; pixel_x = -7; pixel_y = -24; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/keycard_auth{ pixel_x = 7; @@ -66467,8 +66456,7 @@ }, /area/station/medical/virology) "mRy" = ( -/obj/structure/rack, -/obj/item/storage/box/tranquilizer, +/obj/item/storage/fancy/shell/tranquilizer, /obj/structure/cable{ d1 = 1; d2 = 4; @@ -66479,6 +66467,7 @@ d2 = 4; icon_state = "2-4" }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, @@ -66681,7 +66670,7 @@ /turf/simulated/floor/plating, /area/station/science/explab) "mVF" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/service/hydroponics) "mVG" = ( @@ -66729,7 +66718,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/north) "mVZ" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/service/hydroponics) "mWp" = ( @@ -67309,7 +67298,7 @@ name = "interior access button"; pixel_x = -22; pixel_y = -20; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/engine, /area/station/engineering/control) @@ -67463,7 +67452,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/office) "niC" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -68122,7 +68111,6 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/bridge) "nxO" = ( -/obj/structure/rack, /obj/item/gun/projectile/shotgun/riot{ pixel_y = 6 }, @@ -68136,6 +68124,7 @@ icon_state = "4-8" }, /obj/machinery/alarm/directional/north, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkred" @@ -68226,7 +68215,7 @@ name = "Service Shutter Control"; pixel_x = -24; pixel_y = -24; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -70089,13 +70078,13 @@ /turf/simulated/floor/greengrid, /area/station/science/robotics/chargebay) "otp" = ( -/obj/structure/table, /obj/structure/sign/poster/official/random{ pixel_y = -32 }, /obj/item/book/manual/wiki/sop_supply, /obj/item/storage/belt/utility, /obj/item/screwdriver/cargo, +/obj/structure/shelf/supply, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -70235,7 +70224,6 @@ /turf/simulated/floor/plasteel, /area/station/security/permabrig) "oAs" = ( -/obj/structure/table/reinforced, /obj/machinery/firealarm/directional/west, /obj/structure/extinguisher_cabinet{ name = "north bump"; @@ -70257,6 +70245,7 @@ pixel_y = 4 }, /obj/item/mecha_parts/core, +/obj/structure/shelf/science, /turf/simulated/floor/plasteel, /area/station/science/robotics) "oAL" = ( @@ -70772,7 +70761,7 @@ /turf/simulated/floor/plasteel, /area/station/science/robotics) "oNn" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) @@ -71421,7 +71410,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "oXK" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/starboard) "oXP" = ( @@ -71892,7 +71881,7 @@ name = "interior access button"; pixel_x = 25; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -71978,11 +71967,11 @@ name = "Virology Lab Access Console"; pixel_x = 24; pixel_y = -24; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; - int_button_link_id = "viro_btn_int" + int_button_link_id = "viro_btn_int"; + req_access = list(39) }, /obj/structure/cable{ d1 = 4; @@ -73040,7 +73029,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "pHF" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_south) "pHM" = ( @@ -74350,7 +74339,7 @@ /turf/simulated/floor/engine, /area/station/engineering/control) "qiP" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -74848,7 +74837,7 @@ id = "HoS"; pixel_x = -24; pixel_y = 6; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -75174,7 +75163,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fore) "qyW" = ( @@ -75261,7 +75250,7 @@ id = "Surgery 2"; pixel_x = 24; pixel_y = -4; - req_access_txt = "45" + req_access = list(45) }, /obj/machinery/holosign_switch{ dir = 8; @@ -75657,7 +75646,7 @@ id = "xenobio3"; name = "Xenobio Pen 3 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -75846,7 +75835,7 @@ name = "interrogation tint control"; pixel_x = -24; pixel_y = 6; - req_access_txt = "63" + req_access = list(63) }, /obj/structure/cable{ d1 = 2; @@ -77635,7 +77624,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "rCD" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "rDd" = ( @@ -78000,28 +77989,28 @@ }, /area/station/engineering/atmos/control) "rJh" = ( -/obj/structure/rack, /obj/machinery/requests_console/directional/north, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 2; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 2; pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_x = 2; pixel_y = 3 }, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/rubbershot, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, @@ -78680,7 +78669,7 @@ id = "roboticsprivacy2"; name = "Robotics Shutters"; pixel_x = 24; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "darkgrey" @@ -78737,7 +78726,7 @@ /area/station/engineering/atmos/distribution) "rXf" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel, /area/station/maintenance/fsmaint) "rXj" = ( @@ -78939,7 +78928,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "scT" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/public/mrchangs) "scY" = ( @@ -79608,7 +79597,7 @@ name = "AI Chamber Turret Control"; pixel_x = 5; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/flasher{ id = "AI"; @@ -80105,7 +80094,7 @@ name = "Robotics Privacy Control"; pixel_x = -26; pixel_y = 26; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics) @@ -80341,21 +80330,21 @@ name = "Justice Vent Control"; pixel_x = -26; pixel_y = 25; - req_access_txt = "3" + req_access = list(3) }, /obj/machinery/door_control{ id = "executionfireblast"; name = "Justice Area Lockdown"; pixel_x = -38; pixel_y = 25; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/ignition_switch{ id = "executionburn"; name = "Justice Ignition Switch"; pixel_x = -25; pixel_y = 36; - req_access_txt = "1" + req_access = list(1) }, /obj/machinery/flasher_button{ id = "justiceflash"; @@ -81090,7 +81079,7 @@ }, /area/station/hallway/primary/aft/north) "sZV" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -81642,7 +81631,7 @@ name = "exterior access button"; pixel_x = 25; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /turf/space, /area/space/nearstation) @@ -81745,7 +81734,7 @@ }, /area/station/service/bar) "tmz" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/aft2) "tmI" = ( @@ -82328,8 +82317,7 @@ "tAF" = ( /obj/machinery/computer/prisoner{ dir = 1; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -82874,7 +82862,7 @@ id = "IAA"; pixel_x = 24; pixel_y = 8; - req_access_txt = "38" + req_access = list(38) }, /turf/simulated/floor/carpet, /area/station/legal/lawoffice) @@ -83284,7 +83272,6 @@ /turf/simulated/floor/carpet, /area/station/legal/magistrate) "uba" = ( -/obj/structure/rack, /obj/item/gun/energy/laser{ pixel_y = 6 }, @@ -83292,6 +83279,7 @@ pixel_y = 3 }, /obj/item/gun/energy/laser, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkred" @@ -83643,7 +83631,7 @@ }, /area/station/security/main) "uhI" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/fore) "uhJ" = ( @@ -85354,7 +85342,7 @@ }, /area/station/science/research) "uVH" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/apmaint) "uVT" = ( @@ -85372,7 +85360,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "uWe" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/starboard2) "uWq" = ( @@ -85620,7 +85608,7 @@ name = "Chemistry Privacy Shutter Control"; pixel_x = 24; pixel_y = 24; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/chem_master, /turf/simulated/floor/plasteel{ @@ -85711,7 +85699,7 @@ }, /area/station/security/permabrig) "vbW" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/asmaint) "vcF" = ( @@ -85836,7 +85824,7 @@ name = "interior access button"; pixel_x = -25; pixel_y = -25; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -85852,7 +85840,7 @@ name = "Toxins Access"; pixel_x = -27; pixel_y = 8; - req_access_txt = "8" + req_access = list(8) }, /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plasteel, @@ -86057,7 +86045,7 @@ /turf/simulated/floor/plating, /area/station/engineering/engine/supermatter) "vjR" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/starboard2) "vkd" = ( @@ -86440,7 +86428,7 @@ name = "exterior access button"; pixel_x = -25; pixel_y = 7; - req_access_txt = "24;13" + req_access = list(24,13) }, /turf/simulated/floor/plating/airless, /area/station/engineering/atmos) @@ -86655,7 +86643,7 @@ /turf/simulated/floor/plating, /area/station/security/execution) "vxx" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "vxI" = ( @@ -87243,7 +87231,7 @@ /turf/simulated/floor/wood, /area/station/legal/courtroom) "vOJ" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -87899,7 +87887,7 @@ /turf/simulated/floor/plasteel, /area/station/science/toxins/mixing) "wfa" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/port) "wfs" = ( @@ -88785,8 +88773,7 @@ "wAJ" = ( /obj/machinery/computer/prisoner{ dir = 8; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -89013,7 +89000,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/east) "wFC" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "wFW" = ( @@ -89293,7 +89280,7 @@ /turf/space, /area/space/nearstation) "wPS" = ( -/obj/machinery/smartfridge, +/obj/machinery/smartfridge/food/chef, /obj/machinery/door/window/classic/normal{ name = "Anti-Theft Shield"; dir = 1 @@ -89422,7 +89409,7 @@ /turf/simulated/floor/grass/no_creep, /area/station/security/permabrig) "wSg" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/aft2) "wSh" = ( @@ -89676,7 +89663,7 @@ name = "Virology Lab Access Button"; pixel_x = 8; pixel_y = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable{ d1 = 4; @@ -89751,7 +89738,7 @@ name = "Special Containment Blast Doors"; pixel_x = 4; pixel_y = -3; - req_access_txt = "55" + req_access = list(55) }, /obj/machinery/computer/security/telescreen{ desc = "Used for watching the special containment chamber."; @@ -89942,8 +89929,8 @@ /obj/machinery/access_button{ autolink_id = "enginesm_btn_int"; name = "Supermatter Access Button"; - req_access_txt = "10"; - pixel_x = 24 + pixel_x = 24; + req_access = list(10) }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -91328,7 +91315,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "xGF" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/asmaint) "xGP" = ( @@ -91592,7 +91579,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "xNa" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -91697,7 +91684,7 @@ name = "Research Shutters Control"; pixel_x = 24; pixel_y = null; - req_access_txt = "7" + req_access = list(7) }, /obj/machinery/cell_charger, /turf/simulated/floor/plasteel{ @@ -91806,16 +91793,12 @@ name = "Experi-mentor shutters"; pixel_x = -25; pixel_y = null; - req_access_txt = "7" + req_access = list(7) }, /turf/simulated/floor/plasteel{ icon_state = "white" }, /area/station/science/explab) -"xPL" = ( -/obj/effect/decal/snow, -/turf/simulated/wall, -/area/station/maintenance/apmaint) "xPO" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4; @@ -92002,8 +91985,8 @@ /obj/machinery/access_button{ autolink_id = "enginesm_btn_ext"; name = "Supermatter Access Button"; - req_access_txt = "10"; - pixel_x = -24 + pixel_x = -24; + req_access = list(10) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -92228,7 +92211,7 @@ autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; pixel_y = -24; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable{ d1 = 4; @@ -92285,7 +92268,7 @@ id = "teleshutter"; name = "Teleporter Shutters Access Control"; pixel_x = -24; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel, /area/station/command/teleporter) @@ -92346,7 +92329,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "yaL" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/effect/decal/cleanable/blood/writing{ dir = 8 }, @@ -110144,7 +110127,7 @@ cCk dbA crG bZP -xPL +bZP dtE kMZ bUY @@ -111875,7 +111858,7 @@ atk adY fuy fuy -cli +aVl aLQ aNY dxB @@ -112394,7 +112377,7 @@ frx frx tWP aOB -aPR +gvz aWt gqF aTW @@ -131159,7 +131142,7 @@ rIT aXr ucy fUf -aTc +aLl dCJ aLl aqM diff --git a/_maps/map_files/templates/biodome_beach.dmm b/_maps/map_files/templates/biodome_beach.dmm index 3e0d5667f94f..9c2c233eb8e3 100644 --- a/_maps/map_files/templates/biodome_beach.dmm +++ b/_maps/map_files/templates/biodome_beach.dmm @@ -352,7 +352,7 @@ /turf/simulated/floor/beach/water, /area/ruin/powered/beach) "bM" = ( -/turf/simulated/floor/plasteel/stairs/old, +/turf/simulated/floor/plasteel/stairs, /area/ruin/powered/beach) "bN" = ( /obj/structure/flora/ausbushes/reedbush, diff --git a/_maps/map_files/templates/shelter_2.dmm b/_maps/map_files/templates/shelter_2.dmm index 86c7365cf34c..df2b11ba4776 100644 --- a/_maps/map_files/templates/shelter_2.dmm +++ b/_maps/map_files/templates/shelter_2.dmm @@ -123,8 +123,8 @@ alert = 0; desc = "A display case containing an expensive forgery, probably."; pixel_y = -4; - req_access_txt = "48"; - start_showpiece_type = /obj/item/fakeartefact + start_showpiece_type = /obj/item/fakeartefact; + req_access = list(48) }, /turf/simulated/floor/carpet/black{ dir = 1 diff --git a/_maps/map_files220/RandomRuins/LavaRuins/scp_facility.dmm b/_maps/map_files220/RandomRuins/LavaRuins/scp_facility.dmm index 7020e73e9cea..605e28281d1f 100644 --- a/_maps/map_files220/RandomRuins/LavaRuins/scp_facility.dmm +++ b/_maps/map_files220/RandomRuins/LavaRuins/scp_facility.dmm @@ -928,7 +928,7 @@ /area/ruin/powered/scpfacility) "KS" = ( /obj/structure/rack, -/obj/item/gun/energy/e_gun, +/obj/item/gun/energy/gun, /turf/simulated/floor/plasteel/lavaland_air{ icon_state = "dark" }, diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/convoy_ambush.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/convoy_ambush.dmm index 363a7d61a31b..5c35b388280a 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/convoy_ambush.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/convoy_ambush.dmm @@ -417,7 +417,7 @@ "tW" = ( /obj/effect/landmark/damageturf, /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "3" + req_access = list(3) }, /obj/item/gun/energy/laser/retro/old, /turf/simulated/floor/plasteel/airless{ @@ -742,7 +742,7 @@ }, /area/ruin/space/unpowered/unpowered_structures) "FP" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/mineral/plastitanium/red, /area/ruin/space/unpowered/unpowered_structures) "FZ" = ( diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/destroyed_infiltrator.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/destroyed_infiltrator.dmm index 84996c8c13d3..0c0cfdba6f66 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/destroyed_infiltrator.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/destroyed_infiltrator.dmm @@ -680,10 +680,10 @@ /turf/simulated/floor/mineral/plastitanium/red/airless, /area/ruin/space/unpowered/unpowered_structures) "UY" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_ext"; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/door_control/no_emag{ pixel_y = 28 diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/infected_ship.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/infected_ship.dmm index 5c2b88bff25d..83e2489dcd4c 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/infected_ship.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/infected_ship.dmm @@ -385,7 +385,6 @@ "iL" = ( /obj/machinery/light_construct/directional/west, /obj/structure/closet/crate/secure/weapon{ - req_access_txt = null; req_access = list(150) }, /obj/effect/turf_decal/stripes/white/line{ @@ -1653,8 +1652,8 @@ /turf/simulated/floor/mineral/plastitanium, /area/ruin/space/powered/requires_power_space) "UK" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - req_access_txt = "150"; locked = 1 }, /obj/structure/fans/tiny, diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/mechtransport_new.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/mechtransport_new.dmm index 08824a7ac412..2b88ee64a886 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/mechtransport_new.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/mechtransport_new.dmm @@ -742,7 +742,7 @@ /turf/simulated/floor/mineral/titanium, /area/ruin/space/powered) "rs" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/effect/decal/cleanable/dirt, /obj/machinery/light_construct/directional/south, /turf/simulated/floor/plating, @@ -865,7 +865,7 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/ruin/space/powered) "uk" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plating, /area/ruin/space/powered) @@ -992,9 +992,8 @@ /turf/simulated/floor/plating, /area/ruin/space/powered) "wF" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "150" - }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate, +/obj/machinery/door/airlock/external, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/ruin/space/powered) @@ -1860,7 +1859,7 @@ /turf/simulated/floor/mineral/titanium/yellow, /area/ruin/space/powered) "LY" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/mineral/plastitanium/red, /area/ruin/space/powered) "Md" = ( @@ -1981,7 +1980,7 @@ /turf/simulated/floor/mineral/titanium, /area/ruin/space/powered) "Po" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/machinery/light/small/directional/north, /turf/simulated/floor/plating, /area/ruin/space/powered) @@ -2422,7 +2421,7 @@ /area/ruin/space/powered) "WD" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "7" + req_access = list(7) }, /obj/item/mecha_parts/mecha_equipment/weapon/honker, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang, diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/spacehotel.dmm index 8f8ca8d06d9a..ea87acb0a880 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/spacehotel.dmm @@ -6894,7 +6894,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/space/spacehotelv1/forehallway) "XK" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/ruin/space/spacehotelv1/engi1) "XP" = ( diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/syndie_space_base.dmm index 29702b1da153..54445ed5d046 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/syndie_space_base.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/syndie_space_base.dmm @@ -78,8 +78,8 @@ name = "Vault Bolt Control"; normaldoorcontrol = 1; pixel_x = 24; - req_access_txt = "150"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(150) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -1082,7 +1082,7 @@ id = "SSBrestricted"; name = "Shutters Control"; pixel_x = -24; - req_access_txt = "151" + req_access = list(151) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -1274,8 +1274,7 @@ "gW" = ( /obj/machinery/door/window/classic/reversed{ name = "Animal Storage"; - req_access_txt = "150"; - req_one_access_txt = "150" + req_access = list(150) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -1553,7 +1552,7 @@ id = "SSBrestricted"; name = "Shutters Control"; pixel_x = 24; - req_access_txt = "151" + req_access = list(151) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -1581,7 +1580,7 @@ /area/ruin/unpowered/syndicate_space_base/toxtest) "iB" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/clothing/suit/space/syndicate, /obj/item/clothing/suit/space/syndicate, @@ -1728,7 +1727,7 @@ /area/ruin/unpowered/syndicate_space_base/arrivals) "je" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/clothing/suit/space/syndicate, /obj/item/clothing/suit/space/syndicate, @@ -4979,7 +4978,7 @@ dir = 4; network = list("SyndicateTestLab","SyndicateToxinsTest","SyndicateCaves","SyndicateInterior"); name = "syndicate security camera console"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -5290,7 +5289,7 @@ /area/ruin/unpowered/syndicate_space_base/atmos) "Ed" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/light{ dir = 1 @@ -5332,8 +5331,7 @@ "Ei" = ( /obj/machinery/door/window/classic/reversed{ name = "Animal Storage"; - req_access_txt = "150"; - req_one_access_txt = "150" + req_access = list(150) }, /mob/living/simple_animal/chicken{ faction = list("neutral","syndicate") @@ -5456,10 +5454,10 @@ }, /area/ruin/unpowered/syndicate_space_base/genetics) "ES" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/vault{ id_tag = "syndie_lavaland_vault"; - locked = 1; - req_access_txt = "150" + locked = 1 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -6140,7 +6138,7 @@ /area/ruin/unpowered/syndicate_space_base/main) "Iz" = ( /obj/structure/closet/crate/secure/gear{ - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/light, /obj/item/clothing/gloves/combat, @@ -6396,7 +6394,7 @@ pixel_y = -24; name = "Caves Turret Control Panel"; control_area = "Syndicate Space Base Cave"; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/chair{ dir = 8 @@ -7028,8 +7026,7 @@ /area/ruin/unpowered/syndicate_space_base/toxlaunch) "NT" = ( /obj/structure/closet/secure_closet/medical1{ - req_access = null; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/window/reinforced{ dir = 1 @@ -7692,7 +7689,7 @@ /area/ruin/unpowered/syndicate_space_base/engineering) "Sv" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/ammo_box/magazine/m10mm/hp, /obj/item/ammo_box/magazine/m10mm/hp, @@ -7793,7 +7790,7 @@ /area/ruin/unpowered/syndicate_space_base/storage) "SN" = ( /obj/structure/closet/crate/secure/weapon{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/ammo_box/magazine/m10mm/hp, /obj/item/ammo_box/magazine/m10mm/hp, diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/voxraiders_1.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/voxraiders_1.dmm index db4ff7a72d6b..567b8ccf3e80 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/voxraiders_1.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/voxraiders_1.dmm @@ -102,9 +102,8 @@ }, /area/ruin/space/unpowered/unpowered_structures) "iD" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "152" - }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/mineral/plastitanium/red/nitrogen{ icon_state = "plastitanium" }, @@ -262,15 +261,13 @@ /turf/template_noop, /area/template_noop) "yO" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "152" - }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, +/obj/machinery/door/airlock/hatch, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/ruin/space/powered) "Ao" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "152" - }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, +/obj/machinery/door/airlock/hatch, /obj/structure/fans/tiny, /turf/simulated/floor/plating/nitrogen, /area/ruin/space/powered) diff --git a/_maps/map_files220/RandomRuins/SpaceRuins/whiteship.dmm b/_maps/map_files220/RandomRuins/SpaceRuins/whiteship.dmm index ec3388e8e129..8b32fccd6fc5 100644 --- a/_maps/map_files220/RandomRuins/SpaceRuins/whiteship.dmm +++ b/_maps/map_files220/RandomRuins/SpaceRuins/whiteship.dmm @@ -640,6 +640,7 @@ pixel_y = 8; volume = 15 }, +/obj/item/salvage/ruin/nanotrasen, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkblue" @@ -911,7 +912,8 @@ id = "whiteship_away"; name = "Deep Space"; dwidth = 8; - height = 31 + height = 31; + width = 21 }, /obj/docking_port/mobile{ dir = 8; @@ -1073,11 +1075,7 @@ }, /area/shuttle/abandoned) "Ag" = ( -/obj/structure/closet{ - icon_opened = "generic_open"; - icon_state = "white"; - name = "Medical gear" - }, +/obj/structure/closet, /obj/item/clothing/under/rank/medical/paramedic, /obj/item/clothing/shoes/black, /obj/item/surgical_drapes, @@ -1493,6 +1491,10 @@ pixel_x = 2; pixel_y = 6 }, +/obj/item/salvage/ruin/nanotrasen{ + pixel_x = -10; + pixel_y = 11 + }, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -2002,7 +2004,11 @@ /area/shuttle/abandoned) "VU" = ( /obj/structure/table, -/obj/item/salvage/ruin/nanotrasen, +/obj/item/salvage/ruin/nanotrasen{ + pixel_x = -5; + pixel_y = 7 + }, +/obj/item/toy/hampter/medical, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkbluefull" diff --git a/_maps/map_files220/RandomZLevels/beach.dmm b/_maps/map_files220/RandomZLevels/beach.dmm index 6843462d558d..b6aa95de8a2f 100644 --- a/_maps/map_files220/RandomZLevels/beach.dmm +++ b/_maps/map_files220/RandomZLevels/beach.dmm @@ -1026,7 +1026,7 @@ /area/awaymission/beach) "mP" = ( /obj/effect/decal/cleanable/cobweb2, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/awaymission/beach) "mQ" = ( @@ -1888,7 +1888,7 @@ /turf/simulated/floor/beach/away/sand_alternative, /area/awaymission/beach) "zw" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/beach/away/sand_alternative, /area/awaymission/beach) "zF" = ( @@ -2619,7 +2619,7 @@ /area/awaymission/beach) "Iz" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/awaymission/beach) "IA" = ( diff --git a/_maps/map_files220/RandomZLevels/blackmarketpackers.dmm b/_maps/map_files220/RandomZLevels/blackmarketpackers.dmm index c8dfbbc1471a..2632008b7078 100644 --- a/_maps/map_files220/RandomZLevels/blackmarketpackers.dmm +++ b/_maps/map_files220/RandomZLevels/blackmarketpackers.dmm @@ -590,7 +590,7 @@ /turf/simulated/floor/plating, /area/awaymission/BMPship/Armory) "cc" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/shotgun/riot/short{ pixel_x = 6 }, @@ -870,8 +870,8 @@ /obj/item/clothing/suit/armor/vest, /obj/item/clothing/accessory/storage/black_vest, /obj/structure/alien/weeds, -/obj/item/storage/box/buck, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/alien/resin, /turf/simulated/floor/wood/oak, /area/awaymission/BMPship/Armory) @@ -3694,8 +3694,8 @@ /obj/item/clothing/suit/armor/vest, /obj/item/clothing/accessory/storage/black_vest, /obj/structure/alien/weeds, -/obj/item/storage/box/buck, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, +/obj/item/storage/fancy/shell/buck, /obj/structure/alien/resin, /turf/simulated/floor/wood/oak, /area/awaymission/BMPship/Armory) @@ -4542,7 +4542,7 @@ /turf/simulated/floor/plating/airless, /area/awaymission/BMPship/Buffer) "wU" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/laser{ pixel_x = -8 }, diff --git a/_maps/map_files220/RandomZLevels/blackmesa.dmm b/_maps/map_files220/RandomZLevels/blackmesa.dmm index 71893860f062..5085606e7c13 100644 --- a/_maps/map_files220/RandomZLevels/blackmesa.dmm +++ b/_maps/map_files220/RandomZLevels/blackmesa.dmm @@ -87,7 +87,7 @@ /area/awaymission/black_mesa/tram_room) "ajf" = ( /obj/machinery/light_construct/directional/west, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/cryo_storage) "ajx" = ( @@ -457,7 +457,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/science_decon_room) "aEC" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/wood/fancy/cherry, /area/awaymission/black_mesa/xen/vortigaunt_village_nihilanth) "aED" = ( @@ -1002,7 +1002,7 @@ /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/lambda_teleporter) "btq" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/wt550, /obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9, @@ -1077,7 +1077,7 @@ /turf/simulated/floor/plating, /area/awaymission/black_mesa/security_outpost) "bwp" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/wt550, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/high_security_hallway) @@ -1589,7 +1589,7 @@ /turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "bWq" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/revolver/nagant, /turf/simulated/floor/plating, /area/awaymission/black_mesa/security_outpost) @@ -2127,7 +2127,7 @@ }, /area/awaymission/black_mesa/science_internal) "cED" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/pistol/enforcer/lethal, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/black_ops_armory) @@ -2886,7 +2886,7 @@ }, /area/awaymission/black_mesa/security_outpost) "dzf" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/wt550, /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/security_outpost) @@ -2976,7 +2976,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/entrance_lobby) "dFZ" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/melee/classic_baton, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/black_ops_armory) @@ -3816,7 +3816,7 @@ /turf/simulated/floor/engine, /area/awaymission/black_mesa/hecu_zone_test_chambers) "eFJ" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/awaymission/black_mesa/dorm_tunnel) "eFO" = ( @@ -4314,7 +4314,7 @@ /area/awaymission/black_mesa/hecu_zone_towards_facility) "fkH" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/awaymission/black_mesa/tram_tunnel) "flK" = ( @@ -6087,7 +6087,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/hecu_zone_infirmary) "hvE" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/awaymission/black_mesa/entrance_tunnel) "hwz" = ( @@ -6449,7 +6449,7 @@ /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/xen/lost_camp) "hWM" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/ammo_box/shotgun/buck, /turf/simulated/floor/plasteel/dark{ icon_state = "dark" @@ -6825,7 +6825,7 @@ /turf/simulated/floor/plating/xen, /area/awaymission/black_mesa/xen/entering_zone) "ivV" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/xen/lost_camp) "ivZ" = ( @@ -6872,7 +6872,7 @@ /turf/simulated/floor/plating, /area/awaymission/black_mesa/entrance_tunnel) "iBg" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/ammo_box/n762, /turf/simulated/floor/plating, /area/awaymission/black_mesa/security_outpost) @@ -7228,7 +7228,7 @@ /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/lambda_hallway) "iVz" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/m90, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/hecu_zone_external_sec) @@ -8312,7 +8312,7 @@ /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/high_security_servers) "kig" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/effect/decal/cleanable/dirt, /obj/item/ammo_box/magazine/m556, /obj/item/ammo_box/magazine/m556, @@ -8555,7 +8555,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/black_ops_entrance) "kuQ" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/ammo_box/magazine/m556, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/black_ops_armory) @@ -8772,7 +8772,7 @@ /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/cryo_storage) "kMu" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/hecu_zone_camp) "kNg" = ( @@ -10093,13 +10093,13 @@ /area/awaymission/black_mesa/xen/vortigaunt_village_nihilanth) "mpn" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/xen/acid_lake_building) "mpu" = ( /obj/machinery/door_control/shutter/east{ id = "nihi"; - req_one_access_txt = "271" + req_access = list(271) }, /turf/simulated/floor/vault{ icon_state = "alienvault" @@ -10636,7 +10636,7 @@ /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/hecu_zone_camp) "mXr" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/pistol/enforcer/lethal, /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/security_outpost) @@ -10805,7 +10805,7 @@ /area/awaymission/black_mesa/entrance) "ngU" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/awaymission/black_mesa/entrance_tunnel) "nhd" = ( @@ -10857,7 +10857,7 @@ "njE" = ( /obj/machinery/light_construct/directional/west, /obj/effect/gibspawner/human, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/xen/lost_camp) "njT" = ( @@ -10917,7 +10917,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/hecu_zone_camp) "noB" = ( @@ -11038,7 +11038,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/scientist_hall) "ntU" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/wt550, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/black_ops_armory) @@ -11652,7 +11652,7 @@ }, /area/awaymission/black_mesa/genetics_elevator) "ohx" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/deep_sci_feesh) "oih" = ( @@ -12503,7 +12503,7 @@ /turf/simulated/floor/catwalk, /area/awaymission/black_mesa/genetics_elevator) "pfy" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/black_ops_downstairs_atrium) "pfE" = ( @@ -12528,7 +12528,7 @@ }, /area/awaymission/black_mesa/resonant_chamber) "pgX" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/cryo_storage) "phm" = ( @@ -12691,7 +12691,7 @@ /area/awaymission/black_mesa/xen/nihilanth_computer) "psS" = ( /obj/effect/decal/cleanable/blood/old, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/xen/lost_camp) "ptr" = ( @@ -12914,7 +12914,7 @@ /area/awaymission/black_mesa/science_labs) "pGt" = ( /obj/item/gun/projectile/automatic/m90, -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/xen/lost_camp) "pHL" = ( @@ -15944,7 +15944,7 @@ /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/high_security_hallway) "tuo" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/awaymission/black_mesa/tram_tunnel) "tuH" = ( @@ -16186,7 +16186,7 @@ /turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "tJO" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/shield/riot, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/black_ops_armory) @@ -16346,7 +16346,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/black_ops_science_room) "tWO" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/lwap, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/xen/acid_lake_building) @@ -16374,7 +16374,7 @@ }, /area/awaymission/black_mesa/entrance_lobby) "tYo" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/ammo_box/magazine/enforcer/lethal, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/black_ops_armory) @@ -17170,7 +17170,7 @@ }, /area/awaymission/black_mesa/high_security_hallway) "uVv" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/shotgun/boltaction, /turf/simulated/floor/wood, /area/awaymission/black_mesa/employee_dorm_room) @@ -17377,7 +17377,7 @@ /area/awaymission/black_mesa/resonant_chamber) "viz" = ( /obj/effect/decal/cleanable/blood/old, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/xen/acid_lake_building) "viD" = ( @@ -17671,7 +17671,7 @@ /area/awaymission/black_mesa/hecu_zone_camp) "vEG" = ( /obj/machinery/light/directional/west, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/deep_sci_feesh) "vEP" = ( @@ -17863,7 +17863,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 4 }, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/hecu_zone_camp) "vPi" = ( @@ -18061,7 +18061,7 @@ /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/hecu_zone_camp) "wcw" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/wt550, /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" @@ -18547,7 +18547,7 @@ /turf/simulated/floor/plating/dirt/xen_dirt, /area/awaymission/black_mesa/xen/vortigaunt_village) "wJs" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/shotgun, /obj/item/ammo_box/shotgun/buck, /turf/simulated/floor/plasteel/smooth, @@ -18849,7 +18849,7 @@ /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/genetics_elevator) "wZE" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/ammo_box/magazine/wt550m9, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/black_ops_armory) @@ -18892,13 +18892,13 @@ /turf/simulated/floor/plasteel/dark, /area/awaymission/black_mesa/xen/lost_camp) "xaA" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/ammo_box/magazine/m556, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/hecu_zone_external_sec) "xaE" = ( /obj/machinery/light/directional/east, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/smooth, /area/awaymission/black_mesa/deep_sci_feesh) "xaY" = ( @@ -18964,7 +18964,7 @@ /area/awaymission/black_mesa/xen/acid_lake) "xdF" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plating, /area/awaymission/black_mesa/dorm_tunnel) "xdZ" = ( @@ -19283,7 +19283,7 @@ /area/awaymission/black_mesa/science_internal) "xyX" = ( /obj/effect/decal/remains/human, -/obj/item/salvage/loot/russian, +/obj/item/salvage/loot/soviet, /turf/simulated/floor/plating, /area/awaymission/black_mesa/security_outpost) "xzz" = ( diff --git a/_maps/map_files220/RandomZLevels/caves.dmm b/_maps/map_files220/RandomZLevels/caves.dmm index 831235326a0b..689743ab5bbc 100644 --- a/_maps/map_files220/RandomZLevels/caves.dmm +++ b/_maps/map_files220/RandomZLevels/caves.dmm @@ -872,7 +872,7 @@ /turf/simulated/floor/carpet/purple, /area/awaymission/caves/build/reqpower_build) "dX" = ( -/turf/simulated/floor/plating/asteroid/airless/cave/volcanic, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/awaymission/caves) "ea" = ( /mob/living/simple_animal/hostile/asteroid/hivelord{ @@ -3498,7 +3498,7 @@ /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/awaymission/caves) "sn" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/laser/retro, /obj/item/gun/energy/laser/retro, /obj/effect/spawner/random_spawners/dirt_often, @@ -7500,7 +7500,7 @@ "Od" = ( /obj/effect/turf_decal/delivery, /obj/effect/spawner/random_spawners/dirt_often, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/lavaland_air{ icon_state = "dark" }, @@ -8151,10 +8151,6 @@ }, /turf/simulated/floor/engine/cult/lavaland_air, /area/awaymission/caves) -"RX" = ( -/obj/machinery/hydroponics/soil, -/turf/simulated/floor/plating/asteroid/airless/cave/volcanic, -/area/awaymission/caves) "RY" = ( /turf/simulated/floor/plasteel/lavaland_air, /area/awaymission/caves) @@ -8315,7 +8311,7 @@ "SV" = ( /obj/structure/sink/puddle, /obj/item/reagent_containers/glass/bucket/wooden, -/turf/simulated/floor/plating/asteroid/airless/cave/volcanic, +/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/awaymission/caves) "SX" = ( /obj/machinery/power/smes, @@ -8541,7 +8537,7 @@ "TV" = ( /obj/effect/turf_decal/delivery/white, /obj/effect/spawner/random_spawners/dirt_often, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel/lavaland_air{ icon_state = "dark" }, @@ -9585,7 +9581,7 @@ /turf/simulated/floor/engine/cult/lavaland_air, /area/awaymission/caves) "YS" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/disabler, /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plasteel/dark{ @@ -9730,9 +9726,6 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/awaymission/caves) -"ZJ" = ( -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/awaymission/caves) "ZL" = ( /obj/machinery/door/airlock/hatch, /turf/simulated/floor/plating/lavaland_air, @@ -10741,7 +10734,7 @@ LU LU LU LU -RX +EN SV LU va @@ -10972,264 +10965,264 @@ LU LU LU LU -RX -dX -dX -sm -hu -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -"} -(7,1,1) = {" -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -En -En -En -LU -LU -RX -ZJ -ZJ -ZJ -NX -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU +EN +dX +dX +sm +hu +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +"} +(7,1,1) = {" +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +En +En +En +LU +LU +EN +dX +dX +dX +NX +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU LU LU LU @@ -11436,9 +11429,9 @@ II En En LU -RX +EN uy -ZJ +dX En En En @@ -11698,9 +11691,9 @@ LU LU LU LU -ZJ -ZJ -ZJ +dX +dX +dX LU LU LU @@ -11755,11 +11748,11 @@ TK TK Cb Cb -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX Cb TK TK @@ -11929,9 +11922,9 @@ TK TK TK LU -ZJ -ZJ -ZJ +dX +dX +dX LU LU LU @@ -11974,23 +11967,23 @@ TK TK TK TK -ZJ +dX Te TK TK -ZJ +dX sr sr -ZJ +dX sr TK TK TK TK TK -ZJ +dX sr -ZJ +dX TK TK TK @@ -11999,7 +11992,7 @@ TK TK TK TK -ZJ +dX sr TK TK @@ -12163,8 +12156,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK LU LU @@ -12187,9 +12180,9 @@ LU LU LU LU -ZJ +dX LU -ZJ +dX LU LU LU @@ -12215,19 +12208,19 @@ TK TK sr sr -ZJ +dX TK TK TK -ZJ +dX sr sr -ZJ +dX TK TK TK sr -ZJ +dX sr Te TK @@ -12235,7 +12228,7 @@ TK sr sr sr -ZJ +dX TK TK LU @@ -12264,10 +12257,10 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -12300,7 +12293,7 @@ TK TK TK TK -ZJ +dX Aq TK TK @@ -12396,7 +12389,7 @@ TK TK TK TK -ZJ +dX TK LU LU @@ -12417,11 +12410,11 @@ LU LU LU LU -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX va LU LU @@ -12439,34 +12432,34 @@ TK TK TK TK -ZJ +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr sr sr -ZJ -ZJ -ZJ +dX +dX +dX sr hQ -ZJ +dX sr sr sr sr sr sr -ZJ -ZJ +dX +dX Te TK TK sr -ZJ +dX TK TK TK @@ -12489,19 +12482,19 @@ TK TK TK Sx -ZJ +dX bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -12530,10 +12523,10 @@ TK TK TK TK -ZJ +dX Gc -ZJ -ZJ +dX +dX TK TK TK @@ -12627,8 +12620,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -12648,14 +12641,14 @@ LU LU LU LU -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX LU LU LU @@ -12675,17 +12668,17 @@ Te sr TK TK -ZJ +dX Te TK -ZJ +dX PF sr -ZJ +dX sr sr -ZJ -ZJ +dX +dX TK TK TK @@ -12698,7 +12691,7 @@ TK TK sr sr -ZJ +dX TK TK TK @@ -12720,20 +12713,20 @@ LU TK TK TK -ZJ +dX Sl bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX TK TK TK @@ -12742,7 +12735,7 @@ Ez kD NY Kp -ZJ +dX gO CL CL @@ -12763,10 +12756,10 @@ TK TK TK xz -ZJ +dX Tr PG -ZJ +dX TK TK TK @@ -12859,7 +12852,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -12880,15 +12873,15 @@ LU LU LU nu -ZJ -ZJ +dX +dX nu -ZJ -ZJ +dX +dX nu -ZJ -ZJ -ZJ +dX +dX +dX LU LU TK @@ -12904,20 +12897,20 @@ TK TK TK TK -ZJ +dX sr sr sr TK -ZJ +dX sr sr sr sr sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK sr @@ -12925,11 +12918,11 @@ sr sr sr sr -ZJ -ZJ +dX +dX sr sr -ZJ +dX sr sr TK @@ -12952,20 +12945,20 @@ LU TK TK TK -ZJ +dX TK bO bO bO -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ +dX TK TK TK @@ -12973,11 +12966,11 @@ va aV yw yw -ZJ -ZJ +dX +dX gc Aq -ZJ +dX nx dU EZ @@ -12996,9 +12989,9 @@ TK TK TK cO -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -13091,8 +13084,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -13118,8 +13111,8 @@ nu nu nu nu -ZJ -ZJ +dX +dX LU LU LU @@ -13138,7 +13131,7 @@ TK TK TK nx -ZJ +dX Te TK sr @@ -13149,7 +13142,7 @@ sr sr TK TK -ZJ +dX Cb TK sr @@ -13158,9 +13151,9 @@ sr sr sr sr -ZJ +dX TK -ZJ +dX sr TK sr @@ -13197,14 +13190,14 @@ TK TK TK TK -ZJ +dX TK -ZJ +dX Aq -ZJ +dX gO aV -ZJ +dX kD VD WW @@ -13324,8 +13317,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK LU @@ -13349,12 +13342,12 @@ kD Ja nu nu -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX LU LU TK @@ -13369,10 +13362,10 @@ TK TK TK TK -ZJ +dX TK TK -ZJ +dX sr sr sr @@ -13382,7 +13375,7 @@ sr TK TK Cb -ZJ +dX TK TK TK @@ -13429,25 +13422,25 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX gc -ZJ -ZJ +dX +dX Aq bO bO Xn bO -ZJ +dX nx SB fz gc -ZJ +dX bO bO bO @@ -13532,7 +13525,7 @@ va sm sm va -ZJ +dX TK TK TK @@ -13557,7 +13550,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -13580,12 +13573,12 @@ VD kD nu nu -ZJ -ZJ -ZJ +dX +dX +dX hu -ZJ -ZJ +dX +dX Aq LU LU @@ -13601,8 +13594,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX sr sr sr @@ -13611,14 +13604,14 @@ sr sr sr sr -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX Te TK TK @@ -13667,7 +13660,7 @@ TK TK TK wr -ZJ +dX aV bO bO @@ -13693,7 +13686,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -13756,14 +13749,14 @@ TK TK TK TK -ZJ -ZJ +dX +dX BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -13788,8 +13781,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK LU @@ -13813,12 +13806,12 @@ VD ee aP cH -ZJ +dX nx -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU TK @@ -13833,22 +13826,22 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr sr sr sr sr sr -ZJ -ZJ +dX +dX sr sr -ZJ +dX TK -ZJ +dX TK TK TK @@ -13888,8 +13881,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -13908,7 +13901,7 @@ bO bO bO bO -ZJ +dX aV bO bO @@ -13922,11 +13915,11 @@ TK TK TK bO -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -13991,11 +13984,11 @@ TK TK BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -14016,11 +14009,11 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK @@ -14045,12 +14038,12 @@ VD nu kF Ki -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU -ZJ +dX LU LU TK @@ -14062,7 +14055,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -14074,17 +14067,17 @@ sr sr sr sr -ZJ +dX sr sr -ZJ +dX PF sr sr sr sr hQ -ZJ +dX TK TK TK @@ -14120,10 +14113,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -14141,7 +14134,7 @@ bO bO bO aV -ZJ +dX bO bO bO @@ -14156,10 +14149,10 @@ bO bO bO Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -14225,8 +14218,8 @@ BH BH BH TK -ZJ -ZJ +dX +dX TK TK TK @@ -14249,9 +14242,9 @@ TK TK TK nx -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -14275,15 +14268,15 @@ nu Nm nu nu -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX va -ZJ -ZJ -ZJ +dX +dX +dX LU TK TK @@ -14306,15 +14299,15 @@ sr sr sr ri -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK sr -ZJ +dX sr sr sr @@ -14353,11 +14346,11 @@ Ot Ot Ot Ot -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -14371,10 +14364,10 @@ bO bO bO EW -ZJ +dX kD aV -ZJ +dX bO bO bO @@ -14388,11 +14381,11 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -14457,8 +14450,8 @@ TK BH TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -14476,12 +14469,12 @@ TK TK TK TK -ZJ +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -14507,15 +14500,15 @@ VD VD kD BW -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX LU TK TK @@ -14524,10 +14517,10 @@ TK TK TK nx -ZJ +dX TK -ZJ -ZJ +dX +dX sr sr sr @@ -14540,16 +14533,16 @@ hQ ri sr sr -ZJ -ZJ +dX +dX TK TK TK TK sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -14587,9 +14580,9 @@ yN Ot Ot Ot -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -14601,12 +14594,12 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX kD -ZJ -ZJ +dX +dX bO bO bO @@ -14618,13 +14611,13 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -14684,14 +14677,14 @@ TK TK TK TK -ZJ +dX BH BH BH TK -ZJ +dX Xq -ZJ +dX Aq BH BH @@ -14708,15 +14701,15 @@ BH BH BH Aq -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK @@ -14739,28 +14732,28 @@ kD kD kD KX -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -TK -TK -TK -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +TK +TK +TK +dX +dX +dX iH -ZJ +dX va -ZJ +dX sr sr PF @@ -14769,15 +14762,15 @@ sr sr sr sr -ZJ +dX ri -ZJ +dX sr -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX sr TK TK @@ -14819,10 +14812,10 @@ Wt zU KZ Ot -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK bO @@ -14835,10 +14828,10 @@ Zj Zj kG kG -ZJ +dX kD kD -ZJ +dX bO bO bO @@ -14850,12 +14843,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -14915,16 +14908,16 @@ TK TK TK TK -ZJ +dX BH BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -14939,18 +14932,18 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK LU @@ -14972,26 +14965,26 @@ Nm nu nu nx -ZJ -ZJ -ZJ +dX +dX +dX LU -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU TK -ZJ +dX TK TK TK -ZJ +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr sr sr @@ -15000,16 +14993,16 @@ sr sr sr sr -ZJ +dX sr sr sr sr sr -ZJ +dX TK TK -ZJ +dX sr Te TK @@ -15052,14 +15045,14 @@ Ot Ot Ot fF -ZJ +dX tK -ZJ +dX TK bO bO TK -ZJ +dX aV kG Is @@ -15070,11 +15063,11 @@ kG Aq VD kD -ZJ +dX bO -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -15082,12 +15075,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -15154,8 +15147,8 @@ BH BH BH Aq -ZJ -ZJ +dX +dX BH BH BH @@ -15173,16 +15166,16 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK LU LU @@ -15203,13 +15196,13 @@ nu kD VD nu -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU -ZJ -ZJ +dX +dX nx LU LU @@ -15218,11 +15211,11 @@ hu TK TK TK -ZJ +dX TK TK TK -ZJ +dX sr sr sr @@ -15233,16 +15226,16 @@ sr sr sr PF -ZJ -ZJ +dX +dX sr -ZJ +dX sr sr -ZJ -ZJ +dX +dX sr -ZJ +dX TK TK TK @@ -15299,10 +15292,10 @@ KP MA xV kG -ZJ +dX VD kD -ZJ +dX TK TK TK @@ -15314,12 +15307,12 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ -ZJ +dX +dX TK TK TK @@ -15386,7 +15379,7 @@ BH BH BH BH -ZJ +dX mf BH BH @@ -15406,14 +15399,14 @@ BH BH BH BH -ZJ -ZJ +dX +dX nx -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -15436,21 +15429,21 @@ kD VD jX Xx -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX LU LU TK nx -ZJ +dX TK TK -ZJ +dX TK TK TK @@ -15463,13 +15456,13 @@ sr sr sr sr -ZJ +dX sr -ZJ +dX va sr -ZJ -ZJ +dX +dX sr sr sr @@ -15531,10 +15524,10 @@ nE fa WG kG -ZJ -ZJ +dX +dX kD -ZJ +dX TK TK TK @@ -15547,12 +15540,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -15618,18 +15611,18 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH -ZJ +dX BH BH BH @@ -15639,13 +15632,13 @@ BH BH BH TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -15668,18 +15661,18 @@ VD kD nu nu -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX LU LU TK TK -ZJ +dX TK TK sr @@ -15694,17 +15687,17 @@ sr sr hQ sr -ZJ -ZJ +dX +dX sr -ZJ +dX nx sr -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK sr @@ -15766,7 +15759,7 @@ kG Cx VD kD -ZJ +dX TK TK TK @@ -15779,10 +15772,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -15850,19 +15843,19 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH -ZJ -ZJ +dX +dX BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -15872,11 +15865,11 @@ BH BH BH TK -ZJ -ZJ +dX +dX Aq TK -ZJ +dX TK TK TK @@ -15901,18 +15894,18 @@ kD Ja nu nu -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ +dX LU LU TK TK -ZJ -ZJ +dX +dX sr sr sr @@ -15938,7 +15931,7 @@ TK sr sr TK -ZJ +dX sr sr TK @@ -15979,8 +15972,8 @@ AR nK lZ Ot -ZJ -ZJ +dX +dX TK TK bO @@ -15998,7 +15991,7 @@ Kw NY kD kD -ZJ +dX TK TK TK @@ -16013,8 +16006,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -16071,7 +16064,7 @@ TK TK UI Hh -ZJ +dX BH BH BH @@ -16083,17 +16076,17 @@ BH BH BH mf -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH BH BH -ZJ -ZJ +dX +dX nx BH BH @@ -16104,12 +16097,12 @@ BH BH BH TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK LU @@ -16134,11 +16127,11 @@ nu nu nu nu -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX LU TK TK @@ -16170,8 +16163,8 @@ TK sr sr TK -ZJ -ZJ +dX +dX TK TK TK @@ -16211,7 +16204,7 @@ mN Ot Ot Ot -ZJ +dX TK TK TK @@ -16230,7 +16223,7 @@ kG AW kD kD -ZJ +dX TK TK Bu @@ -16247,7 +16240,7 @@ TK nX nX nX -ZJ +dX TK TK TK @@ -16302,7 +16295,7 @@ TK TK mz mz -ZJ +dX ms BH BH @@ -16313,7 +16306,7 @@ mz BH BH BH -ZJ +dX Xq BH BH @@ -16321,13 +16314,13 @@ BH BH BH BH -ZJ +dX BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -16335,14 +16328,14 @@ BH BH BH BH -ZJ -ZJ +dX +dX nx -ZJ +dX TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK LU @@ -16360,16 +16353,16 @@ LU LU LU nu -ZJ -ZJ +dX +dX nu -ZJ -ZJ +dX +dX nu -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU TK @@ -16397,12 +16390,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nx -ZJ +dX TK TK TK @@ -16441,9 +16434,9 @@ Ot Ot Ot Ot -ZJ -ZJ -ZJ +dX +dX +dX TK TK bO @@ -16462,7 +16455,7 @@ kG Lr kD VD -ZJ +dX Pb mc mc @@ -16535,30 +16528,30 @@ TK TK mz Xq -ZJ +dX BH fc BH mz Xq Xq -ZJ +dX BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH Aq -ZJ +dX BH BH BH @@ -16567,13 +16560,13 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -16592,14 +16585,14 @@ LU LU LU LU -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX va LU LU @@ -16621,17 +16614,17 @@ TK TK TK nx -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK TK TK @@ -16639,7 +16632,7 @@ TK TK TK Te -ZJ +dX TK PF TK @@ -16664,15 +16657,15 @@ LU TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK -ZJ +dX TK TK TK @@ -16684,7 +16677,7 @@ TK TK yK kD -ZJ +dX kG Ok LH @@ -16694,10 +16687,10 @@ kG Lr kD kD -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Pb mc TK @@ -16755,7 +16748,7 @@ mz mz YZ mz -ZJ +dX mz mz TK @@ -16766,7 +16759,7 @@ TK TK TK TK -ZJ +dX Aq zW BH @@ -16777,16 +16770,16 @@ Aq BH BH BH -ZJ +dX nx -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH -ZJ +dX BH BH BH @@ -16798,13 +16791,13 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -16825,12 +16818,12 @@ LU LU LU LU -ZJ -ZJ +dX +dX Aq -ZJ +dX LU -ZJ +dX LU LU LU @@ -16849,21 +16842,21 @@ TK TK sr nx -ZJ +dX sr TK -ZJ -ZJ -ZJ +dX +dX +dX sr -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK TK @@ -16873,7 +16866,7 @@ TK TK sr sr -ZJ +dX sr sr TK @@ -16896,15 +16889,15 @@ LU TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK -ZJ +dX TK TK TK @@ -16913,7 +16906,7 @@ bO TK TK TK -ZJ +dX yK kD aV @@ -16926,10 +16919,10 @@ kG Lr uP kD -ZJ -ZJ +dX +dX Aq -ZJ +dX kG kG kG @@ -16988,7 +16981,7 @@ mz Dv mz mz -ZJ +dX TK TK TK @@ -16997,8 +16990,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX BH BH BH @@ -17008,14 +17001,14 @@ mz BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX ms -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -17029,14 +17022,14 @@ BH BH BH BH -ZJ +dX BH BH BH BH BH -ZJ -ZJ +dX +dX BH TK TK @@ -17058,8 +17051,8 @@ LU LU LU LU -ZJ -ZJ +dX +dX LU LU LU @@ -17085,18 +17078,18 @@ sr sr TK sr -ZJ +dX sr -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -17106,8 +17099,8 @@ TK TK sr TK -ZJ -ZJ +dX +dX sr Te LU @@ -17128,15 +17121,15 @@ LU TK TK TK -ZJ +dX Aq -ZJ +dX bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -17158,10 +17151,10 @@ kG Lr kD kD -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX kG gq Fx @@ -17230,7 +17223,7 @@ TK TK TK TK -ZJ +dX BH BH BH @@ -17240,15 +17233,15 @@ BH BH BH Es -ZJ +dX Xq Xq Xq cT Xq -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -17259,18 +17252,18 @@ BH BH BH BH -ZJ +dX BH BH BH -ZJ +dX BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH -ZJ +dX TK LU LU @@ -17316,13 +17309,13 @@ PF sr TK TK -ZJ +dX sr hQ -ZJ +dX TK TK -ZJ +dX TK TK TK @@ -17335,10 +17328,10 @@ TK sr sr sr -ZJ -ZJ +dX +dX TK -ZJ +dX sr sr sr @@ -17362,7 +17355,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -17383,17 +17376,17 @@ kD NY TX Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Lr NY -ZJ +dX gO -ZJ +dX va -ZJ +dX kG gq Od @@ -17408,7 +17401,7 @@ TK TK TK TK -ZJ +dX Aq TK TK @@ -17451,7 +17444,7 @@ LU mz jm mz -ZJ +dX Dv ml sz @@ -17462,7 +17455,7 @@ TK TK TK TK -ZJ +dX BH BH BH @@ -17471,17 +17464,17 @@ BH BH BH BH -ZJ +dX RU Xq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX fc -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -17494,15 +17487,15 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH -ZJ -ZJ +dX +dX LU LU LU @@ -17554,25 +17547,25 @@ sr sr TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK sr sr -ZJ -ZJ +dX +dX sr hQ -ZJ +dX TK LU LU @@ -17594,9 +17587,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -17623,9 +17616,9 @@ Lt kD aV gc -ZJ -ZJ -ZJ +dX +dX +dX kG ED NP @@ -17634,14 +17627,14 @@ tW gq kG mc -ZJ +dX TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -17684,10 +17677,10 @@ mz Gi mz ml -ZJ +dX bK Dv -ZJ +dX nx In TK @@ -17702,18 +17695,18 @@ BH BH BH BH -ZJ +dX Xq mf Xq -ZJ +dX Xq -ZJ +dX mf -ZJ +dX Xq mf -ZJ +dX BH BH BH @@ -17724,16 +17717,16 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK LU TK @@ -17766,7 +17759,7 @@ aT sr sr TK -ZJ +dX TK TK TK @@ -17787,11 +17780,11 @@ sr TK TK ap -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -17801,9 +17794,9 @@ TK TK PF sr -ZJ +dX sr -ZJ +dX TK TK LU @@ -17828,8 +17821,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -17840,8 +17833,8 @@ bO TK TK TK -ZJ -ZJ +dX +dX yK kD NY @@ -17866,14 +17859,14 @@ tW Od kG mc -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -17935,18 +17928,18 @@ BH mz rN Xq -ZJ +dX mz Xq Xq mz mz mz -ZJ -ZJ +dX +dX Xq -ZJ -ZJ +dX +dX BH BH BH @@ -17955,16 +17948,16 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX LU LU TK @@ -17998,17 +17991,17 @@ TK TK TK sr -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX iH TK -ZJ -ZJ +dX +dX sr TK TK @@ -18017,10 +18010,10 @@ sr sr sr TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK sr TK @@ -18032,10 +18025,10 @@ sr sr sr sr -ZJ +dX Te TK -ZJ +dX sr TK LU @@ -18061,8 +18054,8 @@ bO TK TK TK -ZJ -ZJ +dX +dX TK bO bO @@ -18079,7 +18072,7 @@ NY jY gc fF -ZJ +dX kD kD kD @@ -18098,14 +18091,14 @@ NJ Kl kG Pb -ZJ -ZJ -ZJ +dX +dX +dX ko -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -18148,8 +18141,8 @@ TK TK mz Bl -ZJ -ZJ +dX +dX Dv mz mz @@ -18165,7 +18158,7 @@ BH mz mz mz -ZJ +dX fD mz mz @@ -18175,27 +18168,27 @@ mz mz mz mz -ZJ +dX kf -ZJ -ZJ +dX +dX BH BH BH BH -ZJ -ZJ +dX +dX BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH BH BH -ZJ +dX LU LU LU @@ -18227,20 +18220,20 @@ TK TK aT sr -ZJ -ZJ +dX +dX sr hQ -ZJ +dX TK TK -ZJ +dX TK TK -ZJ +dX TK TK -ZJ +dX sr sr TK @@ -18252,9 +18245,9 @@ TK sr hQ sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -18263,8 +18256,8 @@ TK Te TK TK -ZJ -ZJ +dX +dX TK sr sr @@ -18294,9 +18287,9 @@ bO bO TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK bO @@ -18310,11 +18303,11 @@ kD kD aV Aq -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX FY vo vo @@ -18329,15 +18322,15 @@ Ej NJ Kl kG -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX WJ -ZJ -ZJ +dX +dX TK TK TK @@ -18386,18 +18379,18 @@ wQ mz TK VX -ZJ -ZJ +dX +dX Xq mz mz mz -ZJ +dX fD fD iF Xq -ZJ +dX mz mz mz @@ -18408,24 +18401,24 @@ HG HG mz kf -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH fD iF Xq -ZJ -ZJ +dX +dX nx -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH -ZJ +dX BH BH mz @@ -18461,16 +18454,16 @@ TK TK aT PF -ZJ +dX sr nx TK -ZJ -ZJ +dX +dX TK TK va -ZJ +dX TK TK TK @@ -18481,13 +18474,13 @@ sr sr sr TK -ZJ -ZJ +dX +dX sr sr TK -ZJ -ZJ +dX +dX TK TK TK @@ -18495,12 +18488,12 @@ TK TK TK TK -ZJ +dX sr sr -ZJ +dX sr -ZJ +dX TK LU LU @@ -18526,8 +18519,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -18540,10 +18533,10 @@ kD kD kD aV -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX kG EE HY @@ -18561,15 +18554,15 @@ MH MH kG kG -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -18619,7 +18612,7 @@ TK TK TK Xq -ZJ +dX UI Se iF @@ -18629,7 +18622,7 @@ Xq Xq Xq IX -ZJ +dX tZ mz HG @@ -18640,12 +18633,12 @@ HG kf EM kf -ZJ -ZJ -ZJ +dX +dX +dX Xq Xq -ZJ +dX Xq Xq IX @@ -18656,8 +18649,8 @@ Xq IX Xq Xq -ZJ -ZJ +dX +dX EZ Aq mz @@ -18689,19 +18682,19 @@ TK TK TK TK -ZJ +dX TK sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK Aq -ZJ +dX TK -ZJ -ZJ +dX +dX sr TK TK @@ -18713,10 +18706,10 @@ sr sr TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK sr @@ -18726,10 +18719,10 @@ TK TK sr Te -ZJ +dX va -ZJ -ZJ +dX +dX sr sr sr @@ -18758,24 +18751,24 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK cF NY kD NY -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ +dX kG lp JC @@ -18793,14 +18786,14 @@ KY kD Xy WW -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX cO TK TK @@ -18849,19 +18842,19 @@ TK TK TK TK -ZJ +dX ET vI -ZJ +dX Se RV rN Hw Xq RU -ZJ +dX nx -ZJ +dX mz mz HG @@ -18871,10 +18864,10 @@ kf kf EM HG -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX sV Xq Xq @@ -18884,8 +18877,8 @@ Xq Hw Xq RU -ZJ -ZJ +dX +dX fD fD iF @@ -18922,20 +18915,20 @@ sr TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK TK @@ -18946,23 +18939,23 @@ sr TK TK nx -ZJ +dX va -ZJ +dX TK TK sr -ZJ +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX sr TK TK @@ -18991,8 +18984,8 @@ bO bO TK TK -ZJ -ZJ +dX +dX TK qY vJ @@ -19004,10 +18997,10 @@ lt gc TK TK -ZJ +dX bO -ZJ -ZJ +dX +dX mC FJ NS @@ -19018,22 +19011,22 @@ HM rp kD NY -ZJ -ZJ +dX +dX VD kD kD wZ -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -19083,17 +19076,17 @@ TK nF mf ET -ZJ -ZJ +dX +dX mz mz BH sV In mz -ZJ +dX fi -ZJ +dX mz mz HG @@ -19103,24 +19096,24 @@ kf HG HG HG -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nx Xq BH BH BH -ZJ +dX sV In BH -ZJ +dX fi Xq -ZJ -ZJ +dX +dX wQ Bw iC @@ -19151,18 +19144,18 @@ sr sr sr sr -ZJ +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK TK @@ -19178,11 +19171,11 @@ sr TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK nx TK @@ -19190,7 +19183,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -19224,8 +19217,8 @@ bO bO TK TK -ZJ -ZJ +dX +dX cF kD kD @@ -19236,9 +19229,9 @@ Pb TK TK TK -ZJ +dX bO -ZJ +dX bO kG jA @@ -19249,21 +19242,21 @@ wh HM pt kD -ZJ +dX Aq -ZJ -ZJ +dX +dX VD jC wZ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX rB TK TK @@ -19314,7 +19307,7 @@ TK TK Xq UI -ZJ +dX hH mz mz @@ -19325,7 +19318,7 @@ mz mz BH BH -ZJ +dX mz mz mz @@ -19336,22 +19329,22 @@ HG HG mz kf -ZJ -ZJ -ZJ +dX +dX +dX Xq BH BH BH BH BH -ZJ +dX BH BH BH BH -ZJ -ZJ +dX +dX wQ nx mB @@ -19380,27 +19373,27 @@ TK TK TK TK -ZJ +dX sr hQ sr -ZJ +dX TK TK TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX TK TK Aq -ZJ +dX TK TK TK @@ -19411,23 +19404,23 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX TK TK TK TK TK -ZJ +dX TK TK TK TK -ZJ +dX sr TK LU @@ -19467,8 +19460,8 @@ kD Pb TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -19482,21 +19475,21 @@ kI rp kD NY -ZJ -ZJ +dX +dX VD kD kD wE -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX Aq -ZJ +dX TK TK TK @@ -19544,12 +19537,12 @@ TK mz mz mz -ZJ +dX mz mz mz mz -ZJ +dX mz BH BH @@ -19557,8 +19550,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX mz mz mz @@ -19567,22 +19560,22 @@ mz mz mz mz -ZJ +dX UP -ZJ -ZJ +dX +dX BH BH BH BH BH BH -ZJ +dX BH BH BH BH -ZJ +dX BH BH BH @@ -19624,16 +19617,16 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -19641,15 +19634,15 @@ sr sr TK TK -ZJ +dX TK -ZJ +dX Aq TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -19660,7 +19653,7 @@ TK TK TK TK -ZJ +dX TK LU LU @@ -19681,7 +19674,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -19699,8 +19692,8 @@ mc mc TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -19714,21 +19707,21 @@ kG Ea kD NY -ZJ +dX gc kD kD kD wZ gc -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX rB TK TK @@ -19775,13 +19768,13 @@ tZ tm mz EZ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX In mz -ZJ +dX mz BH BH @@ -19790,18 +19783,18 @@ BH BH BH BH -ZJ -ZJ +dX +dX mz mz mz mz mz mz -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -19809,8 +19802,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX Aq BH BH @@ -19848,10 +19841,10 @@ sr sr sr sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX sr TK TK @@ -19860,11 +19853,11 @@ TK sr TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX sr TK TK @@ -19872,27 +19865,27 @@ TK sr TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX TK LU LU @@ -19912,8 +19905,8 @@ LU TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -19931,11 +19924,11 @@ TK TK TK TK -ZJ +dX bO bO bO -ZJ +dX kG he JC @@ -19956,11 +19949,11 @@ mJ Ro NF Lv -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -20006,14 +19999,14 @@ mz Xq nF mz -ZJ -ZJ +dX +dX UI Zv -ZJ +dX nU TK -ZJ +dX mz BH BH @@ -20026,14 +20019,14 @@ Xq Xq mf BH -ZJ +dX mf ms -ZJ +dX Bs Xq -ZJ -ZJ +dX +dX BH BH BH @@ -20043,15 +20036,15 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH BH BH BH -ZJ +dX LU TK TK @@ -20083,8 +20076,8 @@ sr sr sr sr -ZJ -ZJ +dX +dX sr TK TK @@ -20092,39 +20085,39 @@ TK sr TK TK -ZJ +dX nx TK TK TK -ZJ -ZJ +dX +dX TK sr sr TK Aq -ZJ +dX sr TK TK TK -ZJ +dX sr sr TK TK TK -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX sr TK Te TK -ZJ +dX TK LU LU @@ -20163,11 +20156,11 @@ TK TK TK TK -ZJ +dX bO Aq -ZJ -ZJ +dX +dX kG ir JC @@ -20188,11 +20181,11 @@ kD kD Sb fo -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -20238,7 +20231,7 @@ mz EZ mz mz -ZJ +dX ET GB TK @@ -20256,15 +20249,15 @@ Aq BH BH mf -ZJ +dX BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH BH BH @@ -20276,8 +20269,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -20316,39 +20309,39 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK sr TK -ZJ -ZJ +dX +dX sr -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -20389,17 +20382,17 @@ TK Lv aV aV -ZJ +dX TK TK TK TK TK -ZJ +dX bO bO bO -ZJ +dX kG lx JC @@ -20409,14 +20402,14 @@ mC kG Ts kD -ZJ -ZJ +dX +dX Jz kD kD kD NY -ZJ +dX kD hP SB @@ -20424,7 +20417,7 @@ Aq TK TK TK -ZJ +dX TK TK TK @@ -20468,10 +20461,10 @@ TK TK TK nx -ZJ -ZJ +dX +dX mf -ZJ +dX TK TK TK @@ -20484,18 +20477,18 @@ BH mz Xq Dc -ZJ +dX mz BH BH mf BH BH -ZJ +dX mf -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -20507,9 +20500,9 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -20543,7 +20536,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -20553,41 +20546,41 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX sr TK TK TK TK -ZJ +dX sr sr TK -ZJ +dX sr sr -ZJ +dX TK TK TK -ZJ +dX nx -ZJ -ZJ +dX +dX iH -ZJ +dX va -ZJ +dX TK TK TK sr TK -ZJ -ZJ +dX +dX sr TK LU @@ -20620,7 +20613,7 @@ bO bO bO Mq -ZJ +dX TK TK TK @@ -20629,7 +20622,7 @@ bO bO bO bO -ZJ +dX bO bO kG @@ -20641,7 +20634,7 @@ Po kG rp kD -ZJ +dX Qn Ic VD @@ -20701,20 +20694,20 @@ TK TK TK Xq -ZJ +dX Xq -ZJ +dX mz -ZJ -ZJ +dX +dX TK -ZJ +dX nx In Xq Xq BH -ZJ +dX UI mo mz @@ -20722,11 +20715,11 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX nx -ZJ +dX BH BH BH @@ -20738,18 +20731,18 @@ BH BH BH BH -ZJ +dX BH BH -ZJ +dX BH BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK LU @@ -20773,54 +20766,54 @@ TK Te TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr -ZJ -ZJ +dX +dX TK TK TK hQ -ZJ -ZJ +dX +dX sr sr -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK -ZJ +dX sr -ZJ +dX sr -ZJ +dX Te LU LU @@ -20848,22 +20841,22 @@ bO bO TK TK -ZJ +dX Aq bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX kG Nx JC @@ -20881,7 +20874,7 @@ Km tC nu CL -ZJ +dX SB fC nx @@ -20930,22 +20923,22 @@ Xq mz TK nx -ZJ +dX nx -ZJ -ZJ -ZJ +dX +dX +dX mz mz mz -ZJ -ZJ +dX +dX EZ mz mz BH rv -ZJ +dX Xq Xq mz @@ -20954,10 +20947,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -20970,10 +20963,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -20981,7 +20974,7 @@ BH BH nx BH -ZJ +dX TK LU LU @@ -21001,36 +20994,36 @@ LU LU TK TK -ZJ +dX sr -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK -ZJ +dX ap -ZJ +dX TK TK TK TK -ZJ +dX TK sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX sr -ZJ +dX TK TK TK @@ -21047,11 +21040,11 @@ sr sr TK TK -ZJ +dX PF sr TK -ZJ +dX sr TK LU @@ -21081,13 +21074,13 @@ TK TK TK TK -ZJ +dX bO -ZJ -ZJ +dX +dX bO bO -ZJ +dX TK TK TK @@ -21095,7 +21088,7 @@ TK TK TK TK -ZJ +dX kG cX Tu @@ -21105,7 +21098,7 @@ PZ kG rp kD -ZJ +dX nu nu Lq @@ -21162,7 +21155,7 @@ Xq mz mz mz -ZJ +dX Xq mz mz @@ -21171,9 +21164,9 @@ mz da mz Xq -ZJ -ZJ -ZJ +dX +dX +dX mz BH BH @@ -21186,10 +21179,10 @@ BH BH BH BH -ZJ +dX Aq -ZJ -ZJ +dX +dX BH BH BH @@ -21204,7 +21197,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -21212,7 +21205,7 @@ BH BH BH BH -ZJ +dX TK TK LU @@ -21234,35 +21227,35 @@ LU TK TK TK -ZJ +dX PF -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK nx -ZJ +dX sr -ZJ +dX TK TK TK TK TK -ZJ +dX va TK -ZJ -ZJ +dX +dX TK TK TK @@ -21281,7 +21274,7 @@ sr sr sr sr -ZJ +dX TK TK sr @@ -21315,8 +21308,8 @@ TK TK TK bO -ZJ -ZJ +dX +dX bO bO bO @@ -21327,7 +21320,7 @@ TK TK TK TK -ZJ +dX kG kI HY @@ -21337,7 +21330,7 @@ kG kG rp kD -ZJ +dX nu XZ Pj @@ -21345,7 +21338,7 @@ Pj Pj bt nu -ZJ +dX Aq nx TK @@ -21396,32 +21389,32 @@ TK mz mz Xq -ZJ -ZJ +dX +dX Xq -ZJ +dX cB Wk mf TK mz -ZJ +dX TK BH BH mz BH -ZJ +dX Xq -ZJ +dX BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX BH BH BH @@ -21468,41 +21461,41 @@ TK sr sr sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK ap -ZJ -ZJ +dX +dX Aq -ZJ +dX sr TK TK TK -ZJ +dX TK TK TK @@ -21512,11 +21505,11 @@ TK TK sr sr -ZJ +dX TK TK TK -ZJ +dX Te LU LU @@ -21540,10 +21533,10 @@ bO bO bO bO -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK Ck @@ -21559,9 +21552,9 @@ TK TK TK TK -ZJ +dX BY -ZJ +dX av dA Ro @@ -21569,7 +21562,7 @@ Ro Ro jW kD -ZJ +dX nu XZ Pj @@ -21577,7 +21570,7 @@ Pj Pj XZ nu -ZJ +dX TK TK TK @@ -21627,15 +21620,15 @@ mz TK TK mz -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX mf lc An -ZJ -ZJ +dX +dX mz mz TK @@ -21644,16 +21637,16 @@ BH BH BH mz -ZJ +dX BH BH BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -21675,7 +21668,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -21698,35 +21691,35 @@ LU TK sr hQ -ZJ -ZJ +dX +dX TK TK TK sr sr TK -ZJ -ZJ +dX +dX TK TK TK sr -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -21744,7 +21737,7 @@ TK TK sr TK -ZJ +dX sr TK TK @@ -21773,16 +21766,16 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX iA Ro dq NY aV -ZJ -ZJ +dX +dX TK TK bO @@ -21791,7 +21784,7 @@ bO TK TK TK -ZJ +dX bO Lv nW @@ -21801,7 +21794,7 @@ NY NY NY NY -ZJ +dX nu nu Pj @@ -21860,13 +21853,13 @@ TK TK mz mz -ZJ -ZJ +dX +dX TK mz jt mz -ZJ +dX mf Se UI @@ -21883,9 +21876,9 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -21907,7 +21900,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -21929,35 +21922,35 @@ LU LU Te sr -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX hQ -ZJ -ZJ +dX +dX sr sr -ZJ -ZJ +dX +dX sr TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX sr TK TK @@ -22004,16 +21997,16 @@ TK bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Lr kD kD NY kD -ZJ +dX TK TK TK @@ -22026,14 +22019,14 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX lt gc -ZJ +dX nu mc Pj @@ -22101,7 +22094,7 @@ mz mz mz mz -ZJ +dX TK TK TK @@ -22115,8 +22108,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX Aq BH BH @@ -22137,10 +22130,10 @@ BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX TK TK TK @@ -22160,22 +22153,22 @@ LU LU LU TK -ZJ +dX sr sr -ZJ -ZJ -ZJ +dX +dX +dX sr -ZJ -ZJ +dX +dX TK TK Te TK TK -ZJ -ZJ +dX +dX sr sr TK @@ -22192,16 +22185,16 @@ TK TK sr sr -ZJ +dX TK TK nx -ZJ +dX TK TK sr sr -ZJ +dX TK TK sr @@ -22235,17 +22228,17 @@ TK TK TK mc -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX Lr kD kD kD kD -ZJ +dX TK TK TK @@ -22260,12 +22253,12 @@ bO nQ Lv aV -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX nu nu bt @@ -22275,7 +22268,7 @@ nu nu TK TK -ZJ +dX nx nx RD @@ -22326,15 +22319,15 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX NI -ZJ +dX pd mz UI -ZJ +dX TK TK BH @@ -22348,8 +22341,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -22368,9 +22361,9 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX BH TK TK @@ -22393,13 +22386,13 @@ LU LU TK TK -ZJ -ZJ +dX +dX sr -ZJ -ZJ +dX +dX sr -ZJ +dX TK TK TK @@ -22408,14 +22401,14 @@ TK TK TK TK -ZJ +dX sr -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -22424,11 +22417,11 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX sr sr sr @@ -22443,7 +22436,7 @@ sr TK TK TK -ZJ +dX TK TK LU @@ -22468,16 +22461,16 @@ TK TK mc Pb -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX AZ kD kD Pw -ZJ -ZJ +dX +dX bO bO bO @@ -22494,9 +22487,9 @@ gc gf WR WR -ZJ +dX Aq -ZJ +dX TK TK nu @@ -22507,9 +22500,9 @@ nu TK TK TK -ZJ +dX Aq -ZJ +dX nx SB oo @@ -22557,16 +22550,16 @@ mz mz TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX sz -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK BH @@ -22580,7 +22573,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -22599,10 +22592,10 @@ BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX TK TK TK @@ -22625,40 +22618,40 @@ LU LU TK TK -ZJ -ZJ -ZJ +dX +dX +dX PF sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK -ZJ +dX Aq -ZJ -ZJ +dX +dX TK TK -ZJ +dX TK TK TK -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK sr @@ -22675,8 +22668,8 @@ sr sr TK TK -ZJ -ZJ +dX +dX TK LU LU @@ -22700,7 +22693,7 @@ TK TK TK Pb -ZJ +dX gc qi qi @@ -22726,9 +22719,9 @@ zp UM EB WR -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -22742,7 +22735,7 @@ TK TK TK TK -ZJ +dX yU kD kD @@ -22791,14 +22784,14 @@ mz mz mz Sh -ZJ +dX Ya -ZJ +dX Xq -ZJ +dX pd mz -ZJ +dX mz TK BH @@ -22810,10 +22803,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -22827,13 +22820,13 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH -ZJ +dX BH -ZJ +dX BH TK TK @@ -22859,42 +22852,42 @@ TK TK TK TK -ZJ -ZJ +dX +dX sr sr -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK TK TK TK -ZJ +dX sr sr -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK -ZJ +dX sr TK TK @@ -22904,11 +22897,11 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX sr LU LU @@ -22952,15 +22945,15 @@ TK bO bO qj -ZJ +dX BC KL uo uJ pZ -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23022,15 +23015,15 @@ Uz ms ET ET -ZJ +dX mf Bo -ZJ +dX bK sz -ZJ +dX mz -ZJ +dX mz TK BH @@ -23043,9 +23036,9 @@ TK TK BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -23058,12 +23051,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -23091,9 +23084,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX sr sr TK @@ -23101,8 +23094,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -23111,36 +23104,36 @@ TK TK TK TK -ZJ +dX TK TK TK TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX sr TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ +dX CO -ZJ -ZJ +dX +dX sr LU LU @@ -23175,10 +23168,10 @@ Ur UH Ih gc -ZJ +dX bO bO -ZJ +dX TK TK TK @@ -23190,9 +23183,9 @@ yw zp Os pZ -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23255,14 +23248,14 @@ fc ET mf Xq -ZJ +dX mf -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX mz -ZJ +dX mz TK TK @@ -23275,9 +23268,9 @@ TK BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -23290,13 +23283,13 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23321,42 +23314,42 @@ LU LU TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ +dX TK -ZJ +dX TK TK TK TK TK nx -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK sr @@ -23366,13 +23359,13 @@ TK TK TK nx -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ -ZJ +dX +dX sr LU LU @@ -23393,9 +23386,9 @@ TK TK nx lY -ZJ +dX EZ -ZJ +dX Wr qi dF @@ -23408,24 +23401,24 @@ zA LI EI nQ -ZJ +dX bO -ZJ +dX TK TK TK -ZJ +dX Ge -ZJ +dX bO -ZJ +dX aV lU gc GU -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23490,11 +23483,11 @@ hn bK TK TK -ZJ -ZJ +dX +dX pd mz -ZJ +dX mz TK BH @@ -23507,8 +23500,8 @@ TK BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -23522,12 +23515,12 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH -ZJ -ZJ +dX +dX BH TK TK @@ -23556,7 +23549,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -23566,26 +23559,26 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX ap -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK TK TK -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -23598,13 +23591,13 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK LU LU @@ -23626,8 +23619,8 @@ Bu Bu nx EZ -ZJ -ZJ +dX +dX rq gc gc @@ -23638,29 +23631,29 @@ ow gc EI tP -ZJ +dX HI -ZJ +dX bO -ZJ +dX TK TK -ZJ -ZJ +dX +dX EI -ZJ +dX bO bO -ZJ +dX BC XZ Ey -ZJ +dX sm -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -23722,11 +23715,11 @@ TK TK TK pd -ZJ +dX pd -ZJ -ZJ -ZJ +dX +dX +dX TK TK BH @@ -23738,10 +23731,10 @@ TK TK TK BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -23752,14 +23745,14 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -23787,8 +23780,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -23805,35 +23798,35 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK sr -ZJ +dX TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX hu nx TK @@ -23856,11 +23849,11 @@ LU TK nx lY -ZJ +dX vG -ZJ -ZJ -ZJ +dX +dX +dX gc Us bL @@ -23874,11 +23867,11 @@ bO bO bO bO -ZJ +dX TK -ZJ -ZJ -ZJ +dX +dX +dX WR aV Ki @@ -23887,13 +23880,13 @@ sq Os bt pm -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -23951,13 +23944,13 @@ mz ET mz TK -ZJ +dX sz mz mz mz -ZJ -ZJ +dX +dX TK TK BH @@ -23971,8 +23964,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -23983,15 +23976,15 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -24020,8 +24013,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -24037,7 +24030,7 @@ Te TK TK TK -ZJ +dX TK TK TK @@ -24045,12 +24038,12 @@ TK TK TK TK -ZJ +dX TK TK TK va -ZJ +dX TK TK TK @@ -24058,16 +24051,16 @@ sr sr sr sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK LU @@ -24088,11 +24081,11 @@ LU TK TK nx -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX ZL UH UF @@ -24103,14 +24096,14 @@ aV bt bO EI -ZJ +dX bO bO TK TK TK -ZJ -ZJ +dX +dX WR fU Ki @@ -24121,25 +24114,25 @@ WR XJ TK TK -ZJ -ZJ +dX +dX Aq -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK TK bO bO -ZJ +dX Lr kD kD Pw -ZJ +dX TK TK LU @@ -24184,11 +24177,11 @@ ET mz TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK BH @@ -24217,11 +24210,11 @@ BH BH BH BH -ZJ +dX BH BH BH -ZJ +dX TK TK TK @@ -24251,10 +24244,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -24269,38 +24262,38 @@ sr TK TK TK -ZJ +dX TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK LU LU @@ -24320,11 +24313,11 @@ LU TK TK mT -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX gc hF nc @@ -24333,7 +24326,7 @@ UH eE sh Wq -ZJ +dX gc TK bO @@ -24342,12 +24335,12 @@ bO TK TK TK -ZJ +dX WR EI XZ bO -ZJ +dX EI WR Ey @@ -24356,11 +24349,11 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -24417,9 +24410,9 @@ mz TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX mz TK TK @@ -24447,13 +24440,13 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH -ZJ -ZJ +dX +dX TK TK TK @@ -24482,11 +24475,11 @@ LU TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX TK TK TK @@ -24500,39 +24493,39 @@ TK sr TK nx -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX Aq TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK TK -ZJ +dX TK TK TK TK -ZJ +dX va -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK LU LU @@ -24552,10 +24545,10 @@ LU TK TK TK -ZJ +dX sm -ZJ -ZJ +dX +dX ZM qi qi @@ -24574,8 +24567,8 @@ bO bO bO TK -ZJ -ZJ +dX +dX bO bO bO @@ -24589,10 +24582,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -24661,11 +24654,11 @@ TK TK hu Aq -ZJ +dX TK TK TK -ZJ +dX Aq ns ns @@ -24679,13 +24672,13 @@ BH BH BH BH -ZJ +dX BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -24713,58 +24706,58 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX TK TK TK TK TK TK -ZJ +dX PF -ZJ +dX TK -ZJ +dX sr -ZJ -ZJ -ZJ +dX +dX +dX sr TK -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK TK sr -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX sr LU LU @@ -24785,9 +24778,9 @@ TK TK EN WJ -ZJ -ZJ -ZJ +dX +dX +dX Tw gc bm @@ -24799,7 +24792,7 @@ gc am XQ qi -ZJ +dX TK TK TK @@ -24810,10 +24803,10 @@ bO bO bO bO -ZJ +dX Ey -ZJ -ZJ +dX +dX TK TK TK @@ -24822,16 +24815,16 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX bO bO bO -ZJ +dX bO yw FP @@ -24891,18 +24884,18 @@ BH TK TK TK -ZJ +dX TK -ZJ +dX ns TK TK ns -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -24914,9 +24907,9 @@ BH BH BH BH -ZJ +dX TK -ZJ +dX TK TK TK @@ -24945,24 +24938,24 @@ LU LU TK TK -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK TK -ZJ +dX TK TK sr sr -ZJ +dX sr -ZJ +dX TK TK hQ @@ -24972,31 +24965,31 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ +dX sr sr -ZJ -ZJ +dX +dX sr -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK TK TK nx -ZJ +dX TK dU sr -ZJ +dX dU LU LU @@ -25016,10 +25009,10 @@ LU TK TK EN -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX va qi UH @@ -25031,7 +25024,7 @@ qi Gn hJ qi -ZJ +dX TK TK TK @@ -25056,9 +25049,9 @@ TK TK bO bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -25068,7 +25061,7 @@ bO yw ws WR -ZJ +dX TK LU LU @@ -25129,10 +25122,10 @@ sf ns TK TK -ZJ +dX TK TK -ZJ +dX ns ns TK @@ -25176,55 +25169,55 @@ LU LU LU TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX sr -ZJ +dX TK sr TK Te -ZJ +dX TK TK sr -ZJ -ZJ +dX +dX TK TK sr hQ sr sr -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK dU CO @@ -25263,7 +25256,7 @@ oP sw Au qi -ZJ +dX TK TK TK @@ -25289,8 +25282,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX Aq bO bO @@ -25300,7 +25293,7 @@ aV RY Jd Ge -ZJ +dX TK LU LU @@ -25356,12 +25349,12 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX TK TK TK @@ -25375,8 +25368,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX TK TK TK @@ -25408,12 +25401,12 @@ LU LU LU Cb -ZJ +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -25421,42 +25414,42 @@ TK TK TK TK -ZJ +dX sr -ZJ +dX Te TK sr TK -ZJ +dX sr -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ +dX TK TK nx -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK dU sr @@ -25508,7 +25501,7 @@ TK TK TK pm -ZJ +dX TK bO bO @@ -25522,17 +25515,17 @@ bO bO bO bO -ZJ +dX bO bO bO bO bO -ZJ +dX yw bc EI -ZJ +dX TK LU LU @@ -25588,9 +25581,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK ns ns @@ -25606,8 +25599,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX TK TK TK @@ -25644,25 +25637,25 @@ TK TK TK TK -ZJ +dX TK TK TK TK TK TK -ZJ +dX TK TK hQ sr -ZJ +dX sr -ZJ +dX PF sr sr -ZJ +dX TK TK TK @@ -25672,22 +25665,22 @@ TK TK TK TK -ZJ +dX sr sr -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX hu -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK nu @@ -25739,15 +25732,15 @@ bO TK TK TK -ZJ +dX bO bO bO TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -25759,12 +25752,12 @@ bO bO bO CZ -ZJ -ZJ +dX +dX yw si WR -ZJ +dX TK LU LU @@ -25834,11 +25827,11 @@ ns TK TK TK -ZJ +dX BH BH BH -ZJ +dX TK TK TK @@ -25875,7 +25868,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -25890,13 +25883,13 @@ sr TK TK sr -ZJ -ZJ +dX +dX TK ri -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -25906,8 +25899,8 @@ TK TK sr sr -ZJ -ZJ +dX +dX TK TK TK @@ -25979,7 +25972,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -25991,7 +25984,7 @@ bO bO bO bO -ZJ +dX aV UM FR @@ -26054,22 +26047,22 @@ TK TK TK TK -ZJ +dX ns hu ns ns -ZJ +dX kC TK TK TK TK TK -ZJ -ZJ +dX +dX BH -ZJ +dX TK TK TK @@ -26137,9 +26130,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -30153,10 +30146,10 @@ TK bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK Aq @@ -30372,7 +30365,7 @@ LU TK TK cO -ZJ +dX TK TK TK @@ -30383,16 +30376,16 @@ bO bO bO bO -ZJ -ZJ +dX +dX CO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -30603,19 +30596,19 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK bO bO -ZJ -ZJ +dX +dX bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO @@ -30624,10 +30617,10 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -30841,10 +30834,10 @@ TK bO bO CO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO @@ -30859,8 +30852,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK LU @@ -31071,8 +31064,8 @@ Aq TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -31083,16 +31076,16 @@ TK TK TK bO -ZJ -ZJ +dX +dX TK TK bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -31299,11 +31292,11 @@ bO TK TK Aq -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO TK @@ -31316,21 +31309,21 @@ TK TK bO bO -ZJ -ZJ +dX +dX TK TK TK bO bO bO -ZJ +dX TK TK TK LU nu -ZJ +dX Ge nu LU @@ -31530,39 +31523,39 @@ bO TK TK TK -ZJ -ZJ +dX +dX hu -ZJ +dX Aq -ZJ +dX TK TK TK TK TK TK -ZJ +dX TK -ZJ +dX TK -ZJ +dX bO bO -ZJ -ZJ +dX +dX TK TK bO bO bO -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX Kp TK LU @@ -31762,39 +31755,39 @@ bO TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ +dX +dX +dX bO bO hu -ZJ +dX TK TK TK bO bO CO -ZJ +dX TK TK TK TK -ZJ +dX bO TK TK @@ -31994,26 +31987,26 @@ bO bO bO TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO bO -ZJ +dX TK TK TK @@ -32021,12 +32014,12 @@ TK bO bO bO -ZJ +dX TK TK Aq TK -ZJ +dX bO bO TK @@ -32224,20 +32217,20 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX CO -ZJ +dX nx -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX bO bO bO @@ -32245,7 +32238,7 @@ bO bO bO bO -ZJ +dX TK TK TK @@ -32253,12 +32246,12 @@ TK bO bO bO -ZJ +dX TK bO -ZJ -ZJ -ZJ +dX +dX +dX VD bO bO @@ -32307,8 +32300,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -32454,42 +32447,42 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ -ZJ -ZJ +dX +dX +dX hu -ZJ +dX TK TK TK TK bO -ZJ -ZJ +dX +dX bO bO bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK bO bO bO -ZJ +dX bO bO sy -ZJ +dX kD Pb bO @@ -32539,9 +32532,9 @@ BH BH BH BH -ZJ +dX Xq -ZJ +dX BH BH BH @@ -32685,16 +32678,16 @@ bO bO bO bO -ZJ -ZJ +dX +dX bO bO bO TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -32702,14 +32695,14 @@ TK bO bO bO -ZJ +dX TK bO bO bO bO bO -ZJ +dX Aq TK TK @@ -32717,7 +32710,7 @@ TK bO bO bO -ZJ +dX bO bO bO @@ -32771,9 +32764,9 @@ BH BH BH BH -ZJ +dX Xq -ZJ +dX Aq BH BH @@ -32917,7 +32910,7 @@ bO TK TK TK -ZJ +dX bO bO bO @@ -32934,27 +32927,27 @@ TK bO bO bO -ZJ +dX TK bO bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX TK TK bO bO bO -ZJ +dX bO bO bO bO -ZJ +dX TK TK bO @@ -33006,7 +32999,7 @@ BH BH BH Xq -ZJ +dX BH BH BH @@ -33149,7 +33142,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -33165,26 +33158,26 @@ TK bO bO bO -ZJ -ZJ +dX +dX TK bO TK TK bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO -ZJ -ZJ +dX +dX bO bO -ZJ +dX aV va mc @@ -33236,9 +33229,9 @@ BH BH Xq Aq -ZJ +dX Xq -ZJ +dX vI BH BH @@ -33380,8 +33373,8 @@ bO TK TK TK -ZJ -ZJ +dX +dX bO bO TK @@ -33396,8 +33389,8 @@ TK bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -33406,19 +33399,19 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO -ZJ -ZJ +dX +dX bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX mc TK TK @@ -33470,7 +33463,7 @@ BH BH BH BH -ZJ +dX vI BH BH @@ -33534,11 +33527,11 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK TK TK @@ -33619,8 +33612,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -33628,7 +33621,7 @@ TK bO bO bO -ZJ +dX TK TK TK @@ -33639,17 +33632,17 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX bO -ZJ +dX bO bO bO va kD -ZJ +dX Pb TK TK @@ -33703,7 +33696,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -33768,9 +33761,9 @@ TK TK TK Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -33783,7 +33776,7 @@ Ge cc BH BH -ZJ +dX xf lD ZG @@ -33843,7 +33836,7 @@ bO bO bO bO -ZJ +dX bO bO TK @@ -33852,7 +33845,7 @@ TK TK TK EI -ZJ +dX bO bO bO @@ -33871,11 +33864,11 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO bO @@ -33934,7 +33927,7 @@ mz BH mz mz -ZJ +dX BH BH BH @@ -33942,7 +33935,7 @@ BH xd xd GF -ZJ +dX BH BH BH @@ -33997,11 +33990,11 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -34015,7 +34008,7 @@ Kp vx dU BH -ZJ +dX VB lD lD @@ -34074,8 +34067,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -34092,7 +34085,7 @@ bO bO bO bO -ZJ +dX TK TK TK @@ -34104,9 +34097,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX CO bO bO @@ -34229,249 +34222,249 @@ TK TK TK TK -ZJ -TK -TK -ZJ -ZJ -TK -TK -TK -TK -TK -TK -ZJ -ZC -ZC -rg -aV -BH -BH -BH -xf -lD -lD -jN -as -aH -Ik -as -lD -lD -lD -lD -lD -lD -as -rM -sU -mi -HU -Gg -OS -JO -as -UE -kp -PO -as -as -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -TK -TK -bO -bO -bO -bO -bO -bO -bO -bO -bO -bO -ZJ -ZJ -TK -TK -TK -TK -TK -TK -TK -WR -Kp -ZJ -bO -bO -bO -bO -bO -ZJ -ZJ -ZJ -TK -TK -TK -TK -TK -TK -TK -TK -TK -bO -bO -ZJ -ZJ -ZJ -ZJ -WR -WR -WR -kD -Za -EI -TK -TK -TK -TK -TK -bO -bO -TK -LU -LU -LU -"} -(107,1,1) = {" -LU -LU -LU -LU -LU -LU -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -mz -mz -mz -mz -OK -GF -GF -GF -GF -GF -xd -OK -BH -BH -BH -BH -IX -vI -Dt -sP -GF -wu -tD -mz -BH -BH -BH -BH -BH -BH -BH -BH -mz -wu -wu -GF -tD -tD -tD -GF -wu -wu -OK -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -BH -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -LU -TK -TK -TK -TK -TK -TK -TK +dX +TK +TK +dX +dX +TK +TK +TK +TK +TK +TK +dX +ZC +ZC +rg +aV +BH +BH +BH +xf +lD +lD +jN +as +aH +Ik +as +lD +lD +lD +lD +lD +lD +as +rM +sU +mi +HU +Gg +OS +JO +as +UE +kp +PO +as +as +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +TK +TK +bO +bO +bO +bO +bO +bO +bO +bO +bO +bO +dX +dX +TK +TK +TK +TK +TK +TK +TK +WR +Kp +dX +bO +bO +bO +bO +bO +dX +dX +dX +TK +TK +TK TK TK TK -ZJ TK TK TK +bO +bO +dX +dX +dX +dX +WR +WR +WR +kD +Za +EI +TK TK TK TK -ZJ +TK +bO +bO +TK +LU +LU +LU +"} +(107,1,1) = {" +LU +LU +LU +LU +LU +LU +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +mz +mz +mz +mz +OK +GF +GF +GF +GF +GF +xd +OK +BH +BH +BH +BH +IX +vI +Dt +sP +GF +wu +tD +mz +BH +BH +BH +BH +BH +BH +BH +BH +mz +wu +wu +GF +tD +tD +tD +GF +wu +wu +OK +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +BH +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +LU +TK +TK +TK +TK +TK +TK +TK +TK +TK +TK +dX +TK +TK +TK +TK +TK +TK +dX nx EV Ez @@ -34536,8 +34529,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -34547,7 +34540,7 @@ TK TK WR wD -ZJ +dX nx bO bO @@ -34570,7 +34563,7 @@ bO bO bO bO -ZJ +dX zJ wi dp @@ -34627,18 +34620,18 @@ GF xd xd mL -ZJ +dX ET vI ET Pl -ZJ +dX BH vI xd tD tD -ZJ +dX BH BH BH @@ -34696,15 +34689,15 @@ TK TK TK TK -ZJ +dX TK TK TK Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH rQ TZ @@ -34768,7 +34761,7 @@ bO bO bO bO -ZJ +dX bO TK TK @@ -34778,7 +34771,7 @@ TK TK TK fo -ZJ +dX nx bO bO @@ -34808,10 +34801,10 @@ kD kD kD zJ -ZJ +dX DQ -ZJ -ZJ +dX +dX TK TK bO @@ -34871,7 +34864,7 @@ BH tD tD vI -ZJ +dX BH BH BH @@ -34924,16 +34917,16 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX TK nx Aq @@ -34999,7 +34992,7 @@ bO bO bO bO -ZJ +dX hu bO TK @@ -35042,7 +35035,7 @@ kD bT aV WR -ZJ +dX bO TK TK @@ -35076,7 +35069,7 @@ BH BH OK mz -ZJ +dX wu xd GF @@ -35103,13 +35096,13 @@ BH xd GF vI -ZJ +dX nx BH BH BH BH -ZJ +dX ET ET mL @@ -35125,7 +35118,7 @@ mz BH BH BH -ZJ +dX BH BH BH @@ -35156,19 +35149,19 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK Aq -ZJ +dX BH BH uR @@ -35231,7 +35224,7 @@ bO bO bO bO -ZJ +dX bO bO TK @@ -35242,8 +35235,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -35308,7 +35301,7 @@ BH OK OK nx -ZJ +dX GF GF Sl @@ -35320,8 +35313,8 @@ BH BH BH nx -ZJ -ZJ +dX +dX BH BH BH @@ -35333,13 +35326,13 @@ BH BH BH mz -ZJ +dX ET -ZJ +dX mz BH BH -ZJ +dX ET vI ET @@ -35357,8 +35350,8 @@ OK vI BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -35392,14 +35385,14 @@ BH TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK -ZJ +dX BH BH BH @@ -35463,8 +35456,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -35475,7 +35468,7 @@ TK TK TK TK -ZJ +dX TK bO bO @@ -35485,11 +35478,11 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ +dX TK TK TK @@ -35498,7 +35491,7 @@ bO bO bO bO -ZJ +dX WR WR WR @@ -35538,7 +35531,7 @@ BH BH mz mz -ZJ +dX Xq GF xd @@ -35552,7 +35545,7 @@ BH BH BH BH -ZJ +dX nx BH BH @@ -35565,7 +35558,7 @@ BH BH BH BH -ZJ +dX ET fi vI @@ -35585,13 +35578,13 @@ mz mz vI OK -ZJ +dX BH vI BH BH Aq -ZJ +dX BH BH BH @@ -35618,16 +35611,16 @@ TK TK TK TK -ZJ +dX TK BH BH TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK TK TK @@ -35695,12 +35688,12 @@ bO bO bO bO -ZJ +dX CO bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -35711,33 +35704,33 @@ TK TK TK bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK bO bO bO -ZJ +dX va -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nQ ux -ZJ +dX bO bO bO @@ -35769,9 +35762,9 @@ BH BH BH mz -ZJ +dX mL -ZJ +dX xd wu wu @@ -35799,11 +35792,11 @@ BH BH vI ET -ZJ +dX ZH -ZJ +dX nx -ZJ +dX BH BH BH @@ -35819,11 +35812,11 @@ mz OK vI vI -ZJ +dX BH BH BH -ZJ +dX BH BH BH @@ -35849,23 +35842,23 @@ LU TK TK TK -ZJ -ZJ +dX +dX BH BH TK TK TK -ZJ +dX TK TK -ZJ +dX TK TK TK TK BH -ZJ +dX Aq BH BH @@ -35929,13 +35922,13 @@ bO bO bO nx -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX bO bO TK @@ -35943,29 +35936,29 @@ TK TK TK TK -ZJ +dX bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX VD bO bO @@ -36030,16 +36023,16 @@ BH BH fi nx -ZJ +dX ET ET ET -ZJ +dX BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -36081,23 +36074,23 @@ LU TK TK TK -ZJ +dX BH -ZJ +dX BH TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK BH -ZJ +dX BH BH BH @@ -36161,13 +36154,13 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX Aq -ZJ +dX bO bO TK @@ -36175,7 +36168,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -36185,22 +36178,22 @@ bO TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK Aq -ZJ +dX kD -ZJ -ZJ +dX +dX aV vb TK @@ -36230,7 +36223,7 @@ BH BH BH BH -ZJ +dX Xq mz OK @@ -36261,16 +36254,16 @@ BH BH BH BH -ZJ +dX Xq ET Xq vI -ZJ +dX BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -36313,18 +36306,18 @@ LU TK TK TK -ZJ +dX BH BH BH TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ +dX TK TK TK @@ -36393,14 +36386,14 @@ bO bO bO bO -ZJ +dX Aq -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX bO TK TK @@ -36419,19 +36412,19 @@ TK TK TK TK -ZJ +dX TK TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX aV nx nx @@ -36470,8 +36463,8 @@ mz GF mz Xq -ZJ -ZJ +dX +dX mz BH BH @@ -36495,12 +36488,12 @@ BH BH BH Xq -ZJ -ZJ -ZJ +dX +dX +dX BH BH -ZJ +dX BH BH BH @@ -36515,11 +36508,11 @@ BH BH BH BH -ZJ +dX BH Ks Xq -ZJ +dX BH BH BH @@ -36545,18 +36538,18 @@ LU TK TK TK -ZJ +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ +dX TK TK TK @@ -36626,22 +36619,22 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX bO TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -36651,19 +36644,19 @@ bO TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO @@ -36692,7 +36685,7 @@ BH BH BH BH -ZJ +dX BH BH OK @@ -36702,7 +36695,7 @@ GF FF mz mz -ZJ +dX nx mz BH @@ -36734,7 +36727,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -36748,11 +36741,11 @@ BH BH BH BH -ZJ -ZJ +dX +dX Xq -ZJ -ZJ +dX +dX BH BH BH @@ -36782,13 +36775,13 @@ TK TK TK TK -ZJ +dX TK -ZJ +dX TK TK BH -ZJ +dX TK TK TK @@ -36858,13 +36851,13 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX nx CO -ZJ -ZJ +dX +dX bO TK TK @@ -36873,10 +36866,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO TK bO @@ -36884,11 +36877,11 @@ bO bO TK TK -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -36924,7 +36917,7 @@ BH BH BH BH -ZJ +dX nx OK OK @@ -36944,7 +36937,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -36978,10 +36971,10 @@ BH BH BH BH -ZJ +dX BH BH -ZJ +dX Hw ET vI @@ -37013,15 +37006,15 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -37085,18 +37078,18 @@ bO bO bO bO -ZJ -ZJ +dX +dX bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX bO bO TK @@ -37105,10 +37098,10 @@ TK TK TK TK -ZJ -ZJ +dX +dX va -ZJ +dX TK TK TK @@ -37117,8 +37110,8 @@ bO bO bO hu -ZJ -ZJ +dX +dX TK TK TK @@ -37134,8 +37127,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -37176,7 +37169,7 @@ BH BH BH BH -ZJ +dX nx BH BH @@ -37245,15 +37238,15 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq BH BH BH -ZJ +dX BH BH BH @@ -37316,18 +37309,18 @@ bO bO TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX Aq bO bO @@ -37337,10 +37330,10 @@ TK TK TK TK -ZJ -ZJ +dX +dX nx -ZJ +dX TK TK bO @@ -37348,7 +37341,7 @@ bO bO bO bO -ZJ +dX bO bO bO @@ -37367,8 +37360,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX vi TK LU @@ -37409,7 +37402,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -37446,7 +37439,7 @@ BH BH BH BH -ZJ +dX ET vI BH @@ -37476,17 +37469,17 @@ TK TK TK TK -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -37549,19 +37542,19 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX bO bO bO @@ -37570,7 +37563,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -37596,10 +37589,10 @@ TK bO bO aV -ZJ +dX nx -ZJ -ZJ +dX +dX sy TK LU @@ -37639,15 +37632,15 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH mz -ZJ +dX BH BH BH @@ -37680,7 +37673,7 @@ mz vI In ET -ZJ +dX BH BH BH @@ -37708,17 +37701,17 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX BH TK BH @@ -37779,22 +37772,22 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -37828,7 +37821,7 @@ TK TK aV kD -ZJ +dX TK TK TK @@ -37870,19 +37863,19 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH BH BH -ZJ -ZJ +dX +dX Xq -ZJ +dX BH BH BH @@ -37911,8 +37904,8 @@ mz Xl ET ET -ZJ -ZJ +dX +dX BH BH BH @@ -37938,18 +37931,18 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK TK BH -ZJ -ZJ +dX +dX TK TK TK @@ -37981,7 +37974,7 @@ xf xf oY xi -ZJ +dX LU LU LU @@ -38010,14 +38003,14 @@ TK TK TK TK -ZJ -ZJ +dX +dX nx -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -38026,8 +38019,8 @@ TK bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -38102,12 +38095,12 @@ BH BH BH BH -ZJ +dX mz mz OK BH -ZJ +dX mz BH BH @@ -38143,7 +38136,7 @@ NE ET KJ ET -ZJ +dX BH BH BH @@ -38169,18 +38162,18 @@ LU TK TK TK -ZJ -ZJ +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK BH BH BH -ZJ +dX TK TK TK @@ -38213,7 +38206,7 @@ BH BH BH BH -ZJ +dX LU LU LU @@ -38240,37 +38233,37 @@ LU TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK bO bO -ZJ +dX CO -ZJ -ZJ +dX +dX bO bO bO bO -ZJ +dX va -ZJ -ZJ +dX +dX bO bO bO @@ -38289,9 +38282,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK LU @@ -38314,7 +38307,7 @@ BH BH BH BH -ZJ +dX BH mz ID @@ -38334,10 +38327,10 @@ BH BH BH BH -ZJ +dX OK -ZJ -ZJ +dX +dX OK mf mz @@ -38401,18 +38394,18 @@ LU TK TK TK -ZJ +dX TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK BH -ZJ +dX BH TK -ZJ +dX TK TK TK @@ -38446,7 +38439,7 @@ BH BH BH BH -ZJ +dX LU LU LU @@ -38472,21 +38465,21 @@ LU TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK bO @@ -38494,12 +38487,12 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX bO -ZJ -ZJ +dX +dX TK TK TK @@ -38518,11 +38511,11 @@ bO bO TK TK -ZJ -ZJ +dX +dX fo -ZJ -ZJ +dX +dX TK TK TK @@ -38546,7 +38539,7 @@ BH BH BH BH -ZJ +dX BH mz iw @@ -38565,11 +38558,11 @@ BH BH BH BH -ZJ -ZJ +dX +dX OK -ZJ -ZJ +dX +dX mz mf mz @@ -38635,17 +38628,17 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK BH BH Aq TK TK -ZJ -ZJ +dX +dX TK BH BH @@ -38678,7 +38671,7 @@ BH BH BH BH -ZJ +dX LU LU LU @@ -38703,35 +38696,35 @@ LU LU TK TK -ZJ +dX hu -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK -ZJ +dX TK TK TK TK -ZJ +dX bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX Aq -ZJ -ZJ +dX +dX TK TK TK @@ -38746,14 +38739,14 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nx -ZJ +dX nx -ZJ +dX Pb TK TK @@ -38779,7 +38772,7 @@ BH BH BH BH -ZJ +dX mz mz Bk @@ -38796,12 +38789,12 @@ mz BH BH BH -ZJ -ZJ +dX +dX OK mz nx -ZJ +dX OK ET mz @@ -38813,10 +38806,10 @@ BH BH yz mz -ZJ +dX BH BH -ZJ +dX BH BH BH @@ -38867,16 +38860,16 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX Aq BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX TK TK TK @@ -38911,8 +38904,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX LU LU LU @@ -38935,37 +38928,37 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX Aq -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ +dX bO bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX TK bO bO @@ -38979,13 +38972,13 @@ bO bO bO Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ +dX mc TK TK @@ -39028,27 +39021,27 @@ BH BH BH Aq -ZJ +dX mz mz -ZJ -ZJ -ZJ +dX +dX +dX OK ET -ZJ +dX mz mz mz OK -ZJ +dX ET mf mz -ZJ -ZJ +dX +dX BH -ZJ +dX BH BH BH @@ -39063,7 +39056,7 @@ BH BH BH mz -ZJ +dX ET ET ET @@ -39100,14 +39093,14 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -39142,10 +39135,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU LU @@ -39167,40 +39160,40 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK bO bO -ZJ +dX TK TK -ZJ -ZJ +dX +dX bO -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX ea -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX bO bO bO @@ -39209,8 +39202,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -39260,27 +39253,27 @@ BH BH BH BH -ZJ +dX mz -ZJ -ZJ +dX +dX dd -ZJ +dX mz -ZJ +dX ET -ZJ -ZJ -ZJ +dX +dX +dX nx -ZJ -ZJ -ZJ +dX +dX +dX mz BH BH BH -ZJ +dX BH BH BH @@ -39295,7 +39288,7 @@ BH BH BH OK -ZJ +dX ET vI DH @@ -39331,15 +39324,15 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ +dX +dX Aq -ZJ +dX TK TK TK @@ -39374,10 +39367,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU LU @@ -39399,49 +39392,49 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX va TK -ZJ -ZJ +dX +dX TK TK bO bO bO -ZJ +dX TK -ZJ +dX bO bO -ZJ -ZJ -ZJ +dX +dX +dX va -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ -ZJ +dX +dX bO bO bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK @@ -39494,15 +39487,15 @@ BH BH BH mz -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX OK -ZJ -ZJ +dX +dX Xq -ZJ +dX mz mz mz @@ -39511,9 +39504,9 @@ ET BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -39563,15 +39556,15 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -39606,7 +39599,7 @@ BH BH BH BH -ZJ +dX BH BH LU @@ -39631,16 +39624,16 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK -ZJ +dX TK TK bO @@ -39648,14 +39641,14 @@ bO bO bO bO -ZJ +dX bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -39666,13 +39659,13 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO bO -ZJ +dX TK TK TK @@ -39726,26 +39719,26 @@ BH BH BH mz -ZJ -ZJ +dX +dX nx mz mz mz mz mz -ZJ -ZJ +dX +dX mf mf mz BH mz -ZJ -ZJ +dX +dX nx -ZJ -ZJ +dX +dX BH BH BH @@ -39761,7 +39754,7 @@ BH OK BH ET -ZJ +dX OK BH BH @@ -39795,14 +39788,14 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -39820,10 +39813,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -39837,8 +39830,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH LU LU @@ -39863,14 +39856,14 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -39883,7 +39876,7 @@ bO bO bO bO -ZJ +dX TK TK TK @@ -39899,9 +39892,9 @@ TK TK TK va -ZJ -ZJ -ZJ +dX +dX +dX bO bO TK @@ -39973,12 +39966,12 @@ ET mz BH OK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -40027,16 +40020,16 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -40053,9 +40046,9 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX BH BH nu @@ -40068,7 +40061,7 @@ nu BH BH BH -ZJ +dX BH BH BH @@ -40095,12 +40088,12 @@ LU LU TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -40143,9 +40136,9 @@ TK TK TK mc -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -40201,16 +40194,16 @@ HG HG HG mz -ZJ +dX mz -ZJ +dX mz mz mz mz mz mz -ZJ +dX BH BH BH @@ -40259,17 +40252,17 @@ TK TK TK mz -ZJ -ZJ +dX +dX Xq TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK BH @@ -40327,11 +40320,11 @@ LU LU TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK TK TK @@ -40346,8 +40339,8 @@ TK TK TK bO -ZJ -ZJ +dX +dX TK TK TK @@ -40422,7 +40415,7 @@ BH BH BH BH -ZJ +dX mz HG yS @@ -40435,14 +40428,14 @@ HG Ks GF mz -ZJ -ZJ -ZJ +dX +dX +dX Xq Xq BH BH -ZJ +dX BH BH BH @@ -40457,7 +40450,7 @@ BH mz nx ET -ZJ +dX mz BH BH @@ -40492,18 +40485,18 @@ TK TK mz Xq -ZJ -ZJ +dX +dX mz TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX Aq BH BH @@ -40560,12 +40553,12 @@ LU TK TK Aq -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -40578,7 +40571,7 @@ TK TK TK bO -ZJ +dX TK TK TK @@ -40604,12 +40597,12 @@ bO bO bO aV -ZJ +dX Hm ix TK TK -ZJ +dX TK TK TK @@ -40644,7 +40637,7 @@ Sl mL mL mL -ZJ +dX OK BH BH @@ -40654,7 +40647,7 @@ BH BH BH mz -ZJ +dX mz HG yS @@ -40670,12 +40663,12 @@ mz yz ET ET -ZJ +dX Xq Xq Xq mf -ZJ +dX BH BH BH @@ -40689,9 +40682,9 @@ BH mz vI ET -ZJ +dX mz -ZJ +dX BH BH BH @@ -40723,9 +40716,9 @@ TK TK pd sz -ZJ -ZJ -ZJ +dX +dX +dX mz TK TK @@ -40733,8 +40726,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX Aq BH BH @@ -40791,13 +40784,13 @@ LU LU TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX hu -ZJ -ZJ +dX +dX TK TK bO @@ -40809,8 +40802,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -40830,19 +40823,19 @@ bO bO bO bO -ZJ +dX Pw -ZJ +dX bO aV -ZJ -ZJ +dX +dX Sk TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -40872,12 +40865,12 @@ BH BH BH OK -ZJ +dX vI Xq nx ET -ZJ +dX mz BH BH @@ -40899,8 +40892,8 @@ HG GF mf mz -ZJ -ZJ +dX +dX BH BH mf @@ -40918,9 +40911,9 @@ BH BH BH BH -ZJ +dX ET -ZJ +dX qM nx BH @@ -40955,19 +40948,19 @@ TK TK pd sz -ZJ +dX Aq -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK BH BH @@ -41024,12 +41017,12 @@ LU TK TK Aq -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -41040,9 +41033,9 @@ bO TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX bO bO TK @@ -41067,14 +41060,14 @@ WR WR Kp nx -ZJ +dX Pw Zq -ZJ +dX TK -ZJ +dX nx -ZJ +dX TK TK TK @@ -41104,7 +41097,7 @@ BH BH BH OK -ZJ +dX dz rx ET @@ -41131,14 +41124,14 @@ HG mz GF mz -ZJ +dX mz mz OK mz mz BH -ZJ +dX Xq BH BH @@ -41151,7 +41144,7 @@ BH nx Xq mz -ZJ +dX Xq vI mz @@ -41186,18 +41179,18 @@ TK TK TK mz -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK TK TK TK TK TK -ZJ +dX TK TK TK @@ -41256,11 +41249,11 @@ LU TK TK TK -ZJ -ZJ +dX +dX uW -ZJ -ZJ +dX +dX BU TK TK @@ -41272,10 +41265,10 @@ bO TK TK TK -ZJ +dX bO -ZJ -ZJ +dX +dX bO TK TK @@ -41285,8 +41278,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX bO bO bO @@ -41298,15 +41291,15 @@ hp Hf EI Uy -ZJ +dX WA gc -ZJ -ZJ -ZJ +dX +dX +dX CL -ZJ -ZJ +dX +dX TK TK TK @@ -41337,10 +41330,10 @@ BH BH mz Sl -ZJ +dX ET ET -ZJ +dX vI mz BH @@ -41348,7 +41341,7 @@ BH BH BH BH -ZJ +dX mz ET mz @@ -41363,7 +41356,7 @@ mz mz GF mz -ZJ +dX mz nD ja @@ -41385,7 +41378,7 @@ Xq mz DR ET -ZJ +dX mz BH BH @@ -41418,18 +41411,18 @@ TK TK TK mz -ZJ +dX Xq mz -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK -ZJ +dX TK TK TK @@ -41488,11 +41481,11 @@ LU TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -41503,11 +41496,11 @@ bO bO bO TK -ZJ -ZJ +dX +dX bO bO -ZJ +dX bO bO TK @@ -41522,21 +41515,21 @@ WR Xi bO bO -ZJ +dX bO wi So nO zp SO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX CL -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -41568,11 +41561,11 @@ BH BH OK OK -ZJ -ZJ +dX +dX ET -ZJ -ZJ +dX +dX nx mz mz @@ -41580,7 +41573,7 @@ BH BH BH BH -ZJ +dX ET ET ET @@ -41590,11 +41583,11 @@ mz mz mz mz -ZJ +dX GF GF GF -ZJ +dX nx mz Hx @@ -41613,7 +41606,7 @@ BH BH BH BH -ZJ +dX Xq BH Ks @@ -41650,20 +41643,20 @@ TK TK pd sz -ZJ -ZJ +dX +dX TK TK mz -ZJ +dX TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX BH TK TK @@ -41721,9 +41714,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -41739,7 +41732,7 @@ bO bO bO bO -ZJ +dX bO bO bO @@ -41762,10 +41755,10 @@ VD mD WR Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -41800,40 +41793,40 @@ BH BH OK nx -ZJ -ZJ +dX +dX vI ET -ZJ -ZJ -ZJ +dX +dX +dX mz BH BH BH BH -ZJ +dX mz ET mz Xq -ZJ +dX Xq mf -ZJ +dX ET ET mz mz ET -ZJ +dX mz mz nD GF nD OK -ZJ +dX BH BH BH @@ -41882,8 +41875,8 @@ TK TK pd sz -ZJ -ZJ +dX +dX mz TK mz @@ -41953,9 +41946,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX Aq TK bO @@ -41971,7 +41964,7 @@ bO bO bO bO -ZJ +dX bO bO bO @@ -41993,10 +41986,10 @@ Kp Kp eF WR -ZJ +dX bO -ZJ -ZJ +dX +dX bO TK TK @@ -42031,7 +42024,7 @@ BH BH BH mz -ZJ +dX mz mz mz @@ -42044,7 +42037,7 @@ BH BH BH BH -ZJ +dX mz ET mz @@ -42065,8 +42058,8 @@ ja tB ja OK -ZJ -ZJ +dX +dX BH BH BH @@ -42080,7 +42073,7 @@ BH BH mz ET -ZJ +dX ET mz BH @@ -42113,12 +42106,12 @@ LU TK TK mz -ZJ +dX Xq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX sz pd TK @@ -42185,9 +42178,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -42195,15 +42188,15 @@ bO bO TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO bO -ZJ +dX bO bO bO @@ -42212,22 +42205,22 @@ bO TK TK nx -ZJ +dX cq Kp aV -ZJ +dX bO bO aV aV nO -ZJ +dX VT WR -ZJ +dX bO -ZJ +dX bO bO bO @@ -42263,14 +42256,14 @@ BH BH BH mz -ZJ +dX mz bd tD tD mz mz -ZJ +dX mz BH BH @@ -42278,14 +42271,14 @@ BH BH BH mz -ZJ +dX nx -ZJ +dX mz BH BH ET -ZJ +dX BH BH vI @@ -42297,7 +42290,7 @@ up ja ja mz -ZJ +dX nx BH BH @@ -42345,13 +42338,13 @@ LU TK TK mz -ZJ -ZJ +dX +dX Xq Aq -ZJ +dX TK -ZJ +dX mz TK TK @@ -42365,7 +42358,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -42393,7 +42386,7 @@ as BH BH BH -ZJ +dX LU LU LU @@ -42417,7 +42410,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -42427,7 +42420,7 @@ bO bO bO bO -ZJ +dX TK TK TK @@ -42436,7 +42429,7 @@ bO bO bO CO -ZJ +dX bO bO bO @@ -42457,7 +42450,7 @@ aJ aJ UM qj -ZJ +dX bO bO bO @@ -42495,7 +42488,7 @@ BH BH BH OK -ZJ +dX mz bd rf @@ -42511,17 +42504,17 @@ BH BH mz mz -ZJ +dX ET -ZJ -ZJ +dX +dX Xq mf Xq BH mz OK -ZJ +dX OK ja ja @@ -42529,9 +42522,9 @@ EG EG EG mz -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -42541,13 +42534,13 @@ BH BH BH BH -ZJ +dX BH ET ET ET -ZJ -ZJ +dX +dX BH BH BH @@ -42577,13 +42570,13 @@ LU TK TK TK -ZJ -ZJ +dX +dX Xq TK TK TK -ZJ +dX mz TK TK @@ -42598,7 +42591,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -42625,9 +42618,9 @@ as LU BH BH -ZJ -ZJ -ZJ +dX +dX +dX LU LU LU @@ -42649,7 +42642,7 @@ TK TK TK TK -ZJ +dX oq TK TK @@ -42658,17 +42651,17 @@ TK bO bO bO -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX bO bO bO -ZJ +dX Aq bO bO @@ -42688,10 +42681,10 @@ WR EI qj Aq -ZJ -ZJ +dX +dX bO -ZJ +dX bO bO bO @@ -42741,15 +42734,15 @@ BH BH BH BH -ZJ +dX mz mz mz mz mz -ZJ -ZJ -ZJ +dX +dX +dX mz mz vI @@ -42761,9 +42754,9 @@ OK mz mz mz -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -42782,7 +42775,7 @@ ET ET BH BH -ZJ +dX BH BH BH @@ -42805,11 +42798,11 @@ LU LU LU LU -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX Xq Xq TK @@ -42830,7 +42823,7 @@ BH BH BH BH -ZJ +dX TK TK TK @@ -42882,8 +42875,8 @@ TK TK TK va -ZJ -ZJ +dX +dX TK TK TK @@ -42891,17 +42884,17 @@ bO bO bO nx -ZJ +dX TK TK TK TK -ZJ -ZJ +dX +dX bO bO -ZJ -ZJ +dX +dX bO bO TK @@ -42920,10 +42913,10 @@ TK TK TK bO -ZJ +dX bO bO -ZJ +dX bO bO bO @@ -42981,19 +42974,19 @@ BH BH nx Ks -ZJ -ZJ +dX +dX BH -ZJ +dX Xq -ZJ +dX BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX nx BH BH @@ -43009,12 +43002,12 @@ OK nx BH ET -ZJ -ZJ +dX +dX nx BH -ZJ -ZJ +dX +dX BH BH BH @@ -43034,19 +43027,19 @@ LU LU yS LU -ZJ +dX LU -ZJ -ZJ +dX +dX LU TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ +dX sz pd TK @@ -43054,7 +43047,7 @@ TK TK TK TK -ZJ +dX BH BH BH @@ -43064,7 +43057,7 @@ BH BH BH BH -ZJ +dX TK TK BH @@ -43115,7 +43108,7 @@ TK TK TK oi -ZJ +dX Aq bO TK @@ -43123,16 +43116,16 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX TK bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX bO bO bO @@ -43155,7 +43148,7 @@ bO bO bO bO -ZJ +dX bO bO bO @@ -43200,7 +43193,7 @@ fe tD mz nx -ZJ +dX BH BH BH @@ -43224,8 +43217,8 @@ BH BH BH nx -ZJ -ZJ +dX +dX BH BH BH @@ -43238,14 +43231,14 @@ BH BH BH mz -ZJ +dX Aq ET Xq vI -ZJ +dX OK -ZJ +dX nx BH BH @@ -43266,29 +43259,29 @@ LU LU yS UY -ZJ -ZJ -ZJ +dX +dX +dX LU TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX Xq -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX BH -ZJ +dX BH BH BH @@ -43296,7 +43289,7 @@ BH BH BH BH -ZJ +dX TK BH BH @@ -43357,9 +43350,9 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -43387,8 +43380,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -43431,7 +43424,7 @@ VZ tD tD mz -ZJ +dX BH BH BH @@ -43443,7 +43436,7 @@ BH BH BH BH -ZJ +dX ET vI BH @@ -43470,14 +43463,14 @@ BH BH mz mz -ZJ +dX PT rv Ks PT -ZJ +dX OK -ZJ +dX BH BH BH @@ -43498,18 +43491,18 @@ LU LU yS UY -ZJ +dX LU LU LU TK mz -ZJ +dX mz Xq -ZJ +dX mz -ZJ +dX mz TK TK @@ -43517,10 +43510,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -43591,13 +43584,13 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX CO -ZJ -ZJ +dX +dX bO bO bO @@ -43619,8 +43612,8 @@ TK TK bO bO -ZJ -ZJ +dX +dX bO bO TK @@ -43685,7 +43678,7 @@ BH BH mf Xq -ZJ +dX BH BH BH @@ -43702,15 +43695,15 @@ BH mz mz vI -ZJ +dX fu jZ TD Xq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -43738,8 +43731,8 @@ TK mz mz mz -ZJ -ZJ +dX +dX mz mz mz @@ -43749,11 +43742,11 @@ TK TK TK TK -ZJ +dX BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -43825,16 +43818,16 @@ bO bO bO bO -ZJ +dX TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX TK TK TK @@ -43851,9 +43844,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -43889,8 +43882,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX mz Uk tD @@ -43908,7 +43901,7 @@ BH xd GF xd -ZJ +dX BH BH BH @@ -43916,9 +43909,9 @@ BH BH BH BH -ZJ +dX Xq -ZJ +dX BH BH BH @@ -43933,7 +43926,7 @@ BH BH BH mz -ZJ +dX vI tV LO @@ -43941,7 +43934,7 @@ HR vI vI mz -ZJ +dX BH BH BH @@ -43970,7 +43963,7 @@ mz mz pY mz -ZJ +dX ET mz ET @@ -43985,7 +43978,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -44057,8 +44050,8 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK bO @@ -44066,11 +44059,11 @@ bO bO bO bO -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX bO bO bO @@ -44082,12 +44075,12 @@ bO TK TK TK -ZJ -ZJ +dX +dX CL -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -44122,7 +44115,7 @@ BH BH BH nx -ZJ +dX Kc WS tD @@ -44149,7 +44142,7 @@ BH BH Aq BH -ZJ +dX nx BH BH @@ -44165,8 +44158,8 @@ BH BH BH mz -ZJ -ZJ +dX +dX Xo QS fl @@ -44220,7 +44213,7 @@ TK BH BH BH -ZJ +dX BH BH BH @@ -44290,9 +44283,9 @@ bO bO bO bO -ZJ -ZJ -ZJ +dX +dX +dX bO bO bO @@ -44302,7 +44295,7 @@ TK TK TK TK -ZJ +dX bO bO bO @@ -44314,12 +44307,12 @@ bO TK TK TK -ZJ -ZJ +dX +dX TK nx -ZJ -ZJ +dX +dX TK TK TK @@ -44354,7 +44347,7 @@ BH BH BH BH -ZJ +dX Kc Kc tD @@ -44381,7 +44374,7 @@ BH BH BH BH -ZJ +dX mf BH BH @@ -44402,7 +44395,7 @@ cm ET ET Xq -ZJ +dX Aq OK BH @@ -44527,14 +44520,14 @@ bO bO bO bO -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX bO bO bO @@ -44547,11 +44540,11 @@ bO bO TK TK -ZJ +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -44591,7 +44584,7 @@ BH mz OK mz -ZJ +dX BH BH BH @@ -44615,7 +44608,7 @@ BH BH Xq Xq -ZJ +dX mz BH BH @@ -44630,14 +44623,14 @@ BH BH BH mz -ZJ +dX ET DR -ZJ +dX cm ET mz -ZJ +dX BH BH BH @@ -44748,8 +44741,8 @@ LU LU TK sr -ZJ -ZJ +dX +dX TK Aq TK @@ -44766,12 +44759,12 @@ TK TK TK TK -ZJ +dX bO bO bO -ZJ -ZJ +dX +dX bO bO bO @@ -44781,10 +44774,10 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -44845,10 +44838,10 @@ BH BH BH BH -ZJ +dX Xq -ZJ -ZJ +dX +dX mz BH BH @@ -44863,14 +44856,14 @@ BH BH mz ET -ZJ +dX nx -ZJ +dX Xq ET mz nx -ZJ +dX BH BH BH @@ -44920,9 +44913,9 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -44980,11 +44973,11 @@ TK TK TK TK -ZJ -ZJ +dX +dX va -ZJ -ZJ +dX +dX TK TK TK @@ -44998,26 +44991,26 @@ TK TK TK TK -ZJ -ZJ +dX +dX CO -ZJ -ZJ +dX +dX bO bO bO bO bO bO -ZJ +dX TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK @@ -45054,7 +45047,7 @@ BH BH BH nx -ZJ +dX Xq mz BH @@ -45076,12 +45069,12 @@ BH BH BH BH -ZJ +dX nx Xq Xq -ZJ -ZJ +dX +dX mz BH BH @@ -45095,13 +45088,13 @@ BH BH mz mz -ZJ -ZJ +dX +dX vI -ZJ -ZJ +dX +dX BH -ZJ +dX BH BH BH @@ -45139,7 +45132,7 @@ TK TK TK TK -ZJ +dX BH BH BH @@ -45151,8 +45144,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -45169,15 +45162,15 @@ xf xf xf xf -ZJ -ZJ -ZJ +dX +dX +dX xf xf xf xf -ZJ -ZJ +dX +dX LU LU LU @@ -45212,13 +45205,13 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -45234,22 +45227,22 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -45285,9 +45278,9 @@ BH BH BH mz -ZJ +dX vI -ZJ +dX OK OK BH @@ -45309,11 +45302,11 @@ BH BH BH BH -ZJ +dX fT mf fT -ZJ +dX mz BH BH @@ -45329,9 +45322,9 @@ BH BH BH nx -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -45369,9 +45362,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -45382,9 +45375,9 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -45403,12 +45396,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX LU LU LU @@ -45443,16 +45436,16 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK GV -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -45473,14 +45466,14 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -45518,8 +45511,8 @@ BH BH mz mz -ZJ -ZJ +dX +dX Ks OK BH @@ -45541,11 +45534,11 @@ BH BH BH BH -ZJ +dX Xq oN Xq -ZJ +dX mz BH BH @@ -45601,10 +45594,10 @@ mz TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -45615,13 +45608,13 @@ BH BH BH BH -ZJ +dX BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -45636,10 +45629,10 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX LU LU LU @@ -45675,17 +45668,17 @@ TK TK TK pT -ZJ +dX TK TK TK TK TK sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -45705,14 +45698,14 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -45772,12 +45765,12 @@ BH BH BH Aq -ZJ +dX vI fT Xq ZB -ZJ +dX BH BH BH @@ -45833,8 +45826,8 @@ mz LU TK TK -ZJ -ZJ +dX +dX BH BH BH @@ -45844,15 +45837,15 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX BH BH BH BH BH -ZJ +dX BH BH BH @@ -45868,12 +45861,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX LU LU LU @@ -45906,7 +45899,7 @@ TK TK TK TK -ZJ +dX TK TK TK @@ -45916,9 +45909,9 @@ TK sr sr sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -45937,14 +45930,14 @@ TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK TK TK @@ -46004,8 +45997,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX Xq Xq mf @@ -46066,7 +46059,7 @@ LU LU TK TK -ZJ +dX BH BH BH @@ -46074,11 +46067,11 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH BH BH @@ -46090,17 +46083,17 @@ BH BH BH BH -ZJ +dX BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH BH -ZJ +dX BH BH BH @@ -46149,8 +46142,8 @@ TK TK TK nx -ZJ -ZJ +dX +dX TK TK TK @@ -46165,16 +46158,16 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX TK -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK TK @@ -46238,9 +46231,9 @@ BH BH BH nx -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -46298,18 +46291,18 @@ LU LU TK TK -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX BH BH BH @@ -46322,20 +46315,20 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX BH BH BH BH BH BH -ZJ +dX BH -ZJ +dX LU LU LU @@ -46380,32 +46373,32 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK nx TK -ZJ +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX TK TK TK @@ -46470,7 +46463,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -46532,16 +46525,16 @@ TK TK TK TK -ZJ +dX BH BH BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH BH BH @@ -46556,16 +46549,16 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH LU BH BH BH BH -ZJ +dX LU LU LU @@ -46601,8 +46594,8 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -46612,32 +46605,32 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX va -ZJ -ZJ -ZJ +dX +dX +dX Aq -ZJ -ZJ +dX +dX TK -ZJ -ZJ +dX +dX CO -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ +dX TK TK TK @@ -46770,10 +46763,10 @@ TK TK BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH BH BH @@ -46789,7 +46782,7 @@ BH BH BH BH -ZJ +dX BH BH LU @@ -46826,14 +46819,14 @@ TK TK sr sr -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK sr -ZJ +dX TK TK TK @@ -46851,25 +46844,25 @@ TK TK TK ko -ZJ +dX TK TK -ZJ +dX TK TK GV -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -47005,7 +46998,7 @@ BH BH TK TK -ZJ +dX TK TK BH @@ -47059,7 +47052,7 @@ TK TK TK aT -ZJ +dX iH sr TK @@ -47073,17 +47066,17 @@ TK TK sr sr -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK pT -ZJ -ZJ +dX +dX TK TK TK @@ -47094,12 +47087,12 @@ TK TK TK GV -ZJ +dX Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -47144,9 +47137,9 @@ BH BH BH BH -ZJ +dX ET -ZJ +dX BH BH mz @@ -47292,29 +47285,29 @@ sr TK TK TK -ZJ +dX sr TK TK -ZJ +dX sr TK -ZJ +dX TK TK TK TK TK -ZJ +dX Aq -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -47327,16 +47320,16 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK TK TK va -ZJ +dX TK TK TK @@ -47372,12 +47365,12 @@ BH BH BH BH -ZJ +dX BH BH BH vI -ZJ +dX mz mz OK @@ -47521,32 +47514,32 @@ TK TK TK sr -ZJ +dX Aq -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX nx -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK Aq -ZJ +dX TK TK TK @@ -47557,17 +47550,17 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX nx -ZJ +dX TK TK TK TK va -ZJ +dX Aq TK TK @@ -47604,13 +47597,13 @@ BH BH BH BH -ZJ +dX Aq BH BH BH nx -ZJ +dX yz ty GF @@ -47752,19 +47745,19 @@ LU TK TK hQ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX sr TK TK TK -ZJ +dX va TK TK @@ -47773,14 +47766,14 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -47788,17 +47781,17 @@ TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK TK -ZJ +dX va TK TK @@ -47837,8 +47830,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH mz @@ -47877,9 +47870,9 @@ BH BH BH BH -ZJ +dX BH -ZJ +dX BH BH BH @@ -47983,54 +47976,54 @@ LU LU TK TK -ZJ -ZJ +dX +dX sr sr sr sr -ZJ +dX sr sr sr TK TK TK -ZJ -ZJ +dX +dX TK TK TK TK TK -ZJ -ZJ +dX +dX nx -ZJ +dX va -ZJ -ZJ -ZJ +dX +dX +dX TK -ZJ +dX TK TK TK TK TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -48110,11 +48103,11 @@ BH BH BH BH -ZJ -ZJ -ZJ +dX +dX +dX BH -ZJ +dX BH BH BH @@ -48228,40 +48221,40 @@ sr TK TK TK -ZJ +dX TK TK -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK -ZJ -ZJ +dX +dX TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK @@ -48313,7 +48306,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -48343,12 +48336,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -48460,17 +48453,17 @@ TK TK TK TK -ZJ +dX nx -ZJ -ZJ +dX +dX ko -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK @@ -48478,24 +48471,24 @@ TK TK TK GV -ZJ -ZJ +dX +dX nx -ZJ +dX TK TK TK TK -ZJ +dX TK TK TK TK TK -ZJ +dX ko -ZJ -ZJ +dX +dX hu TK TK @@ -48543,8 +48536,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -48565,22 +48558,22 @@ BH BH BH BH -ZJ +dX BH BH BH BH -ZJ +dX BH -ZJ -ZJ +dX +dX BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -48692,44 +48685,44 @@ TK TK TK GV -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX TK TK TK TK TK -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX TK TK TK TK CO -ZJ +dX TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK va TK TK TK -ZJ +dX TK nx -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -48796,8 +48789,8 @@ BH BH BH BH -ZJ -ZJ +dX +dX BH BH BH @@ -48805,16 +48798,16 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX +dX +dX BH BH BH @@ -48924,9 +48917,9 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -48934,9 +48927,9 @@ TK TK TK TK -ZJ +dX TK -ZJ +dX TK TK TK @@ -48946,23 +48939,23 @@ TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK -ZJ +dX nx hu -ZJ -ZJ +dX +dX TK TK -ZJ +dX nx va -ZJ +dX TK TK TK @@ -49034,19 +49027,19 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX +dX +dX BH BH BH @@ -49157,16 +49150,16 @@ TK TK TK TK -ZJ +dX va TK TK TK TK TK -ZJ -ZJ -ZJ +dX +dX +dX TK TK TK @@ -49185,15 +49178,15 @@ TK TK TK CO -ZJ -ZJ +dX +dX va TK TK TK hu -ZJ -ZJ +dX +dX TK TK TK @@ -49272,12 +49265,12 @@ BH BH BH BH -ZJ -ZJ -ZJ -ZJ -ZJ -ZJ +dX +dX +dX +dX +dX +dX BH BH BH @@ -49390,13 +49383,13 @@ LU LU LU TK -ZJ -ZJ +dX +dX TK TK TK -ZJ -ZJ +dX +dX TK TK TK @@ -51570,7 +51563,7 @@ BH BH BH BH -ZJ +dX BH BH BH @@ -52009,7 +52002,7 @@ LU LU LU BH -ZJ +dX LU LU LU diff --git a/_maps/map_files220/RandomZLevels/gate_lizard.dmm b/_maps/map_files220/RandomZLevels/gate_lizard.dmm index e00a4b438ba9..fe643a032755 100644 --- a/_maps/map_files220/RandomZLevels/gate_lizard.dmm +++ b/_maps/map_files220/RandomZLevels/gate_lizard.dmm @@ -15,7 +15,7 @@ /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/inside/complex) "aaN" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/shard, /obj/effect/decal/cleanable/glass, /turf/simulated/floor/plating, @@ -1597,7 +1597,7 @@ /turf/simulated/floor/engine/cult, /area/awaymission/jungle_planet/outside/cave) "cdh" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/effect/decal/cleanable/cobweb, /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/wood/oak, @@ -1708,13 +1708,13 @@ }, /area/awaymission/jungle_planet/inside/complex) "cmE" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/shard, /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/plating, /area/awaymission/jungle_planet/inside/complex) "cmS" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/laser/retro/old{ desc = "An older model of the basic lasergun, no longer used by Nanotrasen's private security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."; pixel_y = -9 @@ -2277,7 +2277,7 @@ }, /area/awaymission/jungle_planet/inside/complex) "cVe" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/stack/rods, /obj/item/shard{ icon_state = "small" @@ -3594,7 +3594,7 @@ /turf/simulated/floor/mineral/titanium/yellow, /area/awaymission/jungle_planet/outside/abandoned) "eKg" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "red" @@ -4026,7 +4026,7 @@ }, /area/awaymission/jungle_planet/outside/cave/pirate) "fqK" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/shard{ icon_state = "small" }, @@ -4191,7 +4191,7 @@ /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside/waterfall) "fCt" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/shard{ icon_state = "small" }, @@ -4735,7 +4735,7 @@ /obj/item/shard{ icon_state = "medium" }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside/abandoned) "gop" = ( @@ -5022,7 +5022,7 @@ /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside) "gKv" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/door/poddoor/shutters{ dir = 2; id_tag = "CMDgate" @@ -5461,7 +5461,7 @@ }, /area/awaymission/jungle_planet/inside/complex) "hkE" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/shard, /obj/effect/decal/cleanable/glass, /turf/simulated/floor/plating, @@ -6716,7 +6716,7 @@ "iMH" = ( /obj/effect/turf_decal/delivery, /obj/effect/spawner/random_spawners/dirt_frequent, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel, /area/awaymission/jungle_planet/inside/complex) "iMN" = ( @@ -6896,7 +6896,7 @@ }, /area/awaymission/jungle_planet/inside/complex) "iXz" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/shard, /obj/item/stack/rods{ amount = 2 @@ -6945,7 +6945,7 @@ /turf/simulated/floor/plating, /area/awaymission/jungle_planet/outside/river) "jaD" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/shard{ icon_state = "small" }, @@ -7048,7 +7048,7 @@ /turf/simulated/floor/plating, /area/awaymission/jungle_planet/outside/abandoned) "jhW" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/shard{ icon_state = "small" }, @@ -7775,7 +7775,7 @@ /turf/simulated/floor/plating, /area/awaymission/jungle_planet/inside/complex) "kby" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/shard{ icon_state = "medium"; pixel_x = -7; @@ -7857,7 +7857,7 @@ }, /area/awaymission/jungle_planet/outside/river) "khp" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/glass, /obj/item/stack/rods, /turf/simulated/floor/plating, @@ -8746,7 +8746,7 @@ }, /area/awaymission/jungle_planet/outside/cave) "liw" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/fireaxe/boneaxe, /obj/item/spear/bonespear, /obj/item/scythe/bone, @@ -8754,7 +8754,7 @@ /area/awaymission/jungle_planet/outside/cave) "liA" = ( /obj/effect/turf_decal/plaque, -/obj/structure/statue/russian_mulebot{ +/obj/structure/statue/soviet_mulebot{ name = "CargoMULE" }, /turf/simulated/floor/plasteel, @@ -9148,7 +9148,7 @@ /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside) "lJw" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/e_gun/old, /obj/effect/landmark/damageturf, /turf/simulated/floor/wood/oak, @@ -9338,7 +9338,7 @@ /turf/simulated/floor/plating, /area/awaymission/jungle_planet/outside/river) "lWJ" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/wood/oak, /area/awaymission/jungle_planet/outside/cave/pirate) "lWL" = ( @@ -10188,7 +10188,7 @@ /turf/simulated/floor/mineral/titanium/blue, /area/awaymission/jungle_planet/outside/abandoned) "mTI" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/shard{ icon_state = "small" }, @@ -10386,7 +10386,7 @@ /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside/river) "nfW" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/shard{ icon_state = "small" }, @@ -10448,7 +10448,7 @@ /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside) "njs" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/shard{ icon_state = "medium"; pixel_x = -7; @@ -10653,7 +10653,7 @@ }, /area/awaymission/jungle_planet/inside/complex) "nBO" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/awaymission/jungle_planet/inside/complex) "nBY" = ( @@ -11018,7 +11018,7 @@ /turf/simulated/floor/beach/away/sand, /area/awaymission/jungle_planet/outside/river) "oeY" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/awaymission/jungle_planet/outside/abandoned) "ofe" = ( @@ -11265,7 +11265,7 @@ }, /area/awaymission/jungle_planet/outside/river) "ouM" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/shard{ icon_state = "medium"; pixel_x = 9; @@ -11277,7 +11277,7 @@ /turf/simulated/floor/plating, /area/awaymission/jungle_planet/inside/complex) "ovS" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/stack/rods, /obj/item/shard{ icon_state = "medium"; @@ -12487,7 +12487,7 @@ }, /area/awaymission/jungle_planet/outside/river) "qeb" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/bow, /obj/effect/landmark/damageturf, /turf/simulated/floor/wood/oak, @@ -12769,7 +12769,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkneutralfull" @@ -13084,7 +13084,7 @@ }, /area/awaymission/jungle_planet/outside/cave/small) "qOq" = ( -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/wood/oak, /area/awaymission/jungle_planet/outside/river) "qOs" = ( @@ -13130,7 +13130,7 @@ }, /area/awaymission/jungle_planet/inside/complex) "qPT" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/stack/rods, /obj/effect/decal/cleanable/glass, /turf/simulated/floor/plating, @@ -13270,7 +13270,7 @@ "qYR" = ( /obj/effect/turf_decal/delivery, /obj/effect/spawner/random_spawners/dirt_often, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkneutralfull" @@ -13421,7 +13421,7 @@ }, /area/awaymission/jungle_planet/inside/complex) "rjA" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/structure/window/reinforced, /obj/item/gun/energy/laser/retro/old{ desc = "An older model of the basic lasergun, no longer used by Nanotrasen's private security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws." @@ -13486,7 +13486,7 @@ /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside) "rnw" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/shard, /obj/item/stack/rods, /obj/effect/decal/cleanable/glass, @@ -13865,7 +13865,7 @@ /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside) "rKg" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/awaymission/jungle_planet/outside) "rKR" = ( @@ -14208,7 +14208,7 @@ "sba" = ( /obj/effect/turf_decal/delivery, /obj/effect/spawner/random_spawners/dirt_maybe, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel, /area/awaymission/jungle_planet/inside/complex) "sbj" = ( @@ -14317,7 +14317,7 @@ "sjJ" = ( /obj/effect/turf_decal/delivery, /obj/effect/spawner/random_spawners/dirt_maybe, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkneutralfull" @@ -14607,7 +14607,7 @@ /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside) "sCe" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/shard, /turf/simulated/floor/indestructible/grass, /area/awaymission/jungle_planet/outside) @@ -15257,7 +15257,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/jungle_planet/outside) "tqZ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/shard, /obj/structure/flora/ausbushes/brflowers, /obj/effect/decal/cleanable/glass, @@ -17124,7 +17124,7 @@ /turf/simulated/floor/wood/oak, /area/awaymission/jungle_planet/outside/cave) "vEC" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/item/stack/rods, /turf/simulated/floor/plating, /area/awaymission/jungle_planet/outside/abandoned) @@ -18517,7 +18517,7 @@ /area/awaymission/jungle_planet/inside) "xtn" = ( /obj/effect/turf_decal/delivery, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkneutralfull" @@ -18876,7 +18876,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/jungle_planet/inside/complex) "xPM" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/item/stack/rods, /obj/item/shard, /obj/item/shard{ @@ -19174,7 +19174,7 @@ /area/awaymission/jungle_planet/inside/complex) "ykF" = ( /obj/effect/turf_decal/delivery, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel, /area/awaymission/jungle_planet/inside/complex) "ylm" = ( diff --git a/_maps/map_files220/RandomZLevels/spacebattle.dmm b/_maps/map_files220/RandomZLevels/spacebattle.dmm index f64cd1837f40..8652f5f2b531 100644 --- a/_maps/map_files220/RandomZLevels/spacebattle.dmm +++ b/_maps/map_files220/RandomZLevels/spacebattle.dmm @@ -511,7 +511,7 @@ /area/awaymission/space_battle/cruiser) "bw" = ( /obj/effect/turf_decal/delivery/hollow, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel, /area/awaymission/space_battle/sec_storage) "bx" = ( @@ -2756,7 +2756,7 @@ /area/awaymission/space_battle/cruiser) "iu" = ( /obj/item/gun/projectile/automatic/c20r, -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/mineral/plastitanium, /area/awaymission/space_battle/syndicate) "iv" = ( @@ -3085,7 +3085,7 @@ /area/awaymission/space_battle/bridge) "jm" = ( /obj/machinery/light/directional/north, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /turf/simulated/floor/plasteel{ icon_state = "neutral"; dir = 1 @@ -3119,7 +3119,6 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/awaymission/space_battle/syndicate) "jq" = ( -/obj/machinery/cooker/foodgrill, /obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ icon_state = "blueyellowfull" @@ -3515,8 +3514,8 @@ "kD" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet/crate/secure/weapon, -/obj/item/storage/box/buck, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, +/obj/item/storage/fancy/shell/buck, /turf/simulated/floor/plasteel, /area/awaymission/space_battle/sec_storage) "kF" = ( @@ -3704,7 +3703,7 @@ /area/awaymission/space_battle/prhallway1) "lh" = ( /obj/structure/rack, -/obj/item/storage/box/slug, +/obj/item/storage/fancy/shell/slug, /turf/simulated/floor/plasteel{ icon_state = "red"; dir = 5 @@ -4613,7 +4612,7 @@ }, /area/awaymission/space_battle/syndicate/syndicate5) "oe" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/plasteel/airless{ icon_state = "darkfull" @@ -4732,7 +4731,7 @@ /area/awaymission/space_battle/hallway6) "os" = ( /obj/effect/turf_decal/delivery, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/mineral/plastitanium, /area/awaymission/space_battle/syndicate/syndicate2) "ou" = ( @@ -5582,7 +5581,7 @@ /area/awaymission/space_battle/syndicate/syndicate1) "ro" = ( /obj/effect/turf_decal/delivery/hollow, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/mineral/plastitanium, /area/awaymission/space_battle/syndicate/syndicate2) "rp" = ( @@ -8334,7 +8333,7 @@ "zX" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel, /area/awaymission/space_battle/sec_storage) "zY" = ( @@ -8562,7 +8561,7 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/awaymission/space_battle/syndicate/syndicate2) "AP" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/machinery/light/small/directional/east, /turf/simulated/floor/mineral/plastitanium/red, /area/awaymission/space_battle/syndicate/syndicate1) @@ -9463,7 +9462,7 @@ /turf/simulated/floor/plating/airless, /area/space) "Dt" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/plasteel/dark, /area/awaymission/space_battle/hallway11) "Dv" = ( @@ -10317,7 +10316,7 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/awaymission/space_battle/syndicate) "FV" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/plasteel/dark, /area/awaymission/space_battle/hallway2) @@ -10975,7 +10974,7 @@ "HU" = ( /obj/effect/turf_decal/delivery, /obj/machinery/light/small/directional/east, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel, /area/awaymission/space_battle/sec_storage) "HV" = ( @@ -11431,7 +11430,7 @@ /turf/simulated/floor/plating/airless, /area/space) "Jn" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/machinery/light/small/directional/west, /turf/simulated/floor/mineral/plastitanium/red, /area/awaymission/space_battle/syndicate/syndicate1) @@ -11858,7 +11857,7 @@ }, /area/awaymission/space_battle/medbay) "KN" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/laser, /turf/simulated/floor/mineral/plastitanium/red, /area/awaymission/space_battle/syndicate) @@ -12650,7 +12649,7 @@ /turf/simulated/floor/grass/no_creep, /area/awaymission/space_battle) "Na" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/mineral/plastitanium/red, /area/awaymission/space_battle/syndicate/syndicate1) "Nc" = ( @@ -13108,7 +13107,7 @@ /area/space) "Oy" = ( /obj/structure/rack, -/obj/item/storage/box/buck, +/obj/item/storage/fancy/shell/buck, /obj/machinery/light/small/directional/east, /turf/simulated/floor/plating, /area/awaymission/space_battle/turret2) @@ -13344,7 +13343,7 @@ /turf/simulated/floor/plating, /area/awaymission/space_battle/hallway3) "Pi" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/lasercannon, /turf/simulated/floor/mineral/plastitanium/red, /area/awaymission/space_battle/syndicate/syndicate1) @@ -16523,7 +16522,7 @@ }, /area/awaymission/space_battle/hallway4) "YY" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/mineral/plastitanium/red, /area/awaymission/space_battle/syndicate/syndicate2) "YZ" = ( diff --git a/_maps/map_files220/RandomZLevels/wildwest.dmm b/_maps/map_files220/RandomZLevels/wildwest.dmm index dd8dacd5c122..1aa7002fd593 100644 --- a/_maps/map_files220/RandomZLevels/wildwest.dmm +++ b/_maps/map_files220/RandomZLevels/wildwest.dmm @@ -23,7 +23,7 @@ "aj" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/delivery, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -2338,7 +2338,7 @@ /area/awaymission/wildwest/wildwest_refine) "we" = ( /obj/effect/turf_decal/delivery, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -2674,7 +2674,7 @@ "zP" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, -/obj/item/salvage/ruin/russian, +/obj/item/salvage/ruin/soviet, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -4863,9 +4863,8 @@ }, /area/awaymission/wildwest/wildwest_mines) "Wk" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "150" - }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate, +/obj/machinery/door/airlock/external, /obj/structure/fans/tiny, /turf/simulated/floor/plating, /area/awaymission/wildwest/wildwest_refine) diff --git a/_maps/map_files220/generic/Admin_Zone.dmm b/_maps/map_files220/generic/Admin_Zone.dmm index dc070419ccb8..5482317ddbb3 100644 --- a/_maps/map_files220/generic/Admin_Zone.dmm +++ b/_maps/map_files220/generic/Admin_Zone.dmm @@ -235,9 +235,9 @@ dir = 2; pixel_y = 11 }, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxwest_door_ext"; - req_access_txt = "152"; aiControlDisabled = 1; hackProof = 1 }, @@ -252,7 +252,7 @@ }, /obj/machinery/access_button/west{ autolink_id = "voxwest_btn_ext"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium{ color = "#fff894"; @@ -421,15 +421,15 @@ /area/ninja/holding) "bE" = ( /obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 }, /obj/machinery/access_button/east{ autolink_id = "voxwest_btn_ext"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/plating/nitrogen, /area/vox_base) @@ -882,8 +882,8 @@ }, /area/vox_base) "dr" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -945,7 +945,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdomegen"; name = "General Supply Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -1763,8 +1763,8 @@ /turf/simulated/floor/plating/dirt, /area/ghost_bar/outdoor) "gn" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -2431,7 +2431,6 @@ /area/ninja/holding) "iF" = ( /obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160"; id_tag = "soltrader_north" }, /obj/effect/turf_decal/siding/wood/birch{ @@ -2439,6 +2438,7 @@ }, /obj/effect/turf_decal/siding/wood/cherry, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "iG" = ( @@ -2496,8 +2496,8 @@ /turf/simulated/floor/wood/parquet/tile, /area/ghost_bar/indoor) "iO" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -2569,8 +2569,8 @@ }, /area/admin) "iZ" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -2791,10 +2791,10 @@ /turf/simulated/floor/beach/away/sand_alternative, /area/ghost_bar/outdoor/beach) "jO" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxeast_door_int"; locked = 1; - req_access_txt = "152"; aiControlDisabled = 1; hackProof = 1 }, @@ -2809,7 +2809,7 @@ }, /obj/machinery/access_button/east{ autolink_id = "voxeast_btn_int"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/vox) @@ -3169,9 +3169,7 @@ /turf/simulated/floor/wood, /area/ghost_bar/indoor) "kX" = ( -/obj/machinery/door/airlock/titanium{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium, /obj/effect/turf_decal/siding/wood/birch{ dir = 8 }, @@ -3179,6 +3177,7 @@ dir = 4 }, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "kY" = ( @@ -3374,9 +3373,9 @@ ext_door_link_id = "voxeast_door_ext"; int_door_link_id = "voxeast_door_int"; pixel_x = -24; - req_access_txt = "152"; ext_button_link_id = "voxeast_btn_ext"; - int_button_link_id = "voxeast_btn_int" + int_button_link_id = "voxeast_btn_int"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, @@ -3889,7 +3888,6 @@ /area/ghost_bar/outdoor/beach) "nz" = ( /obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160"; id_tag = "soltrader_south" }, /obj/effect/turf_decal/siding/wood/birch, @@ -3897,6 +3895,7 @@ dir = 1 }, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "nA" = ( @@ -4198,11 +4197,11 @@ /turf/simulated/floor/carpet/arcade, /area/trader_station/sol) "oF" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/survival_pod/glass{ hackProof = 1; aiControlDisabled = 1; name = "vox door"; - req_access_txt = "152"; dir = 4 }, /turf/simulated/floor/mineral/plastitanium{ @@ -4264,8 +4263,8 @@ "oO" = ( /obj/machinery/door/window/reinforced/normal{ dir = 4; - req_access_txt = "152"; - name = "vox glassdoor" + name = "vox glassdoor"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium{ @@ -4437,21 +4436,19 @@ id = "trader_privacy"; name = "Privacy Shutters Control"; pixel_y = 8; - req_access_txt = "160"; - req_one_access_txt = "160" + req_access = list(160) }, /obj/machinery/door_control/no_emag/east{ id = "soltrader_south"; name = "Trade Deposits Door"; normaldoorcontrol = 1; pixel_y = -8; - req_access_txt = "160"; - req_one_access_txt = "160" + req_access = list(160) }, /obj/machinery/flasher_button{ id = "soltraderflash"; pixel_x = 24; - req_one_access_txt = "160" + req_access = list(160) }, /turf/simulated/floor/wood/fancy/cherry, /area/shuttle/trade/sol) @@ -4865,10 +4862,10 @@ /turf/simulated/floor/grass, /area/ghost_bar/outdoor) "rd" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxwest_door_int"; locked = 1; - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -4884,7 +4881,7 @@ }, /obj/machinery/access_button/east{ autolink_id = "voxwest_btn_int"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium{ color = "#fff894"; @@ -5279,9 +5276,17 @@ /obj/structure/light_fake{ dir = 4 }, -/obj/machinery/economy/vending/secdrobe{ - prices = list() - }, +/obj/structure/closet, +/obj/item/clothing/suit/armor/secjacket, +/obj/item/clothing/head/helmet, +/obj/item/clothing/glasses/sunglasses, +/obj/item/storage/belt/security/full, +/obj/item/clothing/head/soft/sec/corp, +/obj/item/storage/backpack/security, +/obj/item/clothing/suit/armor/vest/security, +/obj/item/clothing/under/rank/security/officer, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/shoes/jackboots, /turf/simulated/floor/plasteel/dark{ icon_state = "darkredaltstrip"; dir = 5 @@ -6526,8 +6531,8 @@ "wv" = ( /obj/machinery/door/window/reinforced/reversed{ dir = 4; - req_access_txt = "152"; - name = "vox glassdoor" + name = "vox glassdoor"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium{ @@ -6714,8 +6719,8 @@ /turf/simulated/floor/wood/oak, /area/admin) "xf" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -6922,11 +6927,11 @@ /turf/simulated/floor/wood/oak, /area/admin) "xM" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/survival_pod/glass{ hackProof = 1; aiControlDisabled = 1; - name = "vox door"; - req_access_txt = "152" + name = "vox door" }, /turf/simulated/floor/mineral/plastitanium{ color = "#ff78f4"; @@ -7194,9 +7199,7 @@ }, /area/shuttle/vox) "yE" = ( -/obj/machinery/economy/vending/nta/admin{ - req_access = "0" - }, +/obj/machinery/economy/vending/nta/admin, /turf/simulated/floor/wood/oak, /area/admin) "yF" = ( @@ -7477,8 +7480,8 @@ /turf/simulated/floor/wood/oak, /area/admin) "zC" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -7638,7 +7641,7 @@ int_button_link_id = "voxwest_btn_int"; int_door_link_id = "voxwest_door_int"; pixel_x = 24; - req_access_txt = "152" + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium{ @@ -8449,7 +8452,7 @@ /obj/structure/table/wood, /obj/machinery/door_control/no_emag/east{ id = "tdome1"; - req_access_txt = "102" + req_access = list(102) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -8789,10 +8792,9 @@ /obj/effect/turf_decal/siding/wood/cherry{ dir = 8 }, -/obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium/glass, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "DU" = ( @@ -8817,10 +8819,10 @@ /turf/simulated/floor/wood, /area/ghost_bar/indoor) "DX" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ id_tag = "voxeast_door_ext"; locked = 1; - req_access_txt = "152"; aiControlDisabled = 1; hackProof = 1 }, @@ -8835,7 +8837,7 @@ }, /obj/machinery/access_button/west{ autolink_id = "voxeast_btn_ext"; - req_one_access_txt = "152" + req_access = list(152) }, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, /area/shuttle/vox) @@ -8963,8 +8965,8 @@ /turf/simulated/floor/carpet/royalblack, /area/ghost_bar/indoor) "ED" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -9195,8 +9197,8 @@ /turf/simulated/floor/wood, /area/ghost_bar/outdoor/beach) "Fx" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -9797,7 +9799,6 @@ /turf/simulated/floor/plasteel/smooth, /area/ghost_bar/indoor) "Hz" = ( -/turf/simulated/floor/plasteel/stairs/old, /area/ghost_bar/outdoor/beach) "HA" = ( /obj/item/pickaxe, @@ -10200,7 +10201,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdome"; name = "Main Blast Doors Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -10699,7 +10700,7 @@ /obj/machinery/door_control/no_emag{ id = "thunderdomehea"; name = "Heavy Supply Control"; - req_access_txt = "102" + req_access = list(102) }, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ @@ -11084,20 +11085,18 @@ name = "Trade Deposits Door"; normaldoorcontrol = 1; pixel_y = 8; - req_access_txt = "160"; - req_one_access_txt = "160" + req_access = list(160) }, /obj/machinery/door_control/no_emag/east{ id = "trader_privacy"; name = "Privacy Shutters Control"; pixel_y = -8; - req_access_txt = "160"; - req_one_access_txt = "160" + req_access = list(160) }, /obj/machinery/flasher_button{ id = "soltraderflash"; pixel_x = 24; - req_one_access_txt = "160" + req_access = list(160) }, /turf/simulated/floor/wood/fancy/cherry, /area/shuttle/trade/sol) @@ -11207,9 +11206,9 @@ "Mr" = ( /obj/machinery/door/window/reinforced/reversed{ dir = 1; - req_access_txt = "152"; name = "vox glassdoor"; - color = "red" + color = "red"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, @@ -11236,8 +11235,8 @@ /turf/simulated/floor/light/disco, /area/ghost_bar/outdoor/beach) "Mz" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -11524,10 +11523,9 @@ /obj/effect/turf_decal/siding/wood/cherry{ dir = 4 }, -/obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium/glass, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "NM" = ( @@ -11615,7 +11613,7 @@ /obj/machinery/door/window{ dir = 4; name = "Стойка"; - req_one_access_txt = "160" + req_access = list(160) }, /turf/simulated/floor/wood/fancy/cherry, /area/shuttle/trade/sol) @@ -11907,9 +11905,9 @@ "OV" = ( /obj/machinery/door/window/reinforced/normal{ dir = 1; - req_access_txt = "152"; name = "vox glassdoor"; - color = "red" + color = "red"; + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/mineral/plastitanium/red/nitrogen, @@ -12399,8 +12397,8 @@ /turf/simulated/floor/beach/away/sand_alternative, /area/ghost_bar/outdoor/beach) "Qz" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/hatch{ - req_access_txt = "152"; name = "vox hatch"; aiControlDisabled = 1; hackProof = 1 @@ -12698,9 +12696,7 @@ /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -12750,11 +12746,11 @@ /turf/simulated/floor/plasteel, /area/tdome/arena_source) "RJ" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/survival_pod/glass{ hackProof = 1; aiControlDisabled = 1; name = "vox door"; - req_access_txt = "152"; dir = 8 }, /turf/simulated/floor/mineral/plastitanium{ @@ -12793,14 +12789,13 @@ }, /area/ghost_bar/indoor) "RP" = ( -/obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium/glass, /obj/effect/turf_decal/siding/wood/birch, /obj/effect/turf_decal/siding/wood/cherry{ dir = 1 }, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "RQ" = ( @@ -12987,14 +12982,13 @@ /turf/simulated/floor/carpet/royalblack, /area/ghost_bar/indoor) "SJ" = ( -/obj/machinery/door/airlock/titanium/glass{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium/glass, /obj/effect/turf_decal/siding/wood/birch{ dir = 1 }, /obj/effect/turf_decal/siding/wood/cherry, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "SK" = ( @@ -13082,7 +13076,7 @@ /obj/structure/table/wood, /obj/machinery/door_control/no_emag/west{ id = "tdome2"; - req_access_txt = "102" + req_access = list(102) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -13198,11 +13192,11 @@ /turf/simulated/floor/beach/away/sand_alternative, /area/ninja/holding) "Tl" = ( +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox, /obj/machinery/door/airlock/survival_pod/glass{ hackProof = 1; aiControlDisabled = 1; name = "vox door"; - req_access_txt = "152"; dir = 4 }, /obj/effect/decal/cleanable/dirt, @@ -14101,7 +14095,7 @@ /area/trader_station/sol) "Wn" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -14648,10 +14642,9 @@ /obj/effect/turf_decal/siding/wood/cherry{ dir = 1 }, -/obj/machinery/door/airlock/titanium{ - req_one_access_txt = "160" - }, +/obj/machinery/door/airlock/titanium, /obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders, /turf/simulated/floor/carpet/orange, /area/shuttle/trade/sol) "Yj" = ( @@ -34207,7 +34200,7 @@ pO dB Ld Ld -dX +hN dX dX FU diff --git a/_maps/map_files220/generic/Lavaland.dmm b/_maps/map_files220/generic/Lavaland.dmm index 232c0c6290fd..45a19b839226 100644 --- a/_maps/map_files220/generic/Lavaland.dmm +++ b/_maps/map_files220/generic/Lavaland.dmm @@ -97,7 +97,7 @@ /turf/simulated/floor/plasteel/white, /area/mine/laborcamp) "as" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/mine/outpost/custodial) "at" = ( @@ -1468,9 +1468,9 @@ /obj/effect/turf_decal/delivery/hollow/right, /obj/machinery/door_control/shutter/east{ id = "mining_mechbay"; - req_access_txt = "54"; name = "Mech Bay Shutters"; - pixel_y = 5 + pixel_y = 5; + req_access = list(54) }, /obj/machinery/light_switch{ pixel_x = 24; @@ -3079,7 +3079,7 @@ icon_state = "1-2" }, /obj/effect/spawner/random_spawners/dirt_maybe, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/mine/outpost/maintenance/south) "gu" = ( @@ -5449,7 +5449,7 @@ /turf/simulated/wall, /area/lavaland/surface/outdoors) "qi" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/lavaland/surface/outdoors/outpost/catwalk) "qm" = ( @@ -5497,7 +5497,7 @@ }, /area/mine/laborcamp) "qJ" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/r_wall, /area/mine/laborcamp) "qK" = ( @@ -5983,7 +5983,7 @@ /turf/simulated/floor/indestructible/boss, /area/lavaland/surface/outdoors/legion) "tZ" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/mine/laborcamp) "ua" = ( @@ -6849,7 +6849,7 @@ /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "yR" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/spawner/random_spawners/dirt_maybe, /obj/effect/decal/cleanable/spiderling_remains, /turf/simulated/floor/plating, @@ -7719,7 +7719,7 @@ }, /area/mine/outpost/airlock) "DA" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/effect/spawner/random_spawners/dirt_maybe, /turf/simulated/floor/plating, /area/mine/outpost/maintenance/east) @@ -8031,7 +8031,7 @@ }, /area/mine/outpost/cafeteria) "FI" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/mine/outpost/maintenance/south) "FJ" = ( @@ -8906,7 +8906,7 @@ /turf/simulated/floor/plating, /area/mine/outpost/maintenance/south) "KD" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/mine/outpost/maintenance/south) "KE" = ( @@ -9588,7 +9588,7 @@ /obj/machinery/door_control/shutter/south{ id = "Labor"; name = "Labor Camp Lockdown"; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -10999,7 +10999,7 @@ /area/lavaland/surface/outdoors/legion) "XI" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/lavaland/surface/outdoors/outpost/catwalk) "XL" = ( @@ -11409,7 +11409,7 @@ }, /area/lavaland/surface/outdoors) "ZZ" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/r_wall, /area/mine/laborcamp/security) diff --git a/_maps/map_files220/generic/centcomm.dmm b/_maps/map_files220/generic/centcomm.dmm index 27652de5ee20..8912a1d5f835 100644 --- a/_maps/map_files220/generic/centcomm.dmm +++ b/_maps/map_files220/generic/centcomm.dmm @@ -204,7 +204,7 @@ "aic" = ( /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "101" + req_one_access = list(101) }, /obj/effect/turf_decal/delivery/blue, /turf/simulated/floor/plasteel/dark, @@ -315,9 +315,9 @@ /turf/simulated/floor/wood/fancy/oak, /area/centcom/ss220/park) "amV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Изолятор"; - req_access_txt = "101" + name = "Изолятор" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -411,8 +411,8 @@ pixel_y = 8; id = "СС_COO_WINDOW"; name = "Blast Window Open"; - req_access_txt = "114"; - layer = 3 + layer = 3; + req_access = list(114) }, /obj/item/clothing/mask/holo_cigar, /obj/item/reagent_containers/drinks/bottle/whiskey{ @@ -467,7 +467,7 @@ "ase" = ( /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -529,7 +529,7 @@ }, /area/syndicate_mothership/jail) "auk" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/pulse/destroyer/annihilator{ pixel_x = -6 }, @@ -561,20 +561,20 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -30; pixel_x = -7; name = "SST Outside Doors"; - id = "SST_outside" + id = "SST_outside"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -30; pixel_x = 7; id = "SST_to_ATOM"; - name = "SST to ATOM hall" + name = "SST to ATOM hall"; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -591,7 +591,7 @@ color = "red"; icon_state = "rightsecure"; name = "Riot Control"; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -603,7 +603,7 @@ /turf/simulated/floor/indestructible/grass/no_creep, /area/centcom/ss220/admin1) "avX" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/gun/advtaser{ pixel_x = -6 }, @@ -683,7 +683,7 @@ "ayh" = ( /obj/machinery/door/airlock/centcom{ name = "Дроп Под"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ name = "Дроп Под"; @@ -694,7 +694,7 @@ /obj/machinery/door_control/no_emag/no_cyborg{ id = "cc_drop_pod_2"; name = "Дроп Под"; - req_one_access_txt = "114"; + req_access = list(114); pixel_y = 24 }, /obj/effect/turf_decal/delivery/red, @@ -721,7 +721,7 @@ }, /area/centcom/ss220/bar) "azw" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/lwap, /obj/item/gun/energy/lwap{ pixel_x = 2 @@ -748,7 +748,7 @@ /obj/machinery/door/window/reinforced/normal{ color = "red"; name = "Комната заключённых"; - req_access_txt = "104" + req_access = list(104) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -933,9 +933,9 @@ name = "Tool Storage"; wires = 1; specialfunctions = 4; - req_access_txt = "153"; pixel_x = -32; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding, /turf/simulated/floor/plasteel{ @@ -1061,8 +1061,8 @@ /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin1) "aKT" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Бар" }, /turf/simulated/floor/pod/light, @@ -1757,7 +1757,7 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_COO_Mecha"; name = "Blast Door Open"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -1927,7 +1927,7 @@ /area/centcom/ss220/bar) "blk" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/general) @@ -1976,7 +1976,7 @@ "bnn" = ( /obj/machinery/door/airlock/centcom{ name = "Офисы"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/delivery/blue, /turf/simulated/floor/plasteel/dark, @@ -2329,8 +2329,8 @@ /area/syndicate_mothership) "bxL" = ( /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - name = "Брифинг-зал" + name = "Брифинг-зал"; + req_access = list(114) }, /turf/simulated/floor/plasteel{ color = "gray"; @@ -2475,7 +2475,7 @@ /obj/machinery/door/airlock/external{ name = "Шаттл доставки"; opacity = 0; - req_one_access_txt = "106" + req_access = list(106) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -2702,7 +2702,7 @@ "bLF" = ( /obj/machinery/door/airlock/centcom{ name = "Дроп Под"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ name = "Дроп Под"; @@ -2713,7 +2713,7 @@ /obj/machinery/door_control/no_emag/no_cyborg{ id = "cc_drop_pod_1"; name = "Дроп Под"; - req_one_access_txt = "114"; + req_access = list(114); pixel_x = 24 }, /obj/effect/turf_decal/delivery/red, @@ -2724,7 +2724,7 @@ color = "#000000" }, /obj/effect/turf_decal/siding/wood/end, -/obj/structure/rack/gunrack{ +/obj/structure/gunrack{ color = "grey" }, /obj/item/gun/projectile/shotgun/automatic/dual_tube, @@ -2929,7 +2929,7 @@ layer = 3; name = "Loading Doors"; pixel_y = 8; - req_one_access_txt = "79" + req_access = list(79) }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/supply) @@ -3295,7 +3295,7 @@ }, /obj/structure/light_fake/small, /obj/effect/turf_decal/delivery/white/hollow, -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) "bVX" = ( @@ -3308,7 +3308,7 @@ /area/syndicate_mothership/cargo) "bWD" = ( /obj/structure/closet/secure_closet/brig{ - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) @@ -3382,7 +3382,7 @@ /obj/item/flag/syndi, /obj/machinery/computer/cryopod{ pixel_x = 32; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) @@ -3478,7 +3478,7 @@ }, /area/shuttle/syndicate) "ccF" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/laser/instakill/blue{ pixel_x = -6 }, @@ -3593,7 +3593,7 @@ /turf/simulated/floor/grass/no_creep, /area/centcom/ss220/evac) "cgE" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/l6_saw{ pixel_x = -6 }, @@ -3735,7 +3735,6 @@ dir = 1 }, /obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/extinguisher_cabinet/directional/south, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/mining) "ckX" = ( @@ -3792,9 +3791,9 @@ }, /area/syndicate_mothership/jail) "clT" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Лазарет"; - req_access_txt = "101" + name = "Лазарет" }, /turf/simulated/floor/plasteel/dark{ icon_state = "barber" @@ -3883,7 +3882,7 @@ /turf/simulated/floor/indestructible/grass/no_creep, /area/centcom/ss220/admin1) "coe" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/gun, /obj/item/gun/energy/gun{ pixel_x = 2 @@ -4283,7 +4282,7 @@ "cFJ" = ( /obj/machinery/door/airlock/command/glass{ name = "Escape Shuttle Cockpit"; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel, /area/shuttle/escape) @@ -4296,7 +4295,7 @@ "cFW" = ( /obj/machinery/door/airlock/centcom{ name = "Офисы"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 6 @@ -4397,10 +4396,10 @@ /turf/simulated/floor/carpet/royalblack, /area/shuttle/administration) "cLj" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_ext"; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/door/poddoor{ density = 0; @@ -5011,7 +5010,7 @@ }, /area/centcom/ss220/admin3) "ddt" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/clown, /obj/item/gun/energy/clown{ pixel_x = 2 @@ -5084,8 +5083,8 @@ /turf/simulated/floor/wood/parquet/tile, /area/centcom/ss220/admin2) "deM" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/hatch{ - req_access_txt = "109"; aiControlDisabled = 1; name = "Assault Pod" }, @@ -5175,9 +5174,9 @@ /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) "dhs" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Шаттл"; - req_access_txt = "101" + name = "Шаттл" }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -5285,9 +5284,9 @@ }, /area/syndicate_mothership) "dlt" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ - id_tag = "syndicate_away"; - req_access_txt = "150" + id_tag = "syndicate_away" }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -5306,7 +5305,7 @@ "dmb" = ( /obj/machinery/computer/cryopod{ pixel_y = -32; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/elite_squad) @@ -5399,7 +5398,7 @@ /area/centcom/ss220/bar) "dpU" = ( /obj/structure/closet/cabinet{ - req_one_access_txt = "114" + req_access = list(114) }, /obj/item/storage/box/centcomofficer, /obj/item/radio/headset/centcom, @@ -5482,14 +5481,14 @@ layer = 4; name = "Loading Doors"; pixel_y = -8; - req_one_access_txt = "106" + req_access = list(106) }, /obj/machinery/door_control/no_emag/east{ id = "QMLoaddoor"; layer = 4; name = "Loading Doors"; pixel_y = 8; - req_one_access_txt = "106" + req_access = list(106) }, /obj/structure/light_fake{ dir = 4 @@ -5777,9 +5776,9 @@ }, /area/syndicate_mothership/cargo) "dzV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Покои ОСО"; - req_access_txt = "114" + name = "Покои ОСО" }, /obj/effect/turf_decal/tile/neutral/full{ color = "#000000" @@ -5856,12 +5855,12 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_BD_Interior_1"; name = "Blast Door Open"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/machinery/door/airlock/centcom{ id_tag = "CC_Interior_1"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin1) @@ -5891,7 +5890,7 @@ pixel_y = -3 }, /obj/effect/turf_decal/delivery/white/hollow, -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) "dCq" = ( @@ -6030,7 +6029,7 @@ "dGG" = ( /obj/machinery/door/airlock/centcom{ name = "Камера"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -6050,7 +6049,7 @@ "dHB" = ( /obj/machinery/door/airlock/centcom{ name = "Комната углубленного допроса"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_8"; @@ -6060,7 +6059,7 @@ /obj/machinery/door_control/no_emag/east{ id = "CC_SOD_8"; name = "Комната углубленного допроса"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/jail) @@ -6381,7 +6380,7 @@ /area/centcom/ss220/supply) "dPI" = ( /obj/machinery/door/airlock/centcom{ - req_one_access_txt = "101"; + req_access = list(101); id_tag = "CC_Cargo_Office_Exterior_1" }, /obj/effect/mapping_helpers/airlock/autoname, @@ -6510,7 +6509,7 @@ "dUF" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_4"; @@ -6520,7 +6519,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_4"; name = "Переход в Отдел Специальных Операций"; - req_access_txt = "114" + req_access = list(114) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 10 @@ -6616,9 +6615,9 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/escape) "dYV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Пилот"; - req_access_txt = "101" + name = "Пилот" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -6638,7 +6637,7 @@ /obj/machinery/door_control/no_emag/east{ id = "CC_Armory"; name = "Оружейная"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -6652,7 +6651,7 @@ "dZw" = ( /obj/machinery/door/airlock/command/glass{ name = "Escape Shuttle Cockpit"; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -6715,7 +6714,7 @@ "ebq" = ( /obj/machinery/door/airlock/centcom{ name = "Камера"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -6805,7 +6804,7 @@ /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_one_access_txt = "79" + req_access = list(79) }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -6826,7 +6825,7 @@ /obj/structure/morgue, /obj/machinery/door/window/reinforced/normal{ name = "Морг"; - req_one_access_txt = "101"; + req_access = list(101); dir = 4 }, /obj/structure/window/reinforced, @@ -6991,7 +6990,7 @@ /area/centcom/ss220/admin2) "enT" = ( /obj/structure/closet/cabinet{ - req_one_access_txt = "114" + req_access = list(114) }, /obj/item/clothing/suit/judgerobe{ name = "Supreme Judge's robe" @@ -7085,7 +7084,7 @@ /obj/machinery/door/airlock/centcom{ id_tag = "СС_Interior_2"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -7176,10 +7175,10 @@ /obj/machinery/door_control/no_emag{ id = "Aspid_deck"; wires = 1; - req_access_txt = "153"; name = "Aspid main storage"; emagged = 1; - pixel_x = 32 + pixel_x = 32; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -7674,12 +7673,12 @@ /obj/machinery/door/airlock/centcom{ id_tag = "CC_Cargo_Interior_1"; name = "Зона ЦК Карго"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Cargo_Interior_1"; name = "Blast Door Open"; - req_one_access_txt = "104"; + req_access = list(104); pixel_y = 24 }, /obj/machinery/door/poddoor/impassable{ @@ -7760,7 +7759,7 @@ /turf/simulated/floor/carpet/royalblue, /area/centcom/ss220/bar) "eIq" = ( -/obj/structure/rack/gunrack{ +/obj/structure/gunrack{ color = "grey" }, /obj/item/gun/projectile/automatic/gyropistol{ @@ -7793,7 +7792,7 @@ /obj/machinery/door/airlock/external{ id_tag = "specops_away"; name = "Шаттл ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plating, /area/centcom/ss220/admin3) @@ -8041,7 +8040,7 @@ /obj/machinery/door_control/no_emag/south{ id = "CC_Armory_Advanced"; name = "Оружейная - Дополнительный аренал"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/structure/light_fake/spot{ dir = 4 @@ -8477,7 +8476,7 @@ /turf/simulated/floor/carpet/royalblack, /area/syndicate_mothership/control) "fbR" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/m90, /obj/item/gun/projectile/automatic/m90{ pixel_x = 2 @@ -8546,7 +8545,7 @@ /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) "fcF" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/ar{ pixel_x = -6 }, @@ -8949,7 +8948,7 @@ color = "#80ff80"; id = "CC_Armory_Green"; name = "Оружейная - Уровень 1"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark{ dir = 5; @@ -9174,7 +9173,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 1; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/structure/table/glass/reinforced/plastitanium, /obj/machinery/door/poddoor/preopen{ @@ -9455,7 +9454,7 @@ name = "Blast Doors"; pixel_x = -30; pixel_y = -11; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_elite) @@ -10131,7 +10130,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Exterior_1"; @@ -10139,21 +10138,21 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Interior_1"; name = "Blast Door Open"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Exterior_1"; name = "Blast Door Open"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/bar) @@ -10181,9 +10180,7 @@ }, /area/centcom/ss220/bar) "fZv" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whiteblue" @@ -10821,7 +10818,7 @@ name = "Защита КПП"; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/item/pen/multi/fountain{ pixel_x = 6; @@ -11005,9 +11002,9 @@ /turf/simulated/floor/carpet/royalblack, /area/centcom/ss220/general) "gGk" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Развед. Центр"; - req_access_txt = "101" + name = "Развед. Центр" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -11304,9 +11301,7 @@ }, /area/centcom/ss220/admin1) "gNL" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -11580,8 +11575,8 @@ /turf/simulated/floor/carpet/red, /area/syndicate_mothership/control) "gXr" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/hatch{ - req_access_txt = "109"; aiControlDisabled = 1; name = "Assault Pod" }, @@ -11635,7 +11630,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 8; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/preopen{ id_tag = "CC_Turret"; @@ -11656,14 +11651,14 @@ name = "Blast Door Open"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Shitspawn_Interior_1"; name = "Blast Door Open"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Shitspawn_Interior_1"; @@ -11671,7 +11666,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Shitspawn_Exterior_1"; @@ -11679,7 +11674,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -11696,8 +11691,8 @@ }, /area/centcom/ss220/medbay) "gYI" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Туалеты" }, /turf/simulated/floor/plasteel, @@ -11783,7 +11778,7 @@ }, /area/shuttle/escape) "hbp" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/shotgun/automatic/dual_tube, /obj/item/gun/projectile/shotgun/automatic/dual_tube{ pixel_x = 2 @@ -11886,7 +11881,7 @@ }, /obj/structure/light_fake/small, /obj/effect/turf_decal/delivery/white/hollow, -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) "hdx" = ( @@ -11903,7 +11898,7 @@ color = "red"; icon_state = "rightsecure"; name = "Riot Control"; - req_access_txt = "153" + req_access = list(153) }, /obj/structure/curtain/black{ pixel_y = 32; @@ -12032,7 +12027,7 @@ "hhC" = ( /obj/machinery/door/airlock/centcom{ name = "Отдел кадров"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 9 @@ -12108,7 +12103,7 @@ "hka" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 5 @@ -12126,8 +12121,8 @@ /turf/simulated/floor/wood/oak, /area/centcom/ss220/park) "hkd" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Рабочая Зона" }, /turf/simulated/floor/plasteel/dark, @@ -12138,7 +12133,7 @@ }, /obj/machinery/door/airlock/external{ name = "Ship External Access"; - req_access_txt = "153" + req_access = list(153) }, /obj/structure/fans/tiny, /turf/simulated/floor/plasteel{ @@ -12215,7 +12210,7 @@ id = "gulagshuttleflasher"; name = "Flash Control"; pixel_y = -24; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) @@ -12259,7 +12254,7 @@ "hoK" = ( /obj/machinery/door/airlock/centcom{ name = "Оружейная"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/impassable{ id_tag = "СС_Office_Armory"; @@ -12269,7 +12264,7 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_Office_Armory"; name = "Blast Door Open"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -12439,7 +12434,7 @@ /obj/structure/table, /obj/machinery/door/window/brigdoor{ color = "red"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -12543,7 +12538,7 @@ "hvB" = ( /obj/machinery/door/airlock/multi_tile/command/glass{ name = "Командный Центр"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/stairs/left{ color = "gray" @@ -12770,7 +12765,7 @@ /obj/machinery/door_control/no_emag{ id = "syndieshutters"; name = "remote shutter control"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) @@ -12957,7 +12952,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; dir = 8; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plating{ icon = 'icons/turf/floors.dmi'; @@ -13336,10 +13331,10 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "150"; pixel_y = 30; id = "nukeop_storage"; - name = "ATOM Storage" + name = "ATOM Storage"; + req_access = list(150) }, /turf/simulated/floor/wood/oak, /area/syndicate_mothership) @@ -13382,7 +13377,7 @@ "hRX" = ( /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/effect/turf_decal/delivery/blue, /turf/simulated/floor/plasteel/dark, @@ -13550,15 +13545,13 @@ }, /area/syndicate_mothership) "hXH" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" }, /area/centcom/ss220/medbay) "hXZ" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/proto, /obj/item/gun/projectile/automatic/proto{ pixel_x = 2 @@ -13856,7 +13849,7 @@ layer = 4; name = "Prison Flasher"; pixel_x = -26; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/light_fake/small{ dir = 8 @@ -13926,9 +13919,7 @@ /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) "ilF" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue" @@ -14066,7 +14057,7 @@ /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) "ipb" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/l6_saw, /obj/item/gun/projectile/automatic/l6_saw{ pixel_x = 2 @@ -14115,8 +14106,8 @@ wires = 1; id = "nukeop_ready"; name = "Shuttle Dock Door"; - req_access_txt = "151"; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(151) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -14221,12 +14212,12 @@ /obj/machinery/light/small/directional/west, /obj/machinery/airlock_controller/air_cycler{ pixel_x = -25; - req_access_txt = "150"; vent_link_id = "syndishuttle_vent"; ext_door_link_id = "syndishuttle_door_ext"; int_door_link_id = "syndishuttle_door_int"; ext_button_link_id = "syndishuttle_btn_ext"; - int_button_link_id = "syndishuttle_btn_int" + int_button_link_id = "syndishuttle_btn_int"; + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -14257,7 +14248,7 @@ /turf/simulated/floor/carpet/royalblack, /area/centcom/ss220/admin2) "isq" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/m90{ pixel_x = -6 }, @@ -14429,8 +14420,8 @@ /obj/structure/table/reinforced, /obj/machinery/door_control/no_emag/east{ id = "CC_Armory_Advanced_3"; - req_access_txt = "114"; - name = "Энергетическое" + name = "Энергетическое"; + req_access = list(114) }, /obj/item/ammo_box/magazine/m556{ pixel_y = 5 @@ -14598,8 +14589,8 @@ pixel_x = 6 }, /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - name = "Брифинг-зал" + name = "Брифинг-зал"; + req_access = list(114) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin3) @@ -14783,7 +14774,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_Armory_Mech"; name = "Оружейная - Мехи"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/item/borg/upgrade/thrusters, /obj/item/borg/upgrade/restart, @@ -15287,7 +15278,7 @@ "jak" = ( /obj/machinery/door/airlock/external{ name = "Ship External Access"; - req_access_txt = "153" + req_access = list(153) }, /obj/structure/fans/tiny, /turf/simulated/floor/plasteel{ @@ -15327,10 +15318,10 @@ /obj/machinery/door_control/no_emag{ id = "Aspid_main_storage"; wires = 1; - req_access_txt = "153"; name = "Aspid main storage"; emagged = 1; - pixel_y = -32 + pixel_y = -32; + req_access = list(153) }, /turf/simulated/floor/plasteel{ icon_state = "darkyellowalt" @@ -15362,7 +15353,7 @@ /area/centcom/ss220/admin3) "jef" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -15730,8 +15721,8 @@ pixel_y = 6 }, /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - dir = 8 + dir = 8; + req_access = list(114) }, /turf/simulated/floor/wood/parquet/tile, /area/centcom/ss220/admin2) @@ -16157,7 +16148,7 @@ /obj/effect/turf_decal/siding/wood/end{ dir = 1 }, -/obj/structure/rack/gunrack{ +/obj/structure/gunrack{ color = "grey" }, /obj/item/gun/energy/pulse/destroyer/annihilator, @@ -16383,9 +16374,9 @@ pixel_x = 32; id = "Aspid_poddor_right"; wires = 1; - req_access_txt = "153"; name = "Aspid poddor"; - emagged = 1 + emagged = 1; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -16468,7 +16459,7 @@ pixel_y = 4 }, /obj/machinery/door_control/no_emag/west{ - req_one_access_txt = "114"; + req_access = list(114); name = "Огнестрел"; id = "CC_Armory_Advanced_2" }, @@ -16580,7 +16571,7 @@ "jPy" = ( /obj/machinery/door/airlock/security/glass{ name = "Escape Shuttle Cell"; - req_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) @@ -16886,9 +16877,9 @@ /turf/simulated/floor/fakespace, /area/centcom/ss220/bar) "kdh" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Лазарет"; - req_access_txt = "101" + name = "Лазарет" }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -17258,8 +17249,8 @@ pixel_x = 2 }, /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - dir = 8 + dir = 8; + req_access = list(114) }, /obj/item/reagent_containers/drinks/drinkingglass{ pixel_y = 3 @@ -17674,7 +17665,7 @@ layer = 4; name = "Prison Flasher"; pixel_x = 26; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/light_fake/small{ dir = 4 @@ -17755,7 +17746,7 @@ /obj/machinery/door/airlock/centcom{ id_tag = "СС_Interior_2"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -17766,12 +17757,12 @@ /obj/machinery/door_control/no_emag/north{ id = "СС_Briefing_Room_BSA"; name = "Blast Door Open"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) "kED" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/gun/blueshield/pdw9{ pixel_x = -6 }, @@ -17819,16 +17810,16 @@ }, /area/centcom/ss220/medbay) "kEZ" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door_control/no_emag{ id = "syndicate_sit_1"; name = "Blast Doors"; pixel_x = -25; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /obj/machinery/door/poddoor{ @@ -17837,7 +17828,7 @@ id_tag = "syndicate_sit_1"; name = "Front Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plating, /area/shuttle/syndicate_sit) @@ -17864,7 +17855,7 @@ "kFm" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_3"; @@ -17874,7 +17865,7 @@ /obj/machinery/door_control/no_emag/east{ id = "CC_SOD_3"; name = "Переход в Отдел Специальных Операций"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 5 @@ -18017,10 +18008,10 @@ }, /area/shuttle/syndicate) "kIS" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -18028,15 +18019,15 @@ id_tag = "syndicate_sit_1"; name = "Side Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /obj/machinery/door_control/no_emag{ id = "syndicate_sit_1"; name = "Blast Doors"; pixel_y = -23; - req_access_txt = "150"; - wires = 1 + wires = 1; + req_access = list(150) }, /obj/docking_port/mobile{ dir = 4; @@ -18082,11 +18073,11 @@ /obj/machinery/door_control/no_emag/north{ id = "СС_conf_private"; name = "Blast Door Open"; - req_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/airlock/centcom{ name = "Переговорная"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) @@ -18222,7 +18213,7 @@ /obj/machinery/door_control/no_emag/west{ id = "cc_mech_weapon"; name = "Оружейная - Мехи"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "navybluefull" @@ -18329,7 +18320,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Cargo_Office_Interior_1"; @@ -18337,7 +18328,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/general) @@ -18692,7 +18683,7 @@ /obj/machinery/flasher_button{ id = "gulagshuttleflasher"; name = "Flash Control"; - req_access_txt = "1" + req_access = list(1) }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/siberia) @@ -18901,7 +18892,7 @@ "lhO" = ( /obj/machinery/door/airlock/centcom{ name = "Шаттл Доставки"; - req_one_access_txt = "106" + req_access = list(106) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/bar) @@ -18964,7 +18955,7 @@ /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/court) "ljX" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/disabler{ pixel_x = -6 }, @@ -19122,7 +19113,7 @@ "lpN" = ( /obj/machinery/door/airlock/centcom{ name = "Хранилище"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ layer = 3; @@ -19132,7 +19123,7 @@ /obj/machinery/door_control/no_emag/west{ name = "Хранилище"; id = "cc_trial"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/supply) @@ -19150,9 +19141,9 @@ id = "syndFB_baseleft"; name = "Forward Base Access"; pixel_y = -25; - req_access_txt = "153"; wires = 1; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding, /turf/simulated/floor/plasteel{ @@ -19222,7 +19213,7 @@ "lsx" = ( /obj/structure/closet/secure_closet/guncabinet{ name = "LMG M249 SAW"; - req_access_txt = "114" + req_access = list(114) }, /obj/item/ammo_box/magazine/mm556x45/ap, /obj/item/ammo_box/magazine/mm556x45/ap, @@ -19448,7 +19439,7 @@ /area/centcom/ss220/admin2) "lvS" = ( /obj/machinery/door/airlock/centcom{ - req_one_access_txt = "101"; + req_access = list(101); id_tag = "CC_Cargo_Office_Interior_1" }, /obj/effect/mapping_helpers/airlock/autoname, @@ -19833,7 +19824,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 4; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/item/paper_bin/nanotrasen{ pixel_x = -4; @@ -19915,7 +19906,7 @@ /obj/item/ammo_box/magazine/m556, /obj/item/ammo_box/magazine/m556, /obj/effect/turf_decal/delivery/white/hollow, -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership/elite_squad) "lLq" = ( @@ -19982,7 +19973,7 @@ /area/centcom/ss220/admin1) "lNa" = ( /obj/structure/closet/secure_closet/medical1{ - req_access_txt = "150" + req_access = list(150) }, /obj/item/storage/box/beakers/bluespace, /obj/item/storage/box/beakers/bluespace, @@ -20099,7 +20090,7 @@ /area/syndicate_mothership/control) "lPU" = ( /obj/structure/closet/secure_closet/personal/cabinet{ - req_one_access_txt = "114"; + req_access = list(114); req_access = null }, /obj/item/clothing/head/towel/orange, @@ -20207,7 +20198,7 @@ /area/centcom/ss220/general) "lTh" = ( /obj/structure/closet/cabinet{ - req_one_access_txt = "153" + req_access = list(153) }, /obj/item/clothing/gloves/combat, /obj/item/radio/headset/syndicate/alt/syndteam, @@ -20588,8 +20579,8 @@ /turf/simulated/floor/indestructible/grass/no_creep, /area/centcom/ss220/admin1) "mgU" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Спальня" }, /turf/simulated/floor/plasteel/dark, @@ -20879,7 +20870,7 @@ "mot" = ( /obj/machinery/door/airlock/centcom{ name = "Телепортерная"; - req_one_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -21115,7 +21106,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/computer/cryopod{ pixel_y = -32; - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/cryopod/offstation{ icon_state = "sleeper_s"; @@ -21188,7 +21179,7 @@ "mzs" = ( /obj/machinery/door/window/brigdoor{ color = "red"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -21263,8 +21254,8 @@ /obj/machinery/access_button{ autolink_id = "syndicate_jail_button_ext"; name = "Jail Access Button"; - req_access_txt = "153"; - pixel_x = -25 + pixel_x = -25; + req_access = list(153) }, /turf/simulated/floor/plasteel{ icon_state = "brownoldfull" @@ -21959,7 +21950,7 @@ "nbq" = ( /obj/machinery/door/airlock/security/glass{ name = "Навигатор Дроп Пода"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -22035,7 +22026,7 @@ /turf/simulated/floor/indestructible/grass, /area/syndicate_mothership/outside) "ndz" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/gun/nuclear{ pixel_x = -6 }, @@ -22075,7 +22066,7 @@ /obj/item/ammo_casing/rocket, /obj/item/ammo_casing/rocket, /obj/effect/turf_decal/delivery/white, -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/plasteel{ icon_state = "darkyellowfull" }, @@ -22184,7 +22175,7 @@ "nhQ" = ( /obj/machinery/door/window/reinforced/normal{ name = "Операционная"; - req_one_access_txt = "101"; + req_access = list(101); dir = 4 }, /obj/effect/turf_decal/caution{ @@ -22378,10 +22369,10 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -30; id = "nukeop_outside"; - name = "ATOM Outside Doors" + name = "ATOM Outside Doors"; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -22445,7 +22436,7 @@ /turf/simulated/floor/fakespace, /area/centcom/ss220/bar) "npf" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/immolator, /obj/item/gun/energy/immolator{ pixel_x = 2 @@ -22481,7 +22472,7 @@ /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) "npI" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/lwap{ pixel_x = -6 }, @@ -22765,7 +22756,7 @@ }, /area/centcom/ss220/evac) "nzJ" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/disabler/smg, /obj/item/gun/energy/disabler/smg{ pixel_x = 2 @@ -23070,7 +23061,7 @@ color = "#8080ff"; id = "CC_Armory_Red"; name = "Оружейная - Уровень 3"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ dir = 4; @@ -23258,7 +23249,7 @@ "nNZ" = ( /obj/machinery/door/morgue{ name = "Private Study"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -23277,9 +23268,7 @@ }, /area/centcom/ss220/park) "nOt" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whiteblue" @@ -23382,7 +23371,7 @@ name = "OMICRON"; color = "#ffbf80"; id = "CC_DeathSquad"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) @@ -23575,9 +23564,9 @@ }, /area/syndicate_mothership) "nXF" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Морг"; - req_access_txt = "101" + name = "Морг" }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -23587,7 +23576,7 @@ /obj/machinery/door_control/no_emag/north{ name = "Pod Door Control"; id = "ert_shuttle_door"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark{ dir = 9; @@ -23851,7 +23840,7 @@ /area/syndicate_mothership) "okd" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel, /area/centcom/ss220/general) @@ -24069,7 +24058,7 @@ "oqA" = ( /obj/machinery/computer/cryopod{ pixel_x = 32; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/light_fake/small{ dir = 4 @@ -24108,7 +24097,7 @@ id = "smindicate"; name = "External Shutters Control"; pixel_x = -25; - req_access_txt = "150" + req_access = list(150) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "syndishuttle_vent"; @@ -24119,9 +24108,9 @@ }, /area/shuttle/syndicate) "orV" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Шаттл Нанотрейзен"; - req_access_txt = "101" + name = "Шаттл Нанотрейзен" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -24178,7 +24167,7 @@ }, /area/syndicate_mothership/cargo) "ouD" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/lasercannon, /obj/item/gun/energy/lasercannon{ pixel_x = 2 @@ -24329,10 +24318,10 @@ /turf/simulated/floor/indestructible/grass/no_creep, /area/centcom/ss220/admin1) "oyE" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_ext"; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/machinery/door/poddoor{ density = 0; @@ -24629,7 +24618,7 @@ }, /area/syndicate_mothership/cargo) "oGQ" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/xray, /obj/item/gun/energy/xray{ pixel_x = 2 @@ -24671,7 +24660,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Riot Control"; - req_access_txt = "153" + req_access = list(153) }, /obj/structure/curtain/black{ pixel_y = 32; @@ -25175,7 +25164,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 8; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/general) @@ -25234,8 +25223,8 @@ id = "SST_armory_main"; emagged = 1; wires = 1; - req_access_txt = "153"; - name = "SST Armory" + name = "SST Armory"; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -25310,7 +25299,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_6"; name = "Переход в Отдел Специальных Операций"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -25435,7 +25424,7 @@ "peR" = ( /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/general) @@ -25514,9 +25503,9 @@ /turf/simulated/floor/carpet/red, /area/centcom/ss220/bar) "pjg" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ name = "Assault Pod"; - req_access_txt = "109"; id_tag = "nt_drop_pod" }, /obj/structure/fans/tiny, @@ -25616,7 +25605,7 @@ color = "#ff8080"; id = "CC_Armory_Blue"; name = "Оружейная - Уровень 2"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ dir = 8; @@ -25805,7 +25794,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Riot Control"; - req_access_txt = "153" + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -25942,9 +25931,9 @@ /area/centcom/ss220/jail) "pyG" = ( /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; dir = 8; - name = "Отдел кадров" + name = "Отдел кадров"; + req_access = list(114) }, /turf/simulated/floor/carpet/red, /area/centcom/ss220/admin2) @@ -26238,9 +26227,9 @@ name = "Teleporter"; wires = 1; specialfunctions = 4; - req_access_txt = "153"; pixel_y = 32; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding/corner{ dir = 5 @@ -26317,7 +26306,7 @@ /area/centcom/ss220/admin2) "pMO" = ( /obj/structure/closet/cabinet{ - req_one_access_txt = "153" + req_access = list(153) }, /obj/item/clothing/gloves/combat, /obj/item/radio/headset/syndicate/alt/syndteam, @@ -26693,7 +26682,7 @@ "pUc" = ( /obj/machinery/door/airlock/centcom{ name = "ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/effect/turf_decal/delivery/blue, /turf/simulated/floor/plasteel/dark, @@ -26796,10 +26785,10 @@ }, /area/syndicate_mothership/infteam) "pYp" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_access_txt = "109"; aiControlDisabled = 1 }, /obj/docking_port/mobile{ @@ -26825,7 +26814,7 @@ /obj/machinery/door/airlock/centcom{ id_tag = "CC_Cargo_Exterior_1"; name = "Зона ЦК Карго"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "СС_BD_Cargo_Exterior_1"; @@ -26834,7 +26823,7 @@ /obj/machinery/door_control/no_emag{ id = "СС_BD_Cargo_Exterior_1"; name = "Blast Door Open"; - req_one_access_txt = "104"; + req_access = list(104); pixel_y = 24 }, /turf/simulated/floor/plasteel/dark, @@ -26897,7 +26886,7 @@ "qbw" = ( /obj/machinery/door/airlock/command/glass{ name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin1) @@ -27358,9 +27347,9 @@ }, /area/centcom/ss220/bar) "qsh" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОСО"; - req_access_txt = "114" + name = "Кабинет ОСО" }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -27371,7 +27360,7 @@ /obj/machinery/door_control/no_emag/west{ name = "Blast Door Open"; id = "СС_COO_BSA"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin2) @@ -27497,7 +27486,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Secure Door"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium, /area/shuttle/syndicate) @@ -27514,13 +27503,13 @@ dir = 8 }, /obj/machinery/door/airlock/hatch/syndicate/vault{ - req_access_txt = "153"; - name = "Vault" + name = "Vault"; + req_access = list(153) }, /turf/simulated/floor/wood/oak, /area/syndicate_mothership/control) "qyB" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/ak814, /obj/item/gun/projectile/automatic/ak814{ pixel_x = 2 @@ -27742,8 +27731,8 @@ /obj/machinery/door/window/brigdoor{ color = "red"; dir = 8; - req_access_txt = "150"; - name = "Kitchen" + name = "Kitchen"; + req_access = list(150) }, /turf/simulated/floor/plating{ icon = 'icons/turf/floors.dmi'; @@ -27833,7 +27822,7 @@ "qHy" = ( /obj/machinery/door/airlock/centcom{ name = "Зона ЦК"; - req_one_access_txt = "104" + req_access = list(104) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -27910,8 +27899,8 @@ /area/syndicate_mothership) "qJx" = ( /obj/machinery/door/window/reinforced/normal{ - req_access_txt = "114"; - dir = 8 + dir = 8; + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" @@ -27937,7 +27926,7 @@ "qKs" = ( /obj/structure/closet/secure_closet/guncabinet{ name = "Automatic Shotgun"; - req_access_txt = "114" + req_access = list(114) }, /obj/item/gun/projectile/automatic/shotgun/bulldog, /obj/item/gun/projectile/automatic/shotgun/bulldog, @@ -28161,10 +28150,10 @@ /obj/machinery/door_control/no_emag{ pixel_x = 32; id = "SIT_ready"; - req_access_txt = "150"; specialfunctions = 4; wires = 1; - name = "Shuttle Dock Door" + name = "Shuttle Dock Door"; + req_access = list(150) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -28190,18 +28179,18 @@ /obj/machinery/door_control/no_emag/south{ id = "SST_armory_mech_maintenance"; wires = 1; - req_access_txt = "153"; emagged = 1; - name = "SST_armory_mech_maintenance" + name = "SST_armory_mech_maintenance"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -40; id = "SST_armory_mech_mauler"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST Armory Mech Mauler"; - color = "#ff9999" + color = "#ff9999"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -32; @@ -28209,9 +28198,9 @@ id = "SST_armory_mech_gygax"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST_armory_mech_gygax"; - color = "#ffdd99" + color = "#ffdd99"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -32; @@ -28219,9 +28208,9 @@ id = "SST_armory_mech_rover"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST Armory Mech Rover"; - color = "#9999ff" + color = "#9999ff"; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -28229,9 +28218,9 @@ }, /area/syndicate_mothership/elite_squad) "qUe" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОСО"; - req_access_txt = "114" + name = "Кабинет ОСО" }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -28242,7 +28231,7 @@ /obj/machinery/door_control/no_emag/south{ id = "СС_COO_Room"; name = "Blast Door Open"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_herringbone" @@ -28257,7 +28246,7 @@ /area/centcom/ss220/admin2) "qUg" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plating, /area/centcom/ss220/bar) @@ -28373,8 +28362,8 @@ }, /area/syndicate_mothership) "qZh" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Зона Отдыха" }, /turf/simulated/floor/plasteel/dark, @@ -28443,7 +28432,7 @@ /obj/structure/morgue, /obj/machinery/door/window/reinforced/normal{ name = "Морг"; - req_one_access_txt = "101"; + req_access = list(101); dir = 4 }, /obj/structure/window/reinforced, @@ -28607,10 +28596,10 @@ }, /area/centcom/ss220/medbay) "rfM" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -28618,7 +28607,7 @@ id_tag = "syndicate_elite"; name = "Front Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /turf/simulated/floor/plating, @@ -29167,21 +29156,21 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Exterior_2"; name = "Blast Door Open"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Interior_2"; name = "Blast Door Open"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_Interior_2"; @@ -29189,7 +29178,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin1) @@ -29355,7 +29344,7 @@ /obj/item/ammo_box/a357, /obj/item/ammo_box/a357, /obj/structure/closet/secure_closet/personal/cabinet{ - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/wood/parquet/tile, /area/centcom/ss220/admin2) @@ -29445,7 +29434,7 @@ /turf/simulated/floor/wood/oak, /area/syndicate_mothership/control) "rxI" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/gun/advtaser, /obj/item/gun/energy/gun/advtaser{ pixel_x = 2 @@ -29577,7 +29566,7 @@ "rBo" = ( /obj/machinery/door/airlock/centcom{ name = "Дипломатический корпус"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_small" @@ -29634,7 +29623,7 @@ "rDY" = ( /obj/machinery/door/window/reinforced/normal{ name = "Операционная"; - req_one_access_txt = "101"; + req_access = list(101); dir = 4 }, /turf/simulated/floor/plasteel{ @@ -29653,7 +29642,7 @@ color = "#ffbf80"; id = "CC_DeathSquad"; name = "Blast Door Control"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ dir = 4; @@ -29712,14 +29701,14 @@ name = "Blast Door Open"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "СС_BD_Cargo_Exterior_1"; name = "Blast Door Open"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Cargo_Exterior_1"; @@ -29727,7 +29716,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag{ id = "CC_Cargo_Interior_1"; @@ -29735,7 +29724,7 @@ normaldoorcontrol = 1; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark{ dir = 1; @@ -29816,9 +29805,7 @@ /turf/simulated/floor/mineral/plastitanium, /area/syndicate_mothership) "rKF" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/jail) "rLd" = ( @@ -30127,7 +30114,7 @@ "rSX" = ( /obj/machinery/door/airlock/centcom{ name = "Камера"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -30406,7 +30393,7 @@ "san" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал Верховного Командования"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin2) @@ -30448,7 +30435,7 @@ "sca" = ( /obj/machinery/door/airlock/centcom{ name = "Тюрьма"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_10"; @@ -30458,7 +30445,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_10"; name = "Тюрьма"; - req_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/jail) @@ -30863,7 +30850,7 @@ color = "#ffbf80"; id = "CC_Armory_Epsilon"; name = "Оружейная - Уровень 4"; - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ dir = 9; @@ -30996,9 +30983,9 @@ /turf/simulated/floor/wood/oak, /area/syndicate_mothership) "srs" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОЦК"; - req_access_txt = "101" + name = "Кабинет ОЦК" }, /turf/simulated/floor/mineral/plastitanium, /area/centcom/ss220/general) @@ -31060,7 +31047,7 @@ "stR" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 10 @@ -31150,9 +31137,9 @@ /turf/simulated/floor/carpet, /area/centcom/ss220/admin3) "syn" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОСО"; - req_access_txt = "114" + name = "Кабинет ОСО" }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -31163,13 +31150,13 @@ /obj/machinery/door_control/no_emag/south{ id = "СС_COO_Room"; name = "Blast Door Open"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/carpet/black, /area/centcom/ss220/admin2) "syo" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Рабочая Зона" }, /turf/simulated/floor/plasteel, @@ -31451,7 +31438,7 @@ }, /area/syndicate_mothership/jail) "sJw" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/disabler/silencer, /obj/item/gun/energy/disabler/silencer{ pixel_x = 2 @@ -31520,7 +31507,7 @@ /obj/machinery/door/airlock/centcom{ id_tag = "CC_Exterior_2"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "СС_BD_Exterior_2"; @@ -31529,7 +31516,7 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_BD_Exterior_2"; name = "Blast Door Open"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/effect/turf_decal/delivery/white, /turf/simulated/floor/plasteel/dark, @@ -31589,7 +31576,7 @@ /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin1) "sLm" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/pulse, /obj/item/gun/energy/pulse{ pixel_x = 2 @@ -31859,12 +31846,12 @@ /obj/machinery/door_control/no_emag/west{ id = "СС_BD_Exterior_1"; name = "Blast Door Open"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/machinery/door/airlock/centcom{ id_tag = "CC_Exterior_1"; name = "Зона ЦК Карго"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/bar) @@ -32068,7 +32055,7 @@ }, /area/syndicate_mothership) "sZo" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/laser, /obj/item/gun/energy/laser{ pixel_x = 2 @@ -32281,8 +32268,8 @@ name = "Medbay"; wires = 1; specialfunctions = 4; - req_access_txt = "153"; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding, /turf/simulated/floor/plasteel{ @@ -32293,7 +32280,7 @@ "tfv" = ( /obj/machinery/door/airlock/centcom{ name = "ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -32740,7 +32727,7 @@ /obj/machinery/door_control/no_emag{ id = "СС_BD_Shitspawn_Interior_1"; name = "Blast Door Open"; - req_one_access_txt = "114"; + req_access = list(114); pixel_x = 24 }, /obj/machinery/door/poddoor/impassable{ @@ -32749,7 +32736,7 @@ }, /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -32783,7 +32770,7 @@ /obj/machinery/door_control/no_emag{ id = "СС_BD_Shitspawn_Exterior_1"; name = "Blast Door Open"; - req_one_access_txt = "114"; + req_access = list(114); pixel_x = 24 }, /obj/machinery/door/poddoor/impassable{ @@ -32792,7 +32779,7 @@ }, /obj/machinery/door/airlock/centcom{ name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) @@ -32832,9 +32819,9 @@ /turf/simulated/floor/wood/parquet/tile, /area/centcom/ss220/admin2) "tAi" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander, /obj/machinery/door/airlock/centcom{ - name = "Кабинет ОСО"; - req_access_txt = "114" + name = "Кабинет ОСО" }, /obj/machinery/door/poddoor/impassable{ layer = 3.2; @@ -32845,7 +32832,7 @@ /obj/machinery/door_control/no_emag/west{ name = "Blast Door Open"; id = "СС_COO_Briefing_Room"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin2) @@ -33046,8 +33033,8 @@ dir = 4 }, /obj/machinery/door/airlock/hatch/syndicate/vault{ - req_access_txt = "153"; - name = "Vault" + name = "Vault"; + req_access = list(153) }, /turf/simulated/floor/wood/oak, /area/syndicate_mothership/control) @@ -33092,18 +33079,18 @@ /obj/machinery/door_control/no_emag/south{ emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST Armory Basic Weapons"; id = "SST_armory_basic"; - color = "#99ff99" + color = "#99ff99"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -40; id = "SST_armory_advanced"; emagged = 1; wires = 1; - req_access_txt = "153"; - name = "SST_armory_advanced" + name = "SST_armory_advanced"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -32; @@ -33111,9 +33098,9 @@ id = "SST_armory_grenades"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST_armory_grenades"; - color = "#ffdd99" + color = "#ffdd99"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ pixel_y = -32; @@ -33121,9 +33108,9 @@ id = "SST_armory_support"; emagged = 1; wires = 1; - req_access_txt = "153"; name = "SST_armory_support"; - color = "#9999ff" + color = "#9999ff"; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -33224,7 +33211,7 @@ "tKN" = ( /obj/machinery/door/airlock/centcom{ name = "Камера"; - req_one_access_txt = "114" + req_access = list(114) }, /obj/machinery/door/poddoor/shutters{ dir = 8; @@ -33751,7 +33738,7 @@ /turf/simulated/floor/wood/oak, /area/syndicate_mothership/infteam) "ubR" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/energy/pulse/pistol/m1911{ pixel_x = -6 }, @@ -34049,10 +34036,10 @@ }, /area/centcom/ss220/command) "uod" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ name = "Assault Pod"; - aiControlDisabled = 1; - req_access_txt = "150" + aiControlDisabled = 1 }, /obj/docking_port/mobile/assault_pod, /turf/simulated/floor/mineral/plastitanium/red, @@ -34174,11 +34161,11 @@ /turf/simulated/floor/carpet/black, /area/syndicate_mothership/infteam) "urd" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "syndishuttle_door_int"; locked = 1; - name = "Ship External Access"; - req_access_txt = "150" + name = "Ship External Access" }, /obj/structure/fans/tiny/invisible, /turf/simulated/floor/plating, @@ -34691,10 +34678,10 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -30; id = "SIT_outside"; - name = "SIT Outside Doors" + name = "SIT Outside Doors"; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -34811,17 +34798,17 @@ name = "Bolt Cell Doors"; normaldoorcontrol = 1; pixel_y = -32; - req_access_txt = "150"; specialfunctions = 4; - wires = 1 + wires = 1; + req_access = list(150) }, /obj/effect/landmark/spawner/prisonsecuritywarp, /obj/machinery/flasher_button{ id = "syndie_FB_cells"; layer = 4; name = "Prison Flasher"; - req_access_txt = "150"; - pixel_y = -24 + pixel_y = -24; + req_access = list(150) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/jail) @@ -34948,10 +34935,10 @@ }, /area/centcom/ss220/bar) "uRN" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ name = "Assault Pod"; - aiControlDisabled = 1; - req_access_txt = "150" + aiControlDisabled = 1 }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/assault_pod) @@ -34996,7 +34983,7 @@ "uUb" = ( /obj/machinery/door/airlock/titanium/glass{ name = "Emergency Airlock Access"; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel, /area/shuttle/escape) @@ -35072,8 +35059,8 @@ /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) "uWb" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - req_access_txt = "101"; name = "Пункт Отправки" }, /turf/simulated/floor/plasteel/dark, @@ -35413,8 +35400,8 @@ /obj/machinery/door_control/no_emag{ id = "syndieshutters_Aspid"; name = "remote shutter control"; - req_access_txt = "150"; - wires = 1 + wires = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -35493,8 +35480,8 @@ id = "syndFB_lockdown"; name = "Forward Base Bridge Lockdown"; pixel_y = -25; - req_access_txt = "153"; - wires = 1 + wires = 1; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -35545,14 +35532,14 @@ /area/centcom/ss220/supply) "vkS" = ( /obj/machinery/door/airlock/highsecurity{ - req_one_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/wood/fancy/cherry, /area/centcom/ss220/admin2) "vkU" = ( /obj/machinery/door/airlock/centcom{ name = "СРТ"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_9"; @@ -35562,7 +35549,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_9"; name = "СРТ"; - req_access_txt = "109" + req_access = list(109) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin3) @@ -35874,7 +35861,7 @@ /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/evac) "vsJ" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/ar, /obj/item/gun/projectile/automatic/ar{ pixel_x = 2 @@ -35944,7 +35931,7 @@ name = "Защита КПП"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark{ dir = 1; @@ -36127,9 +36114,9 @@ /obj/machinery/door_control/no_emag{ pixel_x = -32; id = "SST_ready"; - req_access_txt = "150"; specialfunctions = 4; - wires = 1 + wires = 1; + req_access = list(150) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -36186,9 +36173,9 @@ name = "Teleporter"; wires = 1; specialfunctions = 4; - req_access_txt = "153"; pixel_y = 32; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding/corner{ dir = 5 @@ -36335,9 +36322,9 @@ id = "syndFB_baseright"; name = "Forward Base Access"; pixel_y = -25; - req_access_txt = "153"; wires = 1; - emagged = 1 + emagged = 1; + req_access = list(153) }, /obj/effect/turf_decal/miscellaneous/goldensiding, /turf/simulated/floor/plasteel{ @@ -36562,7 +36549,7 @@ /obj/machinery/door/airlock/external{ id_tag = "specops_away"; name = "Шаттл ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/structure/fans/tiny, /obj/effect/turf_decal/stripes/line{ @@ -36624,7 +36611,7 @@ /area/syndicate_mothership) "vJZ" = ( /obj/structure/falsewall/reinforced{ - req_one_access_txt = "101" + req_access = list(101) }, /obj/item/restraints/handcuffs/pinkcuffs{ layer = 1 @@ -37168,7 +37155,7 @@ /obj/machinery/door_control/no_emag/south{ name = "Pod Door Control"; id = "ert_shuttle_door"; - req_one_access_txt = "110" + req_access = list(110) }, /turf/simulated/floor/plasteel/dark{ icon_state = "darkbluealtstrip" @@ -37285,10 +37272,10 @@ /area/centcom/ss220/supply) "wgn" = ( /obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_access_txt = "109"; aiControlDisabled = 1 }, /turf/simulated/floor/plating, @@ -37299,9 +37286,9 @@ id = "nukeop_ready"; name = "Mission Launch Control"; pixel_y = 26; - req_access_txt = "151"; specialfunctions = 4; - wires = 1 + wires = 1; + req_access = list(151) }, /turf/simulated/floor/wood/oak, /area/syndicate_mothership) @@ -38063,7 +38050,7 @@ "wAI" = ( /obj/machinery/door/airlock/centcom{ name = "ОБР"; - req_one_access_txt = "109" + req_access = list(109) }, /obj/machinery/door/poddoor/impassable{ name = "Зона Отправки"; @@ -38074,7 +38061,7 @@ /obj/machinery/door_control/no_emag/no_cyborg{ id = "cc_dispatch_zone"; name = "Зона Отправки"; - req_one_access_txt = "114"; + req_access = list(114); pixel_y = 24 }, /obj/effect/turf_decal/delivery/blue, @@ -38149,12 +38136,12 @@ /obj/machinery/door/airlock/centcom{ id_tag = "СС_Interior_2"; name = "Зона ЦК"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door_control/no_emag/west{ id = "СС_BD_Interior_2"; name = "Blast Door Open"; - req_one_access_txt = "104" + req_access = list(104) }, /obj/machinery/door/poddoor/impassable{ id_tag = "СС_BD_Interior_2"; @@ -38191,7 +38178,7 @@ /obj/machinery/door/window/reinforced/normal{ dir = 4; name = "Блокпост"; - req_one_access_txt = "101" + req_access = list(101) }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/admin1) @@ -38746,9 +38733,9 @@ pixel_x = -32; id = "Aspid_poddor_left"; wires = 1; - req_access_txt = "153"; name = "Aspid poddor"; - emagged = 1 + emagged = 1; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -39020,7 +39007,7 @@ "xcl" = ( /obj/machinery/door/airlock/centcom{ name = "Конференц Зал"; - req_one_access_txt = "101" + req_access = list(101) }, /obj/machinery/door/poddoor/impassable{ id_tag = "CC_SOD_5"; @@ -39030,7 +39017,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_5"; name = "Переход в Отдел Специальных Операций"; - req_access_txt = "114" + req_access = list(114) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 5 @@ -39073,30 +39060,30 @@ /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -25; id = "SyndFB_prison_stroll"; name = "Prison Stroll Zone"; normaldoorcontrol = 4; - specialfunctions = 4 + specialfunctions = 4; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -35; pixel_x = -7; name = "Prison Outside Doors"; - id = "SyndFB_prison_outside" + id = "SyndFB_prison_outside"; + req_access = list(153) }, /obj/machinery/door_control/no_emag{ wires = 1; emagged = 1; - req_access_txt = "153"; pixel_y = -35; pixel_x = 7; id = "SyndFB_prison_stroll_blast"; - name = "Prison Stroll Blastdoors" + name = "Prison Stroll Blastdoors"; + req_access = list(153) }, /turf/simulated/floor/carpet/black, /area/syndicate_mothership/control) @@ -39184,7 +39171,7 @@ /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/supply) "xfK" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/sniper_rifle{ pixel_x = -6 }, @@ -39428,9 +39415,9 @@ /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/evac) "xlO" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Бар"; - req_access_txt = "101" + name = "Бар" }, /turf/simulated/floor/plasteel/dark, /area/shuttle/administration) @@ -39490,9 +39477,7 @@ }, /area/centcom/ss220/jail) "xnY" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /obj/structure/window/reinforced{ dir = 1 }, @@ -39516,9 +39501,9 @@ }, /area/centcom/ss220/evac) "xoz" = ( +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general, /obj/machinery/door/airlock/centcom{ - name = "Каюта ОЦК"; - req_access_txt = "101" + name = "Каюта ОЦК" }, /turf/simulated/floor/plasteel/dark, /area/centcom/ss220/general) @@ -39628,7 +39613,7 @@ /obj/structure/light_fake{ dir = 1 }, -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /turf/simulated/floor/wood/oak, /area/syndicate_mothership/control) "xqG" = ( @@ -39684,7 +39669,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Cell Door"; - req_access_txt = "150" + req_access = list(150) }, /turf/simulated/floor/mineral/plastitanium, /area/shuttle/syndicate_sit) @@ -39881,7 +39866,7 @@ /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; - req_one_access_txt = "79" + req_access = list(79) }, /obj/structure/fans/tiny, /obj/docking_port/mobile/supply{ @@ -39999,7 +39984,7 @@ /obj/machinery/door_control/no_emag/east{ id = "CC_GammaShuttle"; name = "Blast Door Control"; - req_one_access_txt = "114"; + req_access = list(114); pixel_x = 0; pixel_y = 24 }, @@ -40127,7 +40112,7 @@ id_tag = "s_docking_airlock"; name = "Шаттл доставки"; opacity = 0; - req_one_access_txt = "106" + req_access = list(106) }, /obj/structure/fans/tiny, /turf/simulated/floor/plasteel/dark, @@ -40224,8 +40209,8 @@ /obj/machinery/access_button{ autolink_id = "syndicate_jail_button_int"; name = "Jail Access Button"; - req_access_txt = "153"; - pixel_x = -25 + pixel_x = -25; + req_access = list(153) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -40253,7 +40238,7 @@ /obj/machinery/door/window/brigdoor{ color = "red"; name = "Arrivals Post"; - req_access_txt = "154"; + req_access = list(154); dir = 4 }, /obj/machinery/airlock_controller/access_controller{ @@ -40679,10 +40664,10 @@ /turf/simulated/wall/mineral/titanium, /area/shuttle/siberia) "xZz" = ( +/obj/effect/mapping_helpers/airlock/access/all/syndicate, /obj/machinery/door/airlock/external{ id_tag = "s_docking_airlock"; - name = "Shuttle Airlock"; - req_access_txt = "150" + name = "Shuttle Airlock" }, /obj/machinery/door/poddoor{ density = 0; @@ -40690,7 +40675,7 @@ id_tag = "syndicate_elite"; name = "Side Hull Door"; opacity = 0; - req_access_txt = "150" + req_access = list(150) }, /obj/structure/fans/tiny, /obj/docking_port/mobile{ @@ -40729,7 +40714,7 @@ /obj/machinery/door_control/no_emag/north{ id = "CC_SOD_7"; name = "Переход в Отдел Специальных Операций"; - req_access_txt = "114" + req_access = list(114) }, /turf/simulated/floor/plasteel/dark{ icon_state = "dark_large" diff --git a/_maps/map_files220/generic/centcomm_test.dmm b/_maps/map_files220/generic/centcomm_test.dmm new file mode 100644 index 000000000000..bf0b4d91a090 --- /dev/null +++ b/_maps/map_files220/generic/centcomm_test.dmm @@ -0,0 +1,69097 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/structure/chair/comfy/beige{ + dir = 8; + layer = 5; + pixel_y = -2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"ah" = ( +/obj/structure/fans/tiny/invisible, +/turf/simulated/floor/wood/oak, +/area/admin) +"ao" = ( +/obj/structure/light_fake/spot, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/supply) +"aw" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/immolator/multi, +/turf/simulated/floor/wood/oak, +/area/admin) +"ax" = ( +/obj/structure/table, +/obj/item/kitchen/utensil/fork, +/obj/item/lighter, +/obj/item/restraints/handcuffs/cable/red, +/obj/item/storage/box/mousetraps, +/obj/item/storage/fancy/cigarettes, +/obj/item/pen, +/turf/simulated/floor/wood/oak, +/area/admin) +"aG" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "green" + }, +/area/holodeck/source_basketball) +"aH" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "red" + }, +/area/holodeck/source_basketball) +"aQ" = ( +/obj/item/clothing/under/color/rainbow, +/obj/item/clothing/glasses/sunglasses_fake, +/turf/simulated/floor/holofloor{ + icon = 'icons/misc/beach.dmi'; + icon_state = "desert" + }, +/area/holodeck/source_beach) +"bq" = ( +/obj/structure/chair/stool/holostool{ + dir = 1 + }, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_meetinghall) +"by" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/pistol/enforcer/lethal, +/turf/simulated/floor/wood/oak, +/area/admin) +"bz" = ( +/obj/effect/turf_decal/delivery/blue, +/turf/simulated/wall/indestructible, +/area/admin) +"bI" = ( +/obj/structure/table, +/obj/item/storage/box/syringes, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/grenade/chem_grenade/large, +/obj/item/grenade/chem_grenade/large, +/obj/item/grenade/chem_grenade/large, +/obj/item/grenade/chem_grenade/large, +/turf/simulated/floor/wood/oak, +/area/admin) +"bJ" = ( +/obj/structure/light_fake/spot{ + dir = 8 + }, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/supply) +"bL" = ( +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"bM" = ( +/obj/machinery/door/airlock/highsecurity, +/obj/structure/fans/tiny/invisible, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/adminconstruction) +"ca" = ( +/obj/machinery/computer/teleporter, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"cb" = ( +/obj/effect/landmark/newplayer_start, +/turf/simulated/wall/indestructible/splashscreen, +/area/start) +"cz" = ( +/obj/structure/table/wood, +/obj/item/gun/medbeam, +/turf/simulated/floor/wood/oak, +/area/admin) +"cB" = ( +/obj/item/bedsheet/black, +/obj/structure/bed, +/obj/structure/light_fake/small, +/turf/simulated/floor/wood/oak, +/area/admin) +"cN" = ( +/obj/structure/light_fake/spot{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bot" + }, +/area/shuttle/escape) +"cP" = ( +/obj/structure/table/wood, +/obj/item/fireaxe/energized, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"cQ" = ( +/obj/structure/table/wood, +/obj/item/clothing/head/helmet/space/space_ninja, +/obj/item/clothing/shoes/space_ninja, +/obj/item/clothing/mask/gas/space_ninja, +/obj/item/clothing/gloves/space_ninja, +/obj/item/clothing/suit/space/space_ninja, +/obj/item/katana/energy, +/turf/simulated/floor/wood/oak, +/area/admin) +"cT" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/shuttle/escape) +"cV" = ( +/turf/simulated/floor/holofloor{ + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid7" + }, +/area/holodeck/source_desert) +"cY" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid8" + }, +/area/holodeck/source_desert) +"dk" = ( +/obj/structure/table/wood, +/obj/item/bostaff, +/turf/simulated/floor/wood/oak, +/area/admin) +"dn" = ( +/obj/structure/table/wood, +/obj/item/pizzabox/pizza_bomb, +/turf/simulated/floor/wood/oak, +/area/admin) +"do" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/tag/blue, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"dw" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/immolator, +/turf/simulated/floor/wood/oak, +/area/admin) +"dx" = ( +/turf/simulated/wall/mineral/titanium, +/area/shuttle/escape) +"dA" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/lasercannon, +/turf/simulated/floor/wood/oak, +/area/admin) +"dB" = ( +/obj/structure/rack/holorack, +/obj/item/clothing/under/dress/dress_saloon, +/obj/item/clothing/head/hairflower, +/turf/simulated/floor/holofloor{ + icon_state = "cult" + }, +/area/holodeck/source_theatre) +"dN" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/full/shuttle, +/turf/simulated/floor/grass/no_creep, +/area/shuttle/escape) +"dP" = ( +/obj/machinery/computer/station_alert{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkyellow" + }, +/area/shuttle/escape) +"dX" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "wood" + }, +/area/holodeck/source_theatre) +"dZ" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/obj/item/ammo_box/magazine/sniper_rounds/penetrator, +/turf/simulated/floor/wood/oak, +/area/admin) +"ea" = ( +/obj/structure/table/wood/poker, +/obj/machinery/door_control/shutter{ + id = "eventroom"; + name = "Ready room"; + pixel_x = -6; + pixel_y = 6; + req_access = list(150) + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"el" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/shuttle/escape) +"em" = ( +/obj/effect/landmark/spawner/atmos_test, +/turf/simulated/floor/holofloor{ + icon_state = "engine"; + name = "Burn-Mix Floor"; + nitrogen = 0; + oxygen = 2500; + temperature = 370; + toxins = 5000 + }, +/area/holodeck/source_burntest) +"ep" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "green" + }, +/area/holodeck/source_emptycourt) +"er" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/wand/teleport, +/turf/simulated/floor/wood/oak, +/area/admin) +"ew" = ( +/obj/structure/holowindow, +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "red" + }, +/area/holodeck/source_knightarena) +"ez" = ( +/obj/effect/spawner/window/shuttle, +/turf/simulated/floor/plating, +/area/shuttle/escape) +"eD" = ( +/obj/structure/table, +/obj/item/tank/internals/oxygen/yellow, +/obj/random/bomb_supply, +/obj/item/clothing/head/sombrero/shamebrero, +/turf/simulated/floor/wood/oak, +/area/admin) +"eK" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/tag/red, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"eL" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/boltaction, +/obj/item/gun/projectile/shotgun/boltaction/enchanted, +/turf/simulated/floor/wood/oak, +/area/admin) +"eR" = ( +/obj/structure/light_fake/spot{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutral" + }, +/area/shuttle/escape) +"eY" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/proto, +/turf/simulated/floor/wood/oak, +/area/admin) +"fb" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "green" + }, +/area/holodeck/source_boxingcourt) +"fc" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/boltaction/enchanted/arcane_barrage, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"fg" = ( +/obj/structure/table/wood, +/obj/item/dualsaber/toy, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"fi" = ( +/turf/simulated/floor/holofloor{ + icon_state = "greenfull" + }, +/area/holodeck/source_emptycourt) +"fm" = ( +/obj/effect/landmark/costume/random, +/obj/structure/rack/holorack, +/turf/simulated/floor/holofloor{ + icon_state = "cult" + }, +/area/holodeck/source_theatre) +"fn" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/hook, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"fF" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/wand, +/turf/simulated/floor/wood/oak, +/area/admin) +"fG" = ( +/turf/simulated/wall/indestructible/fakeglass, +/area/adminconstruction) +"fO" = ( +/obj/effect/baseturf_helper{ + baseturf = /turf/simulated/floor/plasteel + }, +/turf/simulated/wall/indestructible, +/area/adminconstruction) +"gc" = ( +/obj/structure/table, +/obj/item/stack/cable_coil, +/obj/item/stack/rods, +/obj/item/pen, +/turf/simulated/floor/wood/oak, +/area/admin) +"gd" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/grenadelauncher/multi/cyborg, +/turf/simulated/floor/wood/oak, +/area/admin) +"gk" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/wand/door, +/turf/simulated/floor/wood/oak, +/area/admin) +"gq" = ( +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/shuttle/escape) +"gE" = ( +/obj/structure/table/wood, +/obj/item/whetstone/super, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"gN" = ( +/obj/structure/flora/grass/brown, +/turf/simulated/floor/holofloor{ + icon_state = "snow" + }, +/area/holodeck/source_snowfield) +"gR" = ( +/obj/structure/table/wood, +/obj/item/paper{ + info = "/obj/item/gun/projectile/shotgun/sc_pump" + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"gS" = ( +/obj/structure/table/wood, +/obj/item/encryptionkey/headset_cargo, +/obj/item/encryptionkey/headset_com, +/obj/item/encryptionkey/headset_eng, +/obj/item/encryptionkey/headset_iaa, +/obj/item/encryptionkey/headset_med, +/obj/item/encryptionkey/headset_medsci, +/obj/item/encryptionkey/headset_rob, +/obj/item/encryptionkey/headset_sci, +/obj/item/encryptionkey/headset_sec, +/obj/item/encryptionkey/headset_service, +/turf/simulated/floor/wood/oak, +/area/admin) +"hd" = ( +/obj/structure/table/holotable, +/obj/item/clothing/suit/armor/riot/knight/blue, +/obj/item/clothing/head/helmet/riot/knight/blue, +/obj/item/holo/claymore/blue, +/turf/simulated/floor/holofloor{ + icon_state = "blue" + }, +/area/holodeck/source_knightarena) +"hh" = ( +/obj/mecha/combat/marauder/mauler/loaded{ + operation_req_access = list(114) + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"hi" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/ar, +/turf/simulated/floor/wood/oak, +/area/admin) +"ho" = ( +/obj/structure/table/wood, +/obj/item/paper{ + info = "/obj/item/gun/energy/noisecannon" + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"hp" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/holofloor/grass, +/area/holodeck/source_picnicarea) +"hw" = ( +/obj/effect/overlay/palmtree_r, +/turf/simulated/floor/holofloor{ + icon = 'icons/misc/beach.dmi'; + icon_state = "desert" + }, +/area/holodeck/source_beach) +"hA" = ( +/obj/structure/table/holotable, +/obj/item/clothing/gloves/boxing/hologlove, +/turf/simulated/floor/holofloor{ + dir = 5; + icon_state = "red" + }, +/area/holodeck/source_boxingcourt) +"hB" = ( +/obj/structure/holowindow{ + dir = 1 + }, +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "blue" + }, +/area/holodeck/source_knightarena) +"hE" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/staff/slipping/honkmother, +/turf/simulated/floor/wood/oak, +/area/admin) +"hI" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/shuttle/escape) +"hN" = ( +/turf/simulated/floor/holofloor{ + icon_state = "rampbottom" + }, +/area/holodeck/source_theatre) +"hV" = ( +/obj/mecha/combat/gygax/dark/loaded{ + operation_req_access = list(114) + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"hZ" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/c20r/toy, +/turf/simulated/floor/wood/oak, +/area/admin) +"ib" = ( +/obj/structure/table/wood, +/obj/item/toy/russian_revolver, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"ii" = ( +/obj/structure/light_fake/spot{ + dir = 1 + }, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/supply) +"im" = ( +/obj/structure/table/wood, +/obj/item/toy/katana, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"io" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/riot, +/turf/simulated/floor/wood/oak, +/area/admin) +"iM" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/pulse/pistol, +/turf/simulated/floor/wood/oak, +/area/admin) +"iP" = ( +/obj/structure/light_fake/spot{ + dir = 1 + }, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"iY" = ( +/obj/structure/light_fake/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"jj" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/obj/machinery/ai_status_display{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"jl" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/grenadelauncher, +/turf/simulated/floor/wood/oak, +/area/admin) +"jm" = ( +/obj/structure/table/wood, +/obj/item/paper{ + info = "Тут должен был быть доминатор, но к счастью его тут нет."; + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/paper{ + info = "Тут должен был быть доминатор, но к счастью его тут нет."; + pixel_x = -6; + pixel_y = 4 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"jq" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/simulated/floor/wood/oak, +/area/admin) +"jB" = ( +/obj/structure/table/wood, +/obj/item/nullrod/tribal_knife, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"jD" = ( +/obj/structure/table/wood, +/obj/item/fireaxe/boneaxe, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"jF" = ( +/obj/effect/landmark/spawner/holocarp, +/turf/simulated/floor/holofloor{ + icon_state = "engine"; + name = "Holodeck Projector Floor" + }, +/area/holodeck/source_wildlife) +"jH" = ( +/turf/simulated/floor/holofloor{ + dir = 10; + icon_state = "red" + }, +/area/holodeck/source_basketball) +"jK" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/reclinable/anaconda, +/obj/item/gun/projectile/revolver/reclinable/rsh12{ + pixel_y = -12 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"jM" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/staff/change, +/turf/simulated/floor/wood/oak, +/area/admin) +"jQ" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/shuttle/escape) +"jY" = ( +/obj/structure/table/holotable, +/obj/item/clothing/gloves/boxing/hologlove, +/turf/simulated/floor/holofloor{ + dir = 9; + icon_state = "red" + }, +/area/holodeck/source_boxingcourt) +"jZ" = ( +/obj/item/bedsheet/black, +/obj/structure/bed, +/turf/simulated/floor/wood/oak, +/area/admin) +"kb" = ( +/obj/machinery/door/airlock/external{ + id_tag = "s_docking_airlock" + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plasteel, +/area/shuttle/escape) +"kf" = ( +/obj/structure/table/holotable, +/obj/machinery/readybutton, +/turf/simulated/floor/holofloor{ + dir = 6; + icon_state = "green" + }, +/area/holodeck/source_thunderdomecourt) +"ki" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/floragun, +/turf/simulated/floor/wood/oak, +/area/admin) +"ko" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/wand/resurrection, +/turf/simulated/floor/wood/oak, +/area/admin) +"kq" = ( +/obj/structure/table/wood, +/obj/item/butcher_chainsaw, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"kH" = ( +/turf/space, +/area/space/centcomm) +"kM" = ( +/obj/structure/table/wood, +/obj/item/hatchet/unathiknife, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"kQ" = ( +/obj/structure/table, +/obj/item/food/grown/citrus/lemon, +/obj/item/food/grown/berries, +/obj/item/food/grown/banana, +/obj/item/food/grown/cherries, +/obj/item/food/grown/citrus/orange, +/obj/item/food/grown/corn, +/obj/item/food/grown/mushroom/amanita, +/turf/simulated/floor/wood/oak, +/area/admin) +"kT" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/envy, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"kU" = ( +/obj/structure/table/wood, +/obj/item/grenade/clusterbuster/syndieminibomb, +/turf/simulated/floor/wood/oak, +/area/admin) +"kY" = ( +/turf/simulated/floor/holofloor{ + dir = 1; + icon_state = "green" + }, +/area/holodeck/source_basketball) +"lc" = ( +/obj/structure/holowindow{ + dir = 1 + }, +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "blue" + }, +/area/holodeck/source_knightarena) +"ld" = ( +/obj/structure/table/holotable/wood, +/turf/simulated/floor/holofloor{ + icon_state = "asteroid" + }, +/area/holodeck/source_picnicarea) +"li" = ( +/obj/structure/holowindow{ + dir = 1 + }, +/turf/simulated/floor/holofloor{ + icon_state = "greenfull" + }, +/area/holodeck/source_thunderdomecourt) +"lt" = ( +/obj/structure/light_fake/small{ + dir = 4 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"lA" = ( +/obj/item/storage/toolbox/syndicate{ + desc = "A powerful relic many men worked long and hard to keep safe and away from the forces of evil."; + force = 1e+008; + name = "toolbox of robustness" + }, +/obj/structure/table/wood, +/turf/simulated/floor/wood/oak, +/area/admin) +"lC" = ( +/obj/machinery/door/airlock/external{ + id_tag = "s_docking_airlock"; + name = "Shuttle Hatch"; + req_access = list(79) + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plating, +/area/shuttle/supply) +"lE" = ( +/obj/structure/light_fake/small{ + dir = 8 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"lG" = ( +/turf/simulated/wall/indestructible/riveted, +/area/start) +"lR" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/pistol/deagle, +/turf/simulated/floor/wood/oak, +/area/admin) +"lX" = ( +/obj/machinery/teleport/station, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"mk" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/foambox/riot, +/obj/item/ammo_box/foambox/riot, +/obj/item/ammo_box/foambox/riot, +/obj/item/ammo_box/foambox/riot, +/obj/item/ammo_box/foambox/riot, +/obj/item/ammo_box/foambox/riot, +/obj/item/ammo_box/foambox/riot, +/obj/item/ammo_box/foambox/riot, +/obj/item/ammo_box/foambox/riot, +/obj/item/ammo_box/foambox/riot, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"mn" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/nagant, +/turf/simulated/floor/wood/oak, +/area/admin) +"mw" = ( +/obj/structure/table/holotable, +/obj/item/clothing/head/helmet/thunderdome, +/obj/item/clothing/suit/armor/tdome/red, +/obj/item/clothing/under/color/red, +/obj/item/holo/esword/red, +/turf/simulated/floor/holofloor{ + dir = 1; + icon_state = "red" + }, +/area/holodeck/source_thunderdomecourt) +"mB" = ( +/obj/item/gun/rocketlauncher, +/obj/structure/table/wood, +/turf/simulated/floor/wood/oak, +/area/admin) +"mC" = ( +/turf/simulated/floor/plasteel{ + icon_state = "bot" + }, +/area/shuttle/escape) +"mH" = ( +/obj/structure/light_fake/spot{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bot" + }, +/area/shuttle/escape) +"mM" = ( +/obj/structure/rack, +/obj/item/clothing/suit/space/hardsuit/syndi, +/obj/item/clothing/suit/space/hardsuit/syndi/elite{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"mR" = ( +/obj/structure/table/wood, +/obj/item/multisword, +/obj/item/multisword/pike, +/obj/item/multisword/pure_evil, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"mU" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/mateba, +/turf/simulated/floor/wood/oak, +/area/admin) +"mX" = ( +/turf/simulated/floor/holofloor{ + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid" + }, +/area/holodeck/source_desert) +"mY" = ( +/turf/simulated/floor/holofloor{ + dir = 9; + icon_state = "red" + }, +/area/holodeck/source_basketball) +"na" = ( +/obj/structure/table/wood, +/obj/item/melee/energy/sword, +/obj/item/melee/energy/sword/cyborg, +/obj/item/melee/energy/sword/cyborg/saw, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"ne" = ( +/obj/structure/table/wood/poker, +/obj/item/clothing/shoes/roman, +/obj/item/shield/riot/roman, +/obj/item/clothing/head/helmet/roman/legionaire, +/obj/item/spear/bonespear, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"nk" = ( +/turf/simulated/floor/holofloor{ + icon_state = "grimy" + }, +/area/holodeck/source_meetinghall) +"nC" = ( +/turf/simulated/floor/holofloor{ + dir = 5; + icon_state = "green" + }, +/area/holodeck/source_basketball) +"nK" = ( +/obj/structure/table/wood, +/obj/item/abductor_baton, +/obj/item/abductor/silencer, +/obj/item/abductor/mind_device, +/obj/item/abductor/gizmo, +/obj/structure/ninjatele{ + pixel_x = -28 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"nM" = ( +/obj/structure/table/holotable, +/turf/simulated/floor/holofloor{ + dir = 5; + icon_state = "red" + }, +/area/holodeck/source_thunderdomecourt) +"nN" = ( +/obj/structure/table, +/obj/item/storage/box/beakers, +/obj/item/reagent_containers/glass/beaker/bluespace, +/obj/item/reagent_containers/glass/beaker/bluespace, +/obj/item/reagent_containers/glass/beaker/bluespace, +/obj/item/reagent_containers/glass/beaker/bluespace, +/turf/simulated/floor/wood/oak, +/area/admin) +"nU" = ( +/obj/structure/table/wood, +/obj/item/paper{ + info = "/obj/item/gun/projectile/shotgun/riot/buckshot" + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"nX" = ( +/obj/structure/table/wood, +/obj/item/paper{ + info = "Какой-то /obj/item/gun/energy/laser/retro/sc_retro. Хз что это." + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"nZ" = ( +/turf/simulated/floor/holofloor{ + dir = 1; + icon_state = "red" + }, +/area/holodeck/source_boxingcourt) +"oc" = ( +/obj/item/paper_bin/nanotrasen, +/obj/structure/table/wood/poker, +/obj/item/pen/multi/gold, +/obj/item/stamp/chameleon, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"og" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/detective, +/turf/simulated/floor/wood/oak, +/area/admin) +"oh" = ( +/obj/structure/table/wood, +/obj/item/dnainjector/blindmut, +/obj/item/dnainjector/clumsymut, +/obj/item/dnainjector/comic, +/obj/item/dnainjector/coughmut, +/obj/item/dnainjector/deafmut, +/obj/item/dnainjector/epimut, +/obj/item/dnainjector/firemut, +/obj/item/dnainjector/glassesmut, +/obj/item/dnainjector/h2m, +/obj/item/dnainjector/hallucination, +/obj/item/dnainjector/hulkmut, +/obj/item/dnainjector/insulation, +/obj/item/dnainjector/m2h, +/obj/item/dnainjector/small_size, +/obj/item/dnainjector/morph, +/obj/item/dnainjector/nobreath, +/obj/item/dnainjector/noprints, +/obj/item/dnainjector/regenerate, +/obj/item/dnainjector/remoteview, +/obj/item/dnainjector/stuttmut, +/obj/item/dnainjector/telemut, +/obj/item/dnainjector/tourmut, +/turf/simulated/floor/wood/oak, +/area/admin) +"oj" = ( +/obj/structure/holowindow{ + dir = 1 + }, +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "green" + }, +/area/holodeck/source_thunderdomecourt) +"ou" = ( +/obj/machinery/computer/account_database{ + name = "Admin Accounts Database"; + dir = 8 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"ov" = ( +/obj/structure/light_fake/spot{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "cmo" + }, +/area/shuttle/escape) +"oB" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/sniper_rifle/toy, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"oL" = ( +/obj/machinery/chem_heater, +/turf/simulated/floor/wood/oak, +/area/admin) +"oX" = ( +/obj/structure/table/wood, +/obj/item/gun/syringe/rapidsyringe, +/turf/simulated/floor/wood/oak, +/area/admin) +"pa" = ( +/turf/simulated/floor/holofloor{ + dir = 5; + icon_state = "red" + }, +/area/holodeck/source_basketball) +"pk" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/doublebarrel/improvised, +/turf/simulated/floor/wood/oak, +/area/admin) +"pC" = ( +/obj/structure/table/wood, +/obj/machinery/syndicatebomb/badmin, +/turf/simulated/floor/wood/oak, +/area/admin) +"pE" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/plasma_pistol, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"pJ" = ( +/obj/structure/table/wood, +/obj/item/toy/russian_revolver/trick_revolver, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"pN" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 2; + id_tag = "eventroom"; + name = "Privacy Shutters" + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"pO" = ( +/turf/simulated/wall/indestructible/riveted, +/area/space/centcomm) +"qd" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/xray, +/turf/simulated/floor/wood/oak, +/area/admin) +"qh" = ( +/obj/structure/table, +/obj/random/toolbox, +/obj/random/bomb_supply, +/obj/machinery/syndicatebomb/badmin/clown, +/turf/simulated/floor/wood/oak, +/area/admin) +"qt" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/golden, +/turf/simulated/floor/wood/oak, +/area/admin) +"qv" = ( +/obj/structure/holowindow, +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "red" + }, +/area/holodeck/source_thunderdomecourt) +"qx" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/foambox/sniper, +/obj/item/ammo_box/foambox/sniper, +/obj/item/ammo_box/foambox/sniper, +/obj/item/ammo_box/foambox/sniper, +/obj/item/ammo_box/foambox/sniper, +/obj/item/ammo_box/foambox/sniper, +/obj/item/ammo_box/foambox/sniper, +/obj/item/ammo_box/foambox/sniper, +/obj/item/ammo_box/foambox/sniper, +/obj/item/ammo_box/foambox/sniper, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"qR" = ( +/obj/structure/table/wood, +/obj/item/gun/throw/piecannon, +/obj/item/paper{ + info = "Если тут ничего не видно, значит никто до сих пор не вернул спрайт пирожной пушке." + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"qT" = ( +/obj/structure/holohoop{ + dir = 1 + }, +/turf/simulated/floor/holofloor{ + icon_state = "green" + }, +/area/holodeck/source_basketball) +"qU" = ( +/obj/structure/table/wood/poker, +/obj/item/storage/box/ids, +/obj/item/storage/box/ids, +/obj/item/storage/box/PDAs{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/PDAs{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"ri" = ( +/obj/structure/table/holotable, +/obj/item/clothing/gloves/boxing/hologlove{ + icon_state = "boxinggreen"; + item_state = "boxinggreen" + }, +/turf/simulated/floor/holofloor{ + dir = 10; + icon_state = "green" + }, +/area/holodeck/source_boxingcourt) +"ro" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/ionrifle, +/turf/simulated/floor/wood/oak, +/area/admin) +"rq" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "green" + }, +/area/holodeck/source_basketball) +"rr" = ( +/obj/structure/table/wood, +/obj/item/melee/energy/axe, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"rv" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "red" + }, +/area/holodeck/source_boxingcourt) +"rD" = ( +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/supply) +"rE" = ( +/obj/item/beach_ball/holoball, +/turf/simulated/floor/holofloor{ + icon_state = "greenfull" + }, +/area/holodeck/source_basketball) +"rG" = ( +/obj/mecha/combat/marauder/seraph/loaded, +/turf/simulated/floor/wood/oak, +/area/admin) +"rM" = ( +/obj/structure/table/holotable, +/turf/simulated/floor/holofloor{ + dir = 10; + icon_state = "green" + }, +/area/holodeck/source_thunderdomecourt) +"rP" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/alien, +/turf/simulated/floor/wood/oak, +/area/admin) +"rR" = ( +/turf/simulated/wall/r_wall, +/area/start) +"sd" = ( +/obj/structure/holowindow{ + dir = 1 + }, +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "green" + }, +/area/holodeck/source_thunderdomecourt) +"sm" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/retro, +/turf/simulated/floor/wood/oak, +/area/admin) +"sr" = ( +/turf/simulated/floor/holofloor{ + dir = 1; + icon_state = "red" + }, +/area/holodeck/source_emptycourt) +"su" = ( +/obj/item/gun/grenadelauncher, +/obj/structure/table/wood, +/turf/simulated/floor/wood/oak, +/area/admin) +"sA" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/kinetic_accelerator, +/turf/simulated/floor/wood/oak, +/area/admin) +"sO" = ( +/obj/structure/holowindow, +/turf/simulated/floor/holofloor{ + icon_state = "asteroid7" + }, +/area/holodeck/source_knightarena) +"ta" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/toy, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"tc" = ( +/obj/structure/holowindow, +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "red" + }, +/area/holodeck/source_knightarena) +"th" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "browncorner" + }, +/area/shuttle/escape) +"to" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/combat/survival, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"tx" = ( +/obj/machinery/computer/syndicate_depot/teleporter{ + name = "Redspace Teleporter Console" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"tF" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/kinetic_accelerator/crossbow/large, +/turf/simulated/floor/wood/oak, +/area/admin) +"tI" = ( +/obj/item/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"tN" = ( +/obj/machinery/computer/communications, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"tP" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "green" + }, +/area/holodeck/source_thunderdomecourt) +"tS" = ( +/obj/structure/chair/stool/holostool{ + dir = 4 + }, +/turf/simulated/floor/holofloor{ + icon_state = "asteroid" + }, +/area/holodeck/source_picnicarea) +"ua" = ( +/obj/machinery/teleport/hub/upgraded{ + admin_usage = 1 + }, +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"ug" = ( +/obj/machinery/computer/security{ + dir = 4; + network = list("SS13","Telecomms","Research Outpost","Mining Outpost") + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/shuttle/escape) +"ux" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/captain, +/turf/simulated/floor/wood/oak, +/area/admin) +"uL" = ( +/obj/structure/table/wood, +/obj/item/gun/energy, +/obj/item/gun/energy/laser/captain, +/obj/item/gun/energy/e_gun, +/obj/item/gun/energy/gun, +/obj/item/gun/energy/gun/cyborg, +/obj/item/gun/energy/gun/nuclear, +/turf/simulated/floor/wood/oak, +/area/admin) +"uS" = ( +/obj/structure/light_fake/spot{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/shuttle/escape) +"uW" = ( +/obj/machinery/door/airlock/hatch/syndicate{ + name = "What?" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"vb" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/e_gun/old, +/turf/simulated/floor/wood/oak, +/area/admin) +"vc" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/gun/turret, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"vd" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/obj/machinery/ai_status_display{ + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"ve" = ( +/obj/structure/table/wood, +/obj/item/toy/sword, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"vg" = ( +/obj/structure/table/wood, +/obj/item/suppressor, +/obj/item/suppressor, +/obj/item/suppressor, +/obj/item/suppressor, +/obj/item/suppressor, +/obj/item/suppressor, +/obj/item/suppressor, +/obj/item/suppressor, +/obj/item/suppressor, +/turf/simulated/floor/wood/oak, +/area/admin) +"vm" = ( +/obj/effect/overlay/palmtree_l, +/obj/effect/overlay/coconut, +/turf/simulated/floor/holofloor{ + icon = 'icons/misc/beach.dmi'; + icon_state = "desert" + }, +/area/holodeck/source_beach) +"vu" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/toy, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"vv" = ( +/obj/item/beach_ball, +/turf/simulated/floor/holofloor{ + icon = 'icons/misc/beach.dmi'; + icon_state = "desert" + }, +/area/holodeck/source_beach) +"vM" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/shuttle/escape) +"vS" = ( +/obj/structure/light_fake/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"vU" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/plastic, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"vY" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/butcher/meatcleaver, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"wd" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/toy/pistol/enforcer, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"we" = ( +/obj/structure/table/wood, +/obj/machinery/syndicatebomb/emp, +/turf/simulated/floor/wood/oak, +/area/admin) +"wf" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/clown, +/obj/item/gun/energy/disabler, +/obj/item/gun/energy/disabler/cyborg, +/obj/item/gun/energy/mimicgun, +/turf/simulated/floor/wood/oak, +/area/admin) +"wh" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/captain/scattershot, +/turf/simulated/floor/wood/oak, +/area/admin) +"wp" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/gun/mini, +/turf/simulated/floor/wood/oak, +/area/admin) +"wC" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "red" + }, +/area/holodeck/source_knightarena) +"wE" = ( +/obj/structure/flora/grass/both, +/turf/simulated/floor/holofloor{ + icon_state = "snow" + }, +/area/holodeck/source_snowfield) +"wJ" = ( +/obj/structure/light_fake/spot{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/shuttle/escape) +"wM" = ( +/obj/effect/turf_decal/delivery/hollow, +/turf/simulated/floor/plasteel{ + icon_state = "bot" + }, +/area/shuttle/escape) +"xe" = ( +/obj/structure/table/wood, +/obj/item/dnainjector/antiblind, +/obj/item/dnainjector/anticlumsy, +/obj/item/dnainjector/anticomic, +/obj/item/dnainjector/anticough, +/obj/item/dnainjector/antideaf, +/obj/item/dnainjector/antiepi, +/obj/item/dnainjector/antifire, +/obj/item/dnainjector/antiglasses, +/obj/item/dnainjector/antihallucination, +/obj/item/dnainjector/antihulk, +/obj/item/dnainjector/antiinsulation, +/obj/item/dnainjector/anti_small_size, +/obj/item/dnainjector/antimorph, +/obj/item/dnainjector/antinobreath, +/obj/item/dnainjector/antinoprints, +/obj/item/dnainjector/antiregenerate, +/obj/item/dnainjector/antiremoteview, +/obj/item/dnainjector/antistutt, +/obj/item/dnainjector/antitele, +/obj/item/dnainjector/antitour, +/turf/simulated/floor/wood/oak, +/area/admin) +"xh" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/combat, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"xq" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/c20r, +/turf/simulated/floor/wood/oak, +/area/admin) +"xy" = ( +/obj/structure/table/wood, +/obj/item/toy/foamblade, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"xA" = ( +/turf/simulated/floor/holofloor{ + dir = 6; + icon_state = "red" + }, +/area/holodeck/source_basketball) +"xI" = ( +/obj/item/mecha_parts/mecha_equipment/cable_layer, +/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill, +/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp, +/obj/item/mecha_parts/mecha_equipment/rcd, +/obj/item/mecha_parts/mecha_equipment/extinguisher, +/obj/structure/closet/crate, +/turf/simulated/floor/wood/oak, +/area/admin) +"xJ" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "red" + }, +/area/holodeck/source_emptycourt) +"xK" = ( +/obj/machinery/bodyscanner{ + dir = 4 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"xN" = ( +/obj/structure/table/wood, +/obj/machinery/syndicatebomb, +/obj/machinery/syndicatebomb/training, +/turf/simulated/floor/wood/oak, +/area/admin) +"xS" = ( +/turf/simulated/floor/holofloor{ + dir = 1; + icon_state = "red" + }, +/area/holodeck/source_basketball) +"xY" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/pulse, +/turf/simulated/floor/wood/oak, +/area/admin) +"yj" = ( +/obj/structure/table/holotable, +/obj/machinery/readybutton, +/turf/simulated/floor/holofloor{ + dir = 9; + icon_state = "red" + }, +/area/holodeck/source_thunderdomecourt) +"yp" = ( +/turf/simulated/wall/indestructible, +/area/adminconstruction) +"yq" = ( +/turf/simulated/floor/holofloor{ + dir = 9; + icon_state = "red" + }, +/area/holodeck/source_emptycourt) +"yC" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/staff/slipping, +/turf/simulated/floor/wood/oak, +/area/admin) +"yE" = ( +/obj/machinery/economy/vending/nta/admin, +/turf/simulated/floor/wood/oak, +/area/admin) +"yH" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/gun/nuclear, +/turf/simulated/floor/wood/oak, +/area/admin) +"yI" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser/cyborg, +/obj/item/gun/energy/laser/practice, +/obj/item/gun/energy/laser/scatter, +/obj/item/gun/energy/laser/tag, +/turf/simulated/floor/wood/oak, +/area/admin) +"yM" = ( +/obj/structure/table/wood, +/obj/item/grenade/smokebomb, +/turf/simulated/floor/wood/oak, +/area/admin) +"yN" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/holofloor{ + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid" + }, +/area/holodeck/source_desert) +"yX" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/pulse/destroyer, +/turf/simulated/floor/wood/oak, +/area/admin) +"yY" = ( +/obj/docking_port/mobile/emergency{ + dwidth = 11; + height = 18; + width = 29 + }, +/obj/machinery/door/airlock/titanium{ + aiControlDisabled = 1; + hackProof = 1; + id_tag = "s_docking_airlock"; + name = "Shuttle Hatch" + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 16; + height = 21; + id = "emergency_away"; + name = "emergency centcom"; + width = 41 + }, +/turf/simulated/floor/plating, +/area/shuttle/escape) +"za" = ( +/turf/simulated/floor/plasteel{ + icon_state = "browncorner" + }, +/area/shuttle/escape) +"zj" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/boltaction/enchanted/arcane_barrage/blood, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"zs" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/instakill/red, +/turf/simulated/floor/wood/oak, +/area/admin) +"zw" = ( +/obj/structure/table/wood, +/obj/item/adminfu_scroll, +/turf/simulated/floor/wood/oak, +/area/admin) +"zA" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/automatic/combat, +/turf/simulated/floor/wood/oak, +/area/admin) +"zP" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/kinetic_accelerator/minebot, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"zT" = ( +/obj/structure/dresser, +/turf/simulated/floor/wood/oak, +/area/admin) +"Ag" = ( +/obj/structure/light_fake/spot{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bot" + }, +/area/shuttle/escape) +"Ah" = ( +/obj/effect/baseturf_helper{ + baseturf = /turf/simulated/floor/indestructible + }, +/turf/simulated/wall/indestructible, +/area/admin) +"At" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/pistol/m1911, +/turf/simulated/floor/wood/oak, +/area/admin) +"Az" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_r" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/supply) +"AD" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "blue" + }, +/area/holodeck/source_knightarena) +"AJ" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/l6_saw/toy/riot, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"AM" = ( +/turf/simulated/floor/plasteel, +/area/shuttle/escape) +"AP" = ( +/obj/structure/table/holotable, +/obj/item/clothing/suit/armor/riot/knight/red, +/obj/item/clothing/head/helmet/riot/knight/red, +/obj/item/holo/claymore/red, +/turf/simulated/floor/holofloor{ + dir = 1; + icon_state = "red" + }, +/area/holodeck/source_knightarena) +"AV" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/wand/fireball, +/turf/simulated/floor/wood/oak, +/area/admin) +"AW" = ( +/obj/machinery/computer/card/centcom{ + dir = 8 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"Bb" = ( +/turf/simulated/floor/holofloor{ + icon_state = "engine"; + name = "Holodeck Projector Floor" + }, +/area/holodeck/source_wildlife) +"Bg" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver, +/turf/simulated/floor/wood/oak, +/area/admin) +"Bh" = ( +/obj/machinery/chem_dispenser/upgraded{ + hackedcheck = 1 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"Bl" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/ak814, +/turf/simulated/floor/wood/oak, +/area/admin) +"Bo" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/shuttle/escape) +"Bv" = ( +/obj/item/kirbyplants, +/obj/structure/light_fake/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"Bz" = ( +/obj/structure/rack, +/obj/item/tank/jetpack/oxygen, +/obj/item/tank/jetpack/oxygen, +/turf/simulated/floor/wood/oak, +/area/admin) +"BB" = ( +/obj/structure/light_fake/small{ + dir = 8 + }, +/obj/item/kirbyplants, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"BG" = ( +/obj/structure/table/wood/poker, +/obj/structure/light_fake/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"BK" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid11" + }, +/area/holodeck/source_desert) +"BM" = ( +/obj/item/gun/projectile/revolver/grenadelauncher/multi, +/obj/structure/table/wood, +/turf/simulated/floor/wood/oak, +/area/admin) +"BN" = ( +/obj/structure/table/wood, +/obj/item/melee/candy_sword, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"BX" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/pulse/cyborg, +/turf/simulated/floor/wood/oak, +/area/admin) +"Ca" = ( +/obj/machinery/computer/operating, +/turf/simulated/floor/wood/oak, +/area/admin) +"Cc" = ( +/obj/structure/table, +/obj/item/storage/toolbox/syndicate, +/obj/item/shard, +/obj/item/kitchen/knife, +/obj/item/storage/firstaid/tactical, +/turf/simulated/floor/wood/oak, +/area/admin) +"Cx" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/fernybush, +/obj/structure/window/full/shuttle, +/turf/simulated/floor/grass/no_creep, +/area/shuttle/escape) +"CD" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/pulse/carbine, +/turf/simulated/floor/wood/oak, +/area/admin) +"CI" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/kinetic_accelerator/experimental, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"CM" = ( +/obj/machinery/optable, +/turf/simulated/floor/wood/oak, +/area/admin) +"CN" = ( +/obj/item/gun/throw, +/obj/structure/table/wood, +/turf/simulated/floor/wood/oak, +/area/admin) +"CR" = ( +/obj/machinery/computer/emergency_shuttle, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"CT" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/tentacle, +/turf/simulated/floor/wood/oak, +/area/admin) +"De" = ( +/turf/simulated/floor/holofloor{ + dir = 9; + icon_state = "green" + }, +/area/holodeck/source_basketball) +"Do" = ( +/turf/simulated/wall/mineral/titanium, +/area/shuttle/supply) +"Dr" = ( +/turf/simulated/floor/holofloor{ + icon_state = "greenfull" + }, +/area/holodeck/source_thunderdomecourt) +"Dt" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating/airless, +/area/shuttle/supply) +"DB" = ( +/obj/structure/table/wood, +/obj/item/grenade/syndieminibomb, +/turf/simulated/floor/wood/oak, +/area/admin) +"DC" = ( +/obj/structure/flora/tree/dead, +/turf/simulated/floor/holofloor{ + icon_state = "snow" + }, +/area/holodeck/source_snowfield) +"DJ" = ( +/turf/simulated/floor/holofloor/space, +/area/holodeck/source_space) +"DM" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/lasercannon/cyborg, +/turf/simulated/floor/wood/oak, +/area/admin) +"DO" = ( +/turf/simulated/floor/holofloor{ + dir = 6; + icon_state = "green" + }, +/area/holodeck/source_emptycourt) +"DR" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/automatic, +/turf/simulated/floor/wood/oak, +/area/admin) +"DZ" = ( +/obj/structure/holohoop, +/turf/simulated/floor/holofloor{ + dir = 1; + icon_state = "red" + }, +/area/holodeck/source_basketball) +"Ec" = ( +/turf/simulated/floor/holofloor{ + icon_state = "redfull" + }, +/area/holodeck/source_boxingcourt) +"Eh" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/mindflayer, +/turf/simulated/floor/wood/oak, +/area/admin) +"Ep" = ( +/turf/simulated/floor/holofloor{ + dir = 6; + icon_state = "green" + }, +/area/holodeck/source_basketball) +"Er" = ( +/turf/simulated/floor/holofloor{ + dir = 5; + icon_state = "red" + }, +/area/holodeck/source_emptycourt) +"EG" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/telegun, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"EH" = ( +/turf/simulated/floor/holofloor{ + icon_state = "engine"; + name = "Holodeck Projector Floor" + }, +/area/holodeck/source_plating) +"EM" = ( +/turf/simulated/floor/carpet, +/area/admin) +"ES" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/russian/soul, +/turf/simulated/floor/wood/oak, +/area/admin) +"ET" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 4 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"EU" = ( +/obj/structure/light_fake/spot, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"EV" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"EW" = ( +/obj/structure/table/wood, +/obj/item/holosign_creator/engineering, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/admin) +"Fb" = ( +/obj/item/gun/energy/taser, +/obj/structure/table/wood, +/turf/simulated/floor/wood/oak, +/area/admin) +"Fi" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/lwap, +/turf/simulated/floor/wood/oak, +/area/admin) +"Fk" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/pulse/pistol/m1911, +/turf/simulated/floor/wood/oak, +/area/admin) +"Fn" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/shotgun/bulldog, +/turf/simulated/floor/wood/oak, +/area/admin) +"Fp" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/bluespace_beacon/syndicate, +/turf/simulated/floor/wood/oak, +/area/admin) +"Fy" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/pulse/turret, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"FM" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "green" + }, +/area/holodeck/source_boxingcourt) +"FO" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/ritual, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"FR" = ( +/obj/structure/holowindow, +/turf/simulated/floor/holofloor{ + icon_state = "redfull" + }, +/area/holodeck/source_thunderdomecourt) +"FS" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 8 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"FU" = ( +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_theatre) +"Ga" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/riot/short, +/turf/simulated/floor/wood/oak, +/area/admin) +"Gf" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "red" + }, +/area/holodeck/source_thunderdomecourt) +"Gg" = ( +/obj/structure/chair/stool/holostool{ + dir = 1 + }, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_theatre) +"Gk" = ( +/obj/structure/table/holotable, +/obj/item/clothing/gloves/boxing/hologlove{ + icon_state = "boxinggreen"; + item_state = "boxinggreen" + }, +/turf/simulated/floor/holofloor{ + dir = 6; + icon_state = "green" + }, +/area/holodeck/source_boxingcourt) +"Gn" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/fingergun/fake, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"Gp" = ( +/turf/simulated/floor/holofloor{ + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid6" + }, +/area/holodeck/source_desert) +"Gr" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/l6_saw, +/turf/simulated/floor/wood/oak, +/area/admin) +"GA" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/random_drug_bottle, +/obj/item/reagent_containers/glass/bottle/adminordrazine, +/turf/simulated/floor/wood/oak, +/area/admin) +"GG" = ( +/obj/structure/table/wood, +/obj/machinery/syndicatebomb/badmin/clown, +/turf/simulated/floor/wood/oak, +/area/admin) +"GK" = ( +/obj/machinery/door/airlock/titanium{ + aiControlDisabled = 1; + hackProof = 1; + id_tag = "s_docking_airlock"; + name = "Shuttle Hatch" + }, +/turf/simulated/floor/plating, +/area/shuttle/escape) +"GN" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/staff/healing, +/turf/simulated/floor/wood/oak, +/area/admin) +"GU" = ( +/obj/structure/holowindow, +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "red" + }, +/area/holodeck/source_thunderdomecourt) +"GY" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/wormhole_projector, +/turf/simulated/floor/wood/oak, +/area/admin) +"Hc" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/gyropistol, +/turf/simulated/floor/wood/oak, +/area/admin) +"Hk" = ( +/obj/structure/table/wood, +/obj/item/gun/throw/crossbow, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"Hw" = ( +/obj/machinery/computer/atmos_alert{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkyellow" + }, +/area/shuttle/escape) +"HE" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/obj/machinery/status_display{ + pixel_y = -30 + }, +/obj/structure/light_fake/small, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"HL" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/sniper_rifle, +/turf/simulated/floor/wood/oak, +/area/admin) +"HP" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid3" + }, +/area/holodeck/source_desert) +"HQ" = ( +/obj/machinery/door/airlock/highsecurity, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/adminconstruction) +"HT" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "redcorner" + }, +/area/shuttle/escape) +"Id" = ( +/obj/structure/closet{ + icon_closed = "cabinet_closed"; + icon_opened = "cabinet_open"; + req_access = list(114) + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"If" = ( +/obj/structure/light_fake/spot, +/turf/simulated/floor/plasteel{ + icon_state = "bot" + }, +/area/shuttle/escape) +"Il" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "red" + }, +/area/holodeck/source_boxingcourt) +"Iq" = ( +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Is" = ( +/obj/structure/light_fake/spot{ + dir = 4 + }, +/turf/simulated/floor/mineral/titanium/blue, +/area/shuttle/supply) +"Iv" = ( +/obj/structure/table/holotable, +/turf/simulated/floor/holofloor{ + dir = 5; + icon_state = "red" + }, +/area/holodeck/source_knightarena) +"IB" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/toy/pistol, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"IG" = ( +/turf/simulated/wall/mineral/plastitanium, +/area/shuttle/escape) +"II" = ( +/obj/item/gun/syringe/syndicate, +/obj/structure/table/wood, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"IR" = ( +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/shuttle/escape) +"IV" = ( +/obj/structure/closet/secure_closet/personal, +/turf/simulated/floor/wood/oak, +/area/admin) +"IW" = ( +/obj/structure/chair/stool/holostool{ + dir = 8 + }, +/turf/simulated/floor/holofloor{ + icon_state = "asteroid" + }, +/area/holodeck/source_picnicarea) +"IX" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/simulated/floor/holofloor/grass, +/area/holodeck/source_picnicarea) +"Jc" = ( +/obj/structure/table/wood, +/obj/item/chainsaw/doomslayer, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"Jd" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/bow, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"Je" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/staff/door, +/turf/simulated/floor/wood/oak, +/area/admin) +"Jk" = ( +/turf/simulated/floor/holofloor{ + icon_state = "green" + }, +/area/holodeck/source_basketball) +"Jn" = ( +/obj/machinery/mech_bay_recharge_port/upgraded/unsimulated{ + dir = 2 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"Jq" = ( +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Js" = ( +/turf/simulated/floor/holofloor{ + dir = 10; + icon_state = "green" + }, +/area/holodeck/source_emptycourt) +"Jt" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/shuttle/escape) +"Jv" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/shuttle/escape) +"Jy" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/retro/old, +/turf/simulated/floor/wood/oak, +/area/admin) +"JC" = ( +/turf/simulated/floor/holofloor{ + icon = 'icons/misc/beach.dmi'; + icon_state = "desert" + }, +/area/holodeck/source_beach) +"JD" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/combat/survival/bone, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"JJ" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/holofloor/grass, +/area/holodeck/source_picnicarea) +"JQ" = ( +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_meetinghall) +"JV" = ( +/turf/simulated/floor/holofloor{ + icon_state = "engine"; + name = "Burn-Mix Floor"; + nitrogen = 0; + oxygen = 2500; + temperature = 370; + toxins = 5000 + }, +/area/holodeck/source_burntest) +"JW" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/gun/advtaser/mounted, +/turf/simulated/floor/wood/oak, +/area/admin) +"Ka" = ( +/turf/simulated/floor/holofloor{ + icon_state = "asteroid7" + }, +/area/holodeck/source_knightarena) +"Kg" = ( +/obj/machinery/computer/secure_data{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkred" + }, +/area/shuttle/escape) +"Kk" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/staff, +/turf/simulated/floor/wood/oak, +/area/admin) +"Km" = ( +/obj/structure/table/wood/poker, +/turf/simulated/floor/wood/oak, +/area/admin) +"Kn" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutralcorner" + }, +/area/shuttle/escape) +"Kt" = ( +/obj/structure/table/holotable, +/turf/simulated/floor/holofloor{ + dir = 10; + icon_state = "blue" + }, +/area/holodeck/source_knightarena) +"Kv" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/kinetic_accelerator/crossbow, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"Kw" = ( +/obj/structure/closet, +/obj/structure/light_fake/small{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"Ky" = ( +/obj/structure/table/wood, +/obj/item/sleeping_carp_scroll, +/turf/simulated/floor/wood/oak, +/area/admin) +"Kz" = ( +/obj/structure/chair/comfy/beige{ + dir = 1; + layer = 5; + pixel_y = -2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"KB" = ( +/turf/simulated/floor/holofloor{ + icon_state = "asteroid" + }, +/area/holodeck/source_picnicarea) +"KD" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/plating/airless, +/area/shuttle/escape) +"KG" = ( +/obj/structure/table, +/obj/random/tool, +/obj/item/clothing/gloves/color/yellow, +/obj/item/pinpointer/advpinpointer, +/turf/simulated/floor/wood/oak, +/area/admin) +"KH" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/gun/advtaser/cyborg, +/turf/simulated/floor/wood/oak, +/area/admin) +"KJ" = ( +/obj/machinery/computer/card/centcom, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"KL" = ( +/obj/structure/table/wood, +/obj/item/gun/throw/crossbow/french, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"KR" = ( +/obj/mecha/combat/marauder/loaded{ + operation_req_access = list(114) + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"KS" = ( +/turf/simulated/floor/holofloor{ + icon_state = "redfull" + }, +/area/holodeck/source_basketball) +"La" = ( +/obj/structure/table/wood, +/obj/item/grenade/clusterbuster/booze, +/turf/simulated/floor/wood/oak, +/area/admin) +"Ld" = ( +/turf/simulated/floor/holofloor{ + icon_state = "cult" + }, +/area/holodeck/source_theatre) +"Lg" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/shuttle/escape) +"Lm" = ( +/obj/structure/flora/tree/pine, +/turf/simulated/floor/holofloor{ + icon_state = "snow" + }, +/area/holodeck/source_snowfield) +"Lx" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/doublebarrel/improvised/cane, +/turf/simulated/floor/wood/oak, +/area/admin) +"LA" = ( +/obj/machinery/door/airlock/external{ + id_tag = "s_docking_airlock"; + name = "Shuttle Hatch"; + req_access = list(79) + }, +/obj/structure/fans/tiny, +/obj/docking_port/mobile/supply{ + dir = 4 + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 5; + height = 7; + id = "supply_away"; + name = "supply centcom"; + width = 12 + }, +/turf/simulated/floor/plating, +/area/shuttle/supply) +"LK" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/lethal, +/turf/simulated/floor/wood/oak, +/area/admin) +"LL" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/pistol/enforcer, +/turf/simulated/floor/wood/oak, +/area/admin) +"LR" = ( +/turf/simulated/floor/holofloor{ + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid5" + }, +/area/holodeck/source_desert) +"LW" = ( +/obj/machinery/computer/syndicate_depot/teleporter, +/turf/simulated/floor/wood/oak, +/area/admin) +"Mj" = ( +/obj/structure/table, +/obj/item/card/id/centcom{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/card/id, +/obj/item/card/id/admin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"Mk" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/l6_saw/toy, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"MC" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun, +/turf/simulated/floor/wood/oak, +/area/admin) +"MD" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/adminconstruction) +"MF" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/pulse/destroyer/annihilator, +/turf/simulated/floor/wood/oak, +/area/admin) +"MH" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/temperature, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"MX" = ( +/obj/structure/table/wood, +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun, +/turf/simulated/floor/wood/oak, +/area/admin) +"Np" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/staff/chaos, +/turf/simulated/floor/wood/oak, +/area/admin) +"Nu" = ( +/obj/structure/chair/comfy/beige{ + dir = 8; + layer = 5; + pixel_y = -2 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"Ny" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/toy/crossbow, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"Nz" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"ND" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid1" + }, +/area/holodeck/source_desert) +"NF" = ( +/turf/simulated/floor/holofloor{ + icon_state = "red" + }, +/area/holodeck/source_basketball) +"NQ" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/pistol/APS, +/turf/simulated/floor/wood/oak, +/area/admin) +"NT" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/shuttle/escape) +"NU" = ( +/obj/structure/table/wood, +/obj/item/paper{ + info = "/obj/item/gun/syringe/blowgun" + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"Oe" = ( +/obj/machinery/computer/crew, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"Of" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/obj/item/ammo_box/foambox, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"Oi" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/simulated/floor/holofloor{ + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid" + }, +/area/holodeck/source_desert) +"Oo" = ( +/turf/simulated/floor/holofloor{ + icon_state = "greenfull" + }, +/area/holodeck/source_boxingcourt) +"Or" = ( +/obj/structure/table/wood, +/obj/item/gun/syringe, +/turf/simulated/floor/wood/oak, +/area/admin) +"Ot" = ( +/obj/machinery/computer/robotics, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"Ox" = ( +/turf/simulated/floor/carpet, +/area/adminconstruction) +"Oz" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/instakill, +/turf/simulated/floor/wood/oak, +/area/admin) +"OD" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/gun/advtaser, +/obj/structure/fans/tiny/invisible, +/turf/simulated/floor/wood/oak, +/area/admin) +"OF" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/ionrifle/carbine, +/turf/simulated/floor/wood/oak, +/area/admin) +"OH" = ( +/turf/simulated/floor/holofloor{ + icon_state = "redfull" + }, +/area/holodeck/source_emptycourt) +"OL" = ( +/obj/structure/table/wood, +/obj/item/clothing/suit/blacktrenchcoat, +/obj/item/clothing/shoes/black, +/turf/simulated/floor/wood/oak, +/area/admin) +"OS" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/butcher, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"OW" = ( +/obj/structure/table/wood, +/obj/item/whetstone, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"Pc" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "red" + }, +/area/holodeck/source_thunderdomecourt) +"Pq" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/immolator/multi/cyborg, +/turf/simulated/floor/wood/oak, +/area/admin) +"Pt" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "green" + }, +/area/holodeck/source_emptycourt) +"Py" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/gun/hos, +/turf/simulated/floor/wood/oak, +/area/admin) +"Pz" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/spikethrower, +/turf/simulated/floor/wood/oak, +/area/admin) +"PB" = ( +/obj/structure/table/wood, +/obj/item/holo/esword, +/obj/item/holo/esword/green, +/obj/item/holo/esword/red, +/obj/item/melee/energy/sword/pirate, +/obj/item/melee/energy/sword/saber, +/obj/item/melee/energy/sword/saber/blue, +/obj/item/melee/energy/sword/saber/green, +/obj/item/melee/energy/sword/saber/purple, +/obj/item/melee/energy/sword/saber/red, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"PE" = ( +/obj/structure/chair/comfy/beige{ + dir = 4; + layer = 5; + pixel_y = -2 + }, +/obj/machinery/status_display{ + pixel_y = 30 + }, +/obj/structure/light_fake/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"PJ" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/doublebarrel, +/turf/simulated/floor/wood/oak, +/area/admin) +"PQ" = ( +/obj/item/storage/box/syringes, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/grenade/chem_grenade/large, +/obj/item/grenade/chem_grenade/large, +/obj/item/grenade/chem_grenade/large, +/obj/item/grenade/chem_grenade/large, +/obj/item/gun/syringe/rapidsyringe, +/obj/item/reagent_containers/spray/chemsprayer, +/obj/structure/closet, +/obj/item/ammo_casing/shotgun/dart, +/obj/item/ammo_casing/shotgun/dart, +/obj/item/ammo_casing/shotgun/dart, +/obj/item/ammo_casing/shotgun/dart, +/obj/item/ammo_casing/shotgun/dart, +/obj/item/ammo_casing/shotgun/dart, +/turf/simulated/floor/wood/oak, +/area/admin) +"PT" = ( +/obj/structure/table/holotable, +/obj/item/clothing/head/helmet/thunderdome, +/obj/item/clothing/suit/armor/tdome/green, +/obj/item/clothing/under/color/green, +/obj/item/holo/esword/green, +/turf/simulated/floor/holofloor{ + icon_state = "green" + }, +/area/holodeck/source_thunderdomecourt) +"Qc" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/shuttle/escape) +"Qd" = ( +/turf/simulated/floor/holofloor{ + icon = 'icons/misc/beach.dmi'; + icon_state = "beach" + }, +/area/holodeck/source_beach) +"Qg" = ( +/obj/structure/table/holotable, +/obj/machinery/readybutton, +/turf/simulated/floor/holofloor{ + dir = 6; + icon_state = "blue" + }, +/area/holodeck/source_knightarena) +"Qt" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/tommygun, +/turf/simulated/floor/wood/oak, +/area/admin) +"QA" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/gun/blueshield/pdw9, +/turf/simulated/floor/wood/oak, +/area/admin) +"QH" = ( +/obj/structure/table/wood, +/obj/item/fireaxe, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"QI" = ( +/obj/mecha/combat/honker/loaded{ + operation_req_access = list(114) + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"QN" = ( +/obj/structure/table/wood, +/obj/item/holosign_creator/atmos, +/obj/item/holosign_creator/atmos, +/obj/item/holosign_creator/atmos, +/obj/item/holosign_creator/atmos, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "dark" + }, +/area/admin) +"QP" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/shiv/carrot, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"QT" = ( +/obj/structure/table/holotable, +/obj/machinery/readybutton, +/turf/simulated/floor/holofloor{ + dir = 9; + icon_state = "red" + }, +/area/holodeck/source_knightarena) +"Rd" = ( +/obj/structure/table/wood/poker, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"Rh" = ( +/turf/simulated/floor/holofloor{ + icon_state = "redfull" + }, +/area/holodeck/source_thunderdomecourt) +"Rj" = ( +/obj/item/paper{ + info = "Комната копипастнута с парашизы. Много чего что есть в билде, тут может отсутствовать, потому что всем лень изучать, особенно мне. /Если ты заметишь что тут чего-то нет, напиши мне в карточную или разрабскую. /-Aylong"; + name = "Напоминалка" + }, +/obj/effect/landmark/spawner/roundstart_observer, +/turf/simulated/floor/carpet, +/area/admin) +"Rn" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/toy/pistol/riot, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"RA" = ( +/obj/machinery/sleeper/upgraded, +/turf/simulated/floor/wood/oak, +/area/admin) +"RI" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/shuttle/escape) +"RP" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_l" + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/supply) +"RQ" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "browncorner" + }, +/area/shuttle/escape) +"RS" = ( +/turf/simulated/floor/holofloor{ + icon_state = "green" + }, +/area/holodeck/source_emptycourt) +"RV" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/chrono_gun, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"RW" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/plasmacutter/adv, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"RZ" = ( +/turf/simulated/floor/holofloor{ + icon_state = "snow" + }, +/area/holodeck/source_snowfield) +"Sf" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "blue" + }, +/area/holodeck/source_knightarena) +"Sm" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/c20r/toy, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"Sp" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/toy/tommygun, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"SA" = ( +/obj/structure/mineral_door/wood, +/turf/simulated/floor/wood/oak, +/area/admin) +"SK" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/mounted, +/turf/simulated/floor/wood/oak, +/area/admin) +"SR" = ( +/obj/item/kirbyplants, +/turf/simulated/floor/wood/oak, +/area/admin) +"SU" = ( +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/shuttle/escape) +"SV" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/shuttle/engine/heater, +/turf/simulated/floor/plating/airless, +/area/shuttle/supply) +"Te" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/staff/focus, +/turf/simulated/floor/wood/oak, +/area/admin) +"Th" = ( +/obj/structure/table/wood, +/obj/item/radio/headset, +/obj/item/radio/headset/abductor, +/obj/item/radio/headset/alt, +/obj/item/radio/headset/binary{ + name = "binary radio headset" + }, +/obj/item/radio/headset/bot{ + name = "bot radio headset" + }, +/obj/item/radio/headset/centcom, +/obj/item/radio/headset/chameleon{ + name = "chamelon radio headset" + }, +/obj/item/radio/headset/ert, +/obj/item/radio/headset/ert/alt/commander, +/obj/item/radio/headset/heads{ + name = "heads radio headset" + }, +/obj/item/radio/headset/heads/ai_integrated, +/obj/item/radio/headset/heads/blueshield/alt, +/obj/item/radio/headset/heads/captain/alt, +/obj/item/radio/headset/heads/ce, +/obj/item/radio/headset/heads/cmo, +/obj/item/radio/headset/heads/hop, +/obj/item/radio/headset/heads/hos, +/obj/item/radio/headset/heads/magistrate/alt, +/obj/item/radio/headset/heads/ntrep, +/obj/item/radio/headset/heads/rd, +/obj/item/radio/headset/headset_cargo, +/obj/item/radio/headset/headset_cargo/mining, +/obj/item/radio/headset/headset_com, +/obj/item/radio/headset/headset_eng, +/obj/item/radio/headset/headset_iaa, +/obj/item/radio/headset/headset_med, +/obj/item/radio/headset/headset_medsci, +/obj/item/radio/headset/headset_rob, +/obj/item/radio/headset/headset_sci, +/obj/item/radio/headset/headset_sec, +/obj/item/radio/headset/headset_sec/alt, +/obj/item/radio/headset/headset_service, +/obj/item/radio/headset/syndicate{ + name = "syndicate radio headset" + }, +/obj/item/radio/headset/syndicate/alt, +/obj/item/radio/headset/syndicate/alt/syndteam{ + name = "syndicate team headset" + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"Tu" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/foambox/sniper/riot, +/obj/item/ammo_box/foambox/sniper/riot, +/obj/item/ammo_box/foambox/sniper/riot, +/obj/item/ammo_box/foambox/sniper/riot, +/obj/item/ammo_box/foambox/sniper/riot, +/obj/item/ammo_box/foambox/sniper/riot, +/obj/item/ammo_box/foambox/sniper/riot, +/obj/item/ammo_box/foambox/sniper/riot, +/obj/item/ammo_box/foambox/sniper/riot, +/obj/item/ammo_box/foambox/sniper/riot, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"Tv" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "red" + }, +/area/holodeck/source_basketball) +"Tw" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser/instakill/blue, +/turf/simulated/floor/wood/oak, +/area/admin) +"TH" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/pistol/deagle/gold, +/turf/simulated/floor/wood/oak, +/area/admin) +"TI" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "red" + }, +/area/holodeck/source_knightarena) +"TK" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/kinetic_accelerator/cyborg, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"TN" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/gun/blueshield, +/turf/simulated/floor/wood/oak, +/area/admin) +"TO" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/wood/oak, +/area/admin) +"TW" = ( +/turf/simulated/floor/holofloor{ + dir = 10; + icon_state = "green" + }, +/area/holodeck/source_basketball) +"TY" = ( +/turf/simulated/wall/indestructible, +/area/space/centcomm) +"Ua" = ( +/turf/simulated/floor/holofloor{ + icon_state = "greenfull" + }, +/area/holodeck/source_basketball) +"Ui" = ( +/obj/structure/table, +/obj/item/storage/box/beakers, +/obj/item/reagent_containers/glass/beaker/bluespace, +/obj/item/reagent_containers/glass/beaker/bluespace, +/obj/item/reagent_containers/glass/beaker/bluespace, +/obj/item/reagent_containers/glass/beaker/bluespace, +/obj/item/storage/box/autoinjectors, +/turf/simulated/floor/wood/oak, +/area/admin) +"Uk" = ( +/obj/structure/table/wood, +/obj/item/chainsaw, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"Ul" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/meteorgun, +/obj/item/gun/energy/meteorgun/pen, +/turf/simulated/floor/wood/oak, +/area/admin) +"Up" = ( +/turf/simulated/wall/indestructible, +/area/admin) +"Uq" = ( +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "vault" + }, +/area/shuttle/escape) +"UH" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/simulated/floor/holofloor/grass, +/area/holodeck/source_picnicarea) +"UO" = ( +/turf/simulated/floor/wood/oak, +/area/admin) +"UQ" = ( +/obj/mecha/combat/reticence/loaded, +/turf/simulated/floor/wood/oak, +/area/admin) +"UU" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/pistol/deagle/camo, +/turf/simulated/floor/wood/oak, +/area/admin) +"Vb" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/mini_uzi, +/turf/simulated/floor/wood/oak, +/area/admin) +"Vh" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/shuttle/escape) +"Vk" = ( +/obj/structure/table/holotable/wood, +/turf/simulated/floor/holofloor{ + icon_state = "grimy" + }, +/area/holodeck/source_meetinghall) +"Vl" = ( +/obj/structure/table/wood, +/obj/item/whetstone/cult, +/turf/simulated/floor/plasteel{ + icon_state = "alienvault" + }, +/area/admin) +"Vr" = ( +/obj/structure/table, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/infra, +/obj/item/assembly/infra, +/obj/item/assembly/infra, +/obj/item/assembly/infra, +/obj/item/assembly/infra, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/turf/simulated/floor/wood/oak, +/area/admin) +"Vu" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/wand/polymorph, +/turf/simulated/floor/wood/oak, +/area/admin) +"Vw" = ( +/obj/machinery/chem_master, +/turf/simulated/floor/wood/oak, +/area/admin) +"Vy" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/holofloor/grass, +/area/holodeck/source_picnicarea) +"VD" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/c20r/toy/riot, +/turf/simulated/floor/wood/oak, +/area/admin) +"VK" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/sniper_rifle/syndicate, +/turf/simulated/floor/wood/oak, +/area/admin) +"VS" = ( +/turf/simulated/floor/holofloor{ + icon = 'icons/misc/beach.dmi'; + icon_state = "seashallow" + }, +/area/holodeck/source_beach) +"Wb" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/capgun, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"Wc" = ( +/obj/structure/table/wood/poker, +/obj/item/radio/intercom/syndicate, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/admin) +"Wd" = ( +/obj/structure/table/wood, +/obj/item/toy/chainsaw, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"Wx" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/arc_revolver, +/turf/simulated/floor/wood/oak, +/area/admin) +"WA" = ( +/obj/structure/flora/ausbushes/fernybush, +/turf/simulated/floor/holofloor{ + icon_state = "snow" + }, +/area/holodeck/source_snowfield) +"WD" = ( +/obj/structure/table/wood, +/obj/item/bio_chip_implanter/adrenalin{ + pixel_x = 12; + pixel_y = -12 + }, +/obj/item/bio_chip_implanter/emp{ + pixel_x = 9; + pixel_y = -9 + }, +/obj/item/bio_chip_implanter/explosive{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/bio_chip_implanter/explosive_macro{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/bio_chip_implanter/freedom, +/obj/item/bio_chip_implanter/krav_maga{ + pixel_x = -9; + pixel_y = 9 + }, +/obj/item/bio_chip_implanter/mindshield{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/bio_chip_implanter/storage{ + pixel_x = -3; + pixel_y = 3 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"WE" = ( +/obj/structure/table/wood, +/obj/item/paper{ + info = "Компактная снайперка /obj/item/gun/projectile/automatic/sniper_rifle/compact" + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"WF" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/m90, +/turf/simulated/floor/wood/oak, +/area/admin) +"WM" = ( +/turf/simulated/floor/holofloor{ + dir = 8; + icon_state = "green" + }, +/area/holodeck/source_thunderdomecourt) +"WP" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/shuttle/escape) +"WT" = ( +/obj/structure/rack, +/obj/item/clothing/suit/space, +/obj/item/clothing/suit/space, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space, +/obj/item/clothing/head/helmet/space, +/turf/simulated/floor/wood/oak, +/area/admin) +"WX" = ( +/obj/structure/table/wood, +/obj/item/suppressor/specialoffer, +/obj/item/suppressor/specialoffer, +/obj/item/suppressor/specialoffer, +/obj/item/suppressor/specialoffer, +/obj/item/suppressor/specialoffer, +/obj/item/suppressor/specialoffer, +/obj/item/suppressor/specialoffer, +/obj/item/suppressor/specialoffer, +/obj/item/suppressor/specialoffer, +/obj/item/suppressor/specialoffer, +/turf/simulated/floor/wood/oak, +/area/admin) +"WY" = ( +/turf/simulated/floor/holofloor{ + icon_state = "green" + }, +/area/holodeck/source_boxingcourt) +"Xa" = ( +/obj/structure/table, +/obj/item/card/id/silver{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/card/id/captains_spare, +/obj/item/card/id/lifetime{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"Xb" = ( +/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser, +/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion, +/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse, +/obj/item/mecha_parts/mecha_equipment/weapon/honker, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot, +/obj/structure/closet/crate, +/turf/simulated/floor/wood/oak, +/area/admin) +"Xk" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/wt550, +/turf/simulated/floor/wood/oak, +/area/admin) +"Xm" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/lasercarbine, +/turf/simulated/floor/wood/oak, +/area/admin) +"Xy" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/kinetic_accelerator/crossbow/large/cyborg, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"XB" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/speargun, +/turf/simulated/floor/wood/oak, +/area/admin) +"XF" = ( +/obj/structure/light_fake/spot{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/shuttle/escape) +"XZ" = ( +/obj/structure/table/wood, +/obj/item/melee/spellblade, +/turf/simulated/floor/wood/oak, +/area/admin) +"Yc" = ( +/obj/mecha/combat/phazon{ + operation_req_access = list(114) + }, +/turf/simulated/floor/wood/oak, +/area/admin) +"Yd" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/revolver/russian, +/turf/simulated/floor/wood/oak, +/area/admin) +"Yl" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/c20r/toy/riot, +/turf/simulated/floor/carpet/arcade, +/area/admin) +"Yn" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/automatic/pistol, +/turf/simulated/floor/wood/oak, +/area/admin) +"YC" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/decloner, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"YM" = ( +/obj/structure/holowindow{ + dir = 1 + }, +/turf/simulated/floor/holofloor{ + icon_state = "asteroid7" + }, +/area/holodeck/source_knightarena) +"YZ" = ( +/obj/structure/table/wood, +/obj/item/gun/projectile/shotgun/automatic/dual_tube, +/turf/simulated/floor/wood/oak, +/area/admin) +"Zi" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon = 'icons/turf/floors/plating.dmi'; + icon_state = "asteroid2" + }, +/area/holodeck/source_desert) +"Zk" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/plasmacutter, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkneutralfull" + }, +/area/admin) +"Zo" = ( +/obj/structure/table/wood, +/obj/item/gun/magic/staff/animate, +/turf/simulated/floor/wood/oak, +/area/admin) +"Zp" = ( +/turf/simulated/floor/holofloor{ + dir = 4; + icon_state = "red" + }, +/area/holodeck/source_emptycourt) +"Zr" = ( +/turf/simulated/floor/plasteel{ + icon_state = "cmo" + }, +/area/shuttle/escape) +"ZA" = ( +/obj/structure/table/wood, +/obj/item/grenade/clusterbuster/mega_syndieminibomb, +/turf/simulated/floor/wood/oak, +/area/admin) + +(1,1,1) = {" +Ah +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +kH +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(2,1,1) = {" +Up +bz +BB +tI +tI +Bv +Up +Up +jZ +UO +cB +Up +jZ +UO +cB +Up +kT +FO +QH +jD +EM +EM +Of +mk +qx +Tu +Up +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +TY +kH +pO +EH +EH +EH +EH +EH +EH +EH +EH +EH +EH +pO +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +pO +mY +Tv +Tv +Tv +jH +De +aG +aG +aG +TW +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(3,1,1) = {" +Up +bL +UO +UO +UO +UO +Rd +Up +zT +UO +IV +Up +zT +UO +IV +Up +JD +UO +UO +UO +EM +EM +UO +UO +UO +fg +Up +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +pO +EH +EH +EH +EH +EH +EH +EH +EH +EH +EH +pO +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +pO +mY +Tv +xS +KS +NF +kY +Ua +Jk +aG +TW +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(4,1,1) = {" +Up +ca +UO +UO +UO +UO +Rd +Up +jZ +UO +cB +Up +jZ +UO +cB +Up +QP +xh +OW +vU +EM +EM +ib +pJ +UO +ve +Up +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +TY +kH +pO +EH +EH +EH +EH +EH +EH +EH +EH +EH +EH +pO +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +pO +DZ +KS +xS +KS +NF +kY +rE +Jk +Ua +qT +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(5,1,1) = {" +Up +lX +UO +Km +UO +UO +Rd +Up +Up +SA +Up +Up +Up +SA +Up +Up +vY +gE +Vl +PB +EM +EM +xy +im +UO +Ny +Up +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +pO +EH +EH +EH +EH +EH +EH +EH +EH +EH +EH +pO +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +pO +pa +aH +xS +KS +NF +kY +Ua +Jk +rq +Ep +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(6,1,1) = {" +Up +ua +lt +UO +UO +lt +Rd +Up +tI +bL +tI +Up +tI +bL +tI +Up +OS +UO +UO +UO +EM +EM +do +eK +UO +wd +Up +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +TY +kH +pO +EH +EH +EH +EH +EH +EH +EH +EH +EH +EH +pO +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +DJ +pO +pa +aH +aH +aH +xA +nC +rq +rq +rq +Ep +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(7,1,1) = {" +Up +Up +Up +UO +UO +Up +Up +Up +bL +UO +bL +iY +bL +UO +bL +Up +jB +fn +Uk +BN +EM +EM +oB +Sp +UO +ta +Up +kH +TY +kH +TY +kH +fO +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +yp +kH +TY +kH +TY +kH +TY +kH +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(8,1,1) = {" +Up +bL +lE +UO +UO +UO +pN +UO +UO +UO +UO +UO +UO +UO +UO +Up +to +kq +Jc +na +EM +EM +Sm +Yl +UO +IB +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +Bb +Bb +Bb +Bb +Bb +Bb +Bb +Bb +Bb +Bb +pO +dB +Ld +Ld +dX +dX +dX +FU +FU +FU +FU +pO +JC +JC +JC +JC +JC +JC +JC +Qd +VS +VS +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(9,1,1) = {" +Up +tx +UO +UO +UO +UO +pN +UO +UO +UO +UO +UO +UO +UO +UO +Up +kM +UO +UO +UO +EM +EM +UO +UO +UO +Rn +Up +kH +TY +kH +TY +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +Bb +jF +Bb +Bb +Bb +Bb +Bb +Bb +jF +Bb +pO +fm +Ld +Ld +dX +FU +Gg +Gg +Gg +Gg +Gg +pO +JC +hw +JC +JC +aQ +JC +JC +Qd +VS +VS +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(10,1,1) = {" +Up +bL +lt +UO +UO +UO +pN +UO +UO +UO +UO +UO +UO +UO +UO +Up +Nz +cP +rr +mR +EM +EM +Mk +AJ +Wd +vu +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +Bb +Bb +Bb +Bb +jF +jF +Bb +Bb +Bb +Bb +pO +fm +Ld +Ld +dX +FU +Gg +Gg +Gg +Gg +Gg +pO +JC +JC +JC +JC +JC +JC +JC +Qd +VS +VS +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(11,1,1) = {" +Up +Up +Up +UO +UO +Up +Up +Up +bL +UO +bL +vS +bL +UO +bL +Up +Up +Up +Up +Up +EM +EM +Up +Up +Up +Up +Up +kH +TY +kH +TY +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +Bb +jF +Bb +Bb +Bb +Bb +Bb +Bb +jF +Bb +pO +fm +Ld +Ld +dX +FU +Gg +Gg +Gg +Gg +Gg +pO +JC +vm +JC +JC +JC +vv +JC +Qd +VS +VS +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(12,1,1) = {" +Up +tI +Bv +UO +UO +Bv +tI +Up +tI +bL +bL +Up +tI +bL +tI +Up +MH +zP +CI +TK +EM +EM +KL +Hk +Kv +Wb +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +Bb +Bb +Bb +Bb +Bb +Bb +Bb +Bb +Bb +Bb +pO +fm +Ld +Ld +hN +dX +dX +FU +FU +FU +FU +pO +JC +JC +JC +JC +JC +JC +JC +Qd +VS +VS +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(13,1,1) = {" +Up +EV +EV +UO +UO +EV +EV +Up +Up +SA +Up +Up +Up +SA +Up +Up +Gn +UO +UO +UO +EM +EM +UO +UO +UO +II +Up +kH +TY +kH +TY +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(14,1,1) = {" +Up +jj +EV +UO +UO +EV +vd +Up +jZ +UO +cB +Up +jZ +UO +cB +Up +Jd +GY +sA +Pz +EM +EM +XB +Or +MX +pE +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +RZ +RZ +RZ +RZ +RZ +RZ +RZ +gN +RZ +RZ +pO +yj +Gf +Gf +Gf +GU +sd +WM +WM +WM +rM +pO +jY +Il +Il +Il +Il +fb +fb +fb +fb +ri +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(15,1,1) = {" +Up +PE +EV +UO +UO +EV +HE +Up +zT +UO +IV +Up +zT +UO +IV +Up +Zk +ki +NU +cz +EM +EM +tF +Ul +oX +Xy +Up +kH +TY +kH +TY +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +RZ +wE +RZ +RZ +RZ +DC +RZ +RZ +WA +RZ +pO +mw +Rh +Rh +Rh +FR +li +Dr +Dr +Dr +PT +pO +nZ +Ec +Ec +Ec +Ec +Oo +Oo +Oo +Oo +WY +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(16,1,1) = {" +Up +Rd +Rd +UO +UO +Rd +Wc +Up +jZ +UO +cB +Up +jZ +UO +cB +Up +RW +UO +UO +UO +EM +EM +UO +UO +UO +EG +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +RZ +RZ +RZ +RZ +RZ +RZ +RZ +RZ +RZ +RZ +pO +mw +Rh +Rh +Rh +FR +li +Dr +Dr +Dr +PT +pO +nZ +Ec +Ec +Ec +Ec +Oo +Oo +Oo +Oo +WY +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(17,1,1) = {" +Up +aa +UO +UO +UO +Nu +ea +Up +Up +Up +Up +Up +Up +Up +Up +Up +RV +vc +Fy +ho +EM +EM +YC +zj +fc +qR +Up +Up +Up +Up +Up +Up +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +RZ +RZ +Lm +RZ +WA +RZ +RZ +RZ +DC +RZ +pO +mw +Rh +Rh +Rh +FR +li +Dr +Dr +Dr +PT +pO +nZ +Ec +Ec +Ec +Ec +Oo +Oo +Oo +Oo +WY +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(18,1,1) = {" +Up +Kw +UO +UO +UO +Id +BG +Up +WX +vg +Th +xe +oh +gS +WD +Up +Up +Up +Up +Up +EM +EM +Up +Up +Up +Up +Up +EW +EW +EW +EW +EW +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +RZ +RZ +RZ +RZ +RZ +RZ +wE +RZ +RZ +gN +pO +nM +Pc +Pc +Pc +qv +oj +tP +tP +tP +kf +pO +hA +rv +rv +rv +rv +FM +FM +FM +FM +Gk +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(19,1,1) = {" +Up +Up +Up +uW +uW +Up +Up +Up +UO +UO +UO +UO +UO +UO +UO +UO +UO +UO +UO +UO +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +Ox +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(20,1,1) = {" +Up +bL +iY +bL +bL +bL +bL +Up +TH +NQ +Yn +jK +og +ES +mn +qt +UO +hZ +xq +VD +EM +Rj +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +Ox +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +JV +JV +JV +JV +JV +JV +JV +JV +JV +JV +pO +mX +mX +mX +mX +cV +mX +mX +mX +mX +yN +pO +yq +xJ +xJ +xJ +xJ +ep +ep +ep +ep +Js +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(21,1,1) = {" +Up +KJ +Kz +bL +bL +bL +bL +Up +UU +lR +by +LL +CN +Yd +mU +Bg +UO +Vb +eY +WF +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +Ox +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +JV +em +JV +JV +JV +JV +JV +JV +em +JV +pO +mX +Oi +Zi +mX +mX +cV +Oi +mX +ND +mX +pO +sr +OH +OH +OH +OH +fi +fi +fi +fi +RS +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(22,1,1) = {" +Up +qU +oc +BG +ne +bL +bL +Up +UO +UO +UO +UO +UO +UO +UO +UO +UO +UO +UO +UO +EM +EM +Zo +Je +Np +jM +Up +QN +QN +QN +QN +QN +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +JV +JV +JV +JV +JV +JV +JV +JV +JV +JV +pO +Gp +mX +mX +yN +mX +mX +cV +mX +mX +HP +pO +sr +OH +OH +OH +OH +fi +fi +fi +fi +RS +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(23,1,1) = {" +Up +Up +Up +Up +Up +Up +Up +Up +zA +io +nU +PJ +io +DR +MC +UO +eL +UO +WE +HL +EM +EM +Je +UO +UO +UO +Up +Up +Up +Up +Up +Up +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +JV +em +JV +JV +JV +JV +JV +JV +em +JV +pO +mX +mX +mX +BK +mX +mX +mX +cV +mX +mX +pO +sr +OH +OH +OH +OH +fi +fi +fi +fi +RS +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(24,1,1) = {" +Up +Jn +UO +ET +UQ +Yc +hV +hh +Ga +Fn +gR +pk +Lx +LK +YZ +UO +Gr +UO +dZ +VK +EM +EM +Kk +yC +Te +GN +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +JV +JV +JV +JV +JV +JV +JV +JV +JV +JV +pO +mX +cY +mX +mX +mX +LR +yN +mX +cV +Oi +pO +Er +Zp +Zp +Zp +Zp +Pt +Pt +Pt +Pt +DO +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(25,1,1) = {" +Up +xI +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +SR +Up +kH +TY +kH +TY +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(26,1,1) = {" +Up +Xb +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +EM +SR +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +QT +TI +TI +TI +ew +hB +Sf +Sf +Sf +Kt +pO +nk +nk +nk +nk +nk +nk +nk +nk +nk +nk +pO +UH +JJ +hp +KB +IX +IX +KB +hp +JJ +UH +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(27,1,1) = {" +Up +Jn +UO +FS +UO +KR +rG +QI +Xk +Qt +SR +EM +EM +Hc +mB +gd +UO +yE +Up +Up +Up +Up +Up +EM +EM +Up +Up +kH +TY +kH +TY +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +AP +Ka +Ka +Ka +sO +YM +Ka +Ka +Ka +hd +pO +nk +JQ +Vk +nk +bq +bq +bq +bq +bq +nk +pO +Vy +hp +JJ +KB +tS +tS +KB +JJ +hp +Vy +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(28,1,1) = {" +Up +Up +Up +Up +Up +Up +Up +Up +Bl +hi +SR +EM +EM +su +BM +jl +UO +UO +Up +Eh +qd +ux +Xm +UO +UO +sm +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +AP +Ka +Ka +Ka +sO +YM +Ka +Ka +Ka +hd +pO +nk +JQ +Vk +nk +bq +bq +bq +bq +bq +nk +pO +UH +JJ +hp +KB +ld +ld +KB +hp +JJ +UH +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(29,1,1) = {" +Up +ax +gc +kQ +bI +nN +GA +Up +EM +EM +EM +EM +EM +UO +UO +UO +UO +hE +Up +Oz +UO +UO +UO +UO +UO +nX +Up +kH +TY +kH +TY +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +AP +Ka +Ka +Ka +sO +YM +Ka +Ka +Ka +hd +pO +nk +JQ +Vk +nk +bq +bq +bq +bq +bq +nk +pO +Vy +hp +JJ +KB +IW +IW +KB +JJ +hp +Vy +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(30,1,1) = {" +Up +PQ +UO +TO +Vr +UO +jq +Up +EM +EM +EM +EM +EM +UO +UO +UO +UO +XZ +Up +Tw +UO +dw +QA +ro +UO +Jy +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +pO +Iv +wC +wC +wC +tc +lc +AD +AD +AD +Qg +pO +nk +nk +nk +nk +nk +nk +nk +nk +nk +nk +pO +UH +JJ +hp +KB +IX +IX +KB +hp +JJ +UH +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(31,1,1) = {" +Up +Cc +UO +Bh +UO +UO +Ui +Up +EM +EM +SR +er +ko +Vu +AV +gk +fF +CT +Up +zs +UO +Pq +At +OF +UO +yI +Up +kH +TY +kH +TY +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +TY +kH +TY +kH +TY +kH +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +pO +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(32,1,1) = {" +Up +xK +UO +UO +EM +EM +EM +EM +EM +EM +SR +Up +Up +Up +Up +Up +Up +Up +Up +xY +UO +UO +UO +UO +UO +uL +Up +kH +kH +kH +kH +kH +yp +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +MD +yp +kH +kH +kH +kH +kH +TY +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(33,1,1) = {" +Up +CM +UO +UO +EM +EM +EM +EM +EM +EM +EM +EM +EM +zw +nK +La +OL +dk +Up +CD +UO +aw +Wx +Fb +UO +wf +Up +kH +TY +kH +TY +kH +yp +yp +yp +yp +yp +yp +yp +yp +HQ +yp +HQ +yp +yp +fG +yp +yp +HQ +yp +HQ +yp +yp +yp +yp +yp +yp +yp +yp +kH +TY +kH +TY +kH +TY +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(34,1,1) = {" +Up +Ca +RA +UO +oL +Vw +SR +Up +EM +EM +EM +EM +EM +UO +UO +UO +UO +lA +Up +BX +UO +UO +UO +UO +UO +wh +Up +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +yp +MD +yp +MD +yp +kH +kH +kH +yp +MD +yp +MD +yp +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +TY +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(35,1,1) = {" +Up +Up +Up +UO +Up +Up +Up +Up +EM +EM +Up +Up +UO +UO +UO +UO +UO +cQ +Up +yX +UO +JW +rP +yH +UO +dA +Up +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +yp +MD +fG +MD +fG +kH +kH +kH +fG +MD +fG +MD +yp +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(36,1,1) = {" +Up +WT +Bz +UO +UO +Up +GG +UO +EM +EM +ZA +Up +LW +UO +UO +UO +UO +Ky +Up +MF +UO +wp +Fk +iM +UO +DM +Up +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +yp +MD +fG +MD +fG +kH +kH +kH +fG +MD +fG +MD +yp +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +TY +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(37,1,1) = {" +Up +mM +UO +UO +UO +Up +we +UO +UO +UO +kU +Up +Fp +UO +UO +UO +UO +UO +Up +Fi +UO +UO +UO +UO +UO +TN +Up +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +yp +MD +fG +MD +fG +kH +kH +kH +fG +MD +fG +MD +yp +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +TY +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(38,1,1) = {" +Up +eD +qh +KG +UO +Up +pC +xN +DB +dn +yM +Up +Up +UO +Mj +Xa +AW +ou +Up +SK +Py +UO +UO +UO +jm +vb +Up +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +yp +MD +yp +MD +yp +kH +kH +kH +yp +MD +yp +MD +yp +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +TY +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(39,1,1) = {" +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +Up +UO +KH +UO +Up +Up +Up +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +yp +bM +yp +bM +yp +yp +fG +yp +yp +bM +yp +bM +yp +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +TY +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(40,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +Up +ah +OD +ah +Up +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +dx +dx +dx +dx +GK +dx +yY +dx +ez +ez +ez +dx +GK +dx +GK +dx +dx +ez +ez +dx +dx +dx +dx +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(41,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +rR +kH +Do +Do +Do +Do +Do +LA +Do +lC +Do +Do +Do +kH +kH +kH +kH +kH +kH +kH +kH +kH +dx +Iq +Iq +Iq +Iq +dx +AM +AM +mC +mC +mC +AM +AM +XF +AM +AM +mC +mC +mC +mC +mC +dx +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(42,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +Do +rD +rD +rD +rD +rD +bJ +rD +rD +rD +Do +RP +kH +kH +kH +kH +kH +kH +kH +kH +ez +Iq +Iq +Iq +Iq +Iq +el +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +mC +ez +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(43,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +Do +rD +rD +rD +rD +rD +rD +rD +rD +rD +SV +Dt +kH +kH +kH +kH +kH +kH +kH +dx +dx +iP +Iq +Iq +Iq +ez +el +RI +mC +mC +mC +mC +mC +RI +mC +mC +mC +mC +mC +RI +mC +ez +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(44,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +Do +ii +rD +rD +rD +rD +rD +rD +rD +ao +SV +Dt +kH +kH +kH +dx +dx +ez +dx +dx +dx +Iq +Iq +Iq +Iq +ez +el +RI +dN +dx +Cx +dx +dN +RI +Cx +dx +dN +dx +Cx +RI +If +dx +IG +IG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(45,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +Do +rD +rD +rD +rD +rD +rD +rD +rD +rD +SV +Dt +kH +kH +kH +dx +Jq +Uq +ug +Kg +dx +Iq +Iq +Iq +Iq +dx +el +RI +mC +mC +mC +mC +mC +RI +mC +mC +mC +mC +mC +RI +mC +dx +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(46,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +Do +rD +rD +rD +Is +rD +rD +rD +rD +rD +Do +Az +kH +kH +kH +ez +Jq +Jq +Jq +EU +dx +dx +ez +Iq +dx +dx +eR +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +mC +ez +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(47,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +Do +Do +Do +Do +Do +Do +Do +Do +Do +Do +Do +kH +kH +kH +kH +ez +Ot +Jq +Jq +Jq +dx +HT +HT +hI +hI +ez +el +RI +mC +mC +mC +mC +mC +RI +mC +mC +mC +mC +mC +RI +If +dx +IG +IG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(48,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +ez +Oe +Jq +Jq +Jq +AM +Vh +RI +RI +el +RI +el +RI +dN +dx +Cx +dx +dN +RI +Cx +dx +dN +dx +Cx +RI +mC +ez +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(49,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +ez +CR +Jq +Jq +Jq +AM +Vh +RI +RI +el +RI +el +RI +mC +mC +mC +mC +mC +RI +mC +mC +mC +mC +mC +RI +mC +ez +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(50,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +cb +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +ez +tN +Jq +Jq +Jq +dx +Kn +Kn +Jv +Jv +ez +el +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +RI +mC +dx +IG +IG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(51,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +ez +Jq +Jq +Jq +EU +dx +dx +AM +AM +dx +dx +mC +AM +AM +AM +mC +mC +mC +cN +mC +mC +RI +RI +mC +mC +mC +ez +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(52,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +dx +Uq +Uq +dP +Hw +dx +mC +Jv +Kn +wM +dx +dx +dx +AM +AM +dx +dx +dx +dx +dx +ez +RI +RI +ez +dx +dx +dx +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(53,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +dx +dx +ez +dx +dx +dx +mC +el +Lg +mC +dx +mC +mC +AM +AM +mC +Ag +mC +dx +Zr +Jt +SU +SU +gq +ov +Zr +dx +IG +IG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(54,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +dx +dx +mH +el +Lg +mC +dx +AM +za +NT +NT +NT +NT +th +AM +Zr +Jt +SU +SU +gq +Zr +Zr +ez +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(55,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +ez +mC +el +Lg +mC +dx +uS +RQ +Qc +Qc +Qc +Qc +cT +AM +Zr +Jt +SU +SU +gq +Zr +Zr +ez +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(56,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +dx +mC +Bo +vM +mC +dx +mC +mC +mC +mC +mC +mC +mC +dx +Zr +wJ +jQ +jQ +IR +Zr +Zr +dx +WP +KD +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(57,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +dx +ez +kb +kb +ez +dx +dx +ez +ez +ez +ez +ez +dx +dx +dx +dx +ez +ez +ez +ez +dx +dx +dx +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(58,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(59,1,1) = {" +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +lG +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(60,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(61,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(62,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(63,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(64,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(65,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(66,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(67,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(68,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(69,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(70,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(71,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(72,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(73,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(74,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(75,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(76,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(77,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(78,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(79,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(80,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(81,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(82,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(83,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(84,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(85,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(86,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(87,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(88,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(89,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(90,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(91,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(92,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(93,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(94,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(95,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(96,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(97,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(98,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(99,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(100,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(101,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(102,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(103,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(104,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(105,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(106,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(107,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(108,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(109,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(110,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(111,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(112,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(113,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(114,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(115,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(116,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(117,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(118,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(119,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(120,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(121,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(122,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(123,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(124,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(125,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(126,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(127,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(128,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(129,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(130,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(131,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(132,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(133,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(134,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(135,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(136,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(137,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(138,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(139,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(140,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(141,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(142,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(143,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(144,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(145,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(146,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(147,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(148,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(149,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(150,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(151,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(152,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(153,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(154,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(155,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(156,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(157,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(158,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(159,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(160,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(161,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(162,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(163,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(164,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(165,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(166,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(167,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(168,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(169,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(170,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(171,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(172,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(173,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(174,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(175,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(176,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(177,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(178,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(179,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(180,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(181,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(182,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(183,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(184,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(185,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(186,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(187,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(188,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(189,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(190,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(191,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(192,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(193,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(194,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(195,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(196,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(197,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(198,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(199,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(200,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(201,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(202,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(203,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(204,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(205,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(206,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(207,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(208,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(209,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(210,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(211,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(212,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(213,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(214,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(215,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(216,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(217,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(218,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(219,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(220,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(221,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(222,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(223,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(224,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(225,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(226,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(227,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(228,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(229,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(230,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(231,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(232,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(233,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(234,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(235,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(236,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(237,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(238,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(239,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(240,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(241,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(242,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(243,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(244,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(245,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(246,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(247,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(248,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(249,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(250,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(251,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(252,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(253,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(254,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} +(255,1,1) = {" +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +kH +"} diff --git a/_maps/map_files220/shuttles/ferry_medical.dmm b/_maps/map_files220/shuttles/ferry_medical.dmm index 8d8344209c4c..2938962b830a 100644 --- a/_maps/map_files220/shuttles/ferry_medical.dmm +++ b/_maps/map_files220/shuttles/ferry_medical.dmm @@ -133,9 +133,7 @@ /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/transport) "t" = ( -/obj/machinery/economy/vending/medical{ - req_access_txt = "0" - }, +/obj/machinery/economy/vending/medical, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/transport) "w" = ( diff --git a/_maps/map_files220/stations/boxstation.dmm b/_maps/map_files220/stations/boxstation.dmm index e0261152db75..48300fe7ac8a 100644 --- a/_maps/map_files220/stations/boxstation.dmm +++ b/_maps/map_files220/stations/boxstation.dmm @@ -134,14 +134,9 @@ /area/station/security/armory/secure) "abP" = ( /obj/machinery/suit_storage_unit/security/secure, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "vault" }, /area/station/security/armory/secure) "abY" = ( @@ -281,24 +276,23 @@ /turf/simulated/floor/plasteel, /area/station/security/main) "acH" = ( -/obj/structure/rack, -/obj/effect/turf_decal/delivery/red/hollow, -/obj/structure/window/reinforced, -/obj/item/grenade/barrier{ - pixel_x = 5; - pixel_y = 5 +/obj/structure/table/reinforced, +/obj/item/storage/box/trackimp{ + pixel_y = 8; + pixel_x = -6 }, -/obj/item/grenade/barrier{ - pixel_x = 3; - pixel_y = 3 +/obj/item/storage/box/chemimp{ + pixel_x = 6; + pixel_y = 8 }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = -3; - pixel_y = -3 +/obj/item/storage/lockbox/mindshield, +/obj/item/storage/lockbox/mindshield{ + pixel_y = 4 }, +/obj/item/storage/toolbox/mechanical, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "vault" }, /area/station/security/armory/secure) "acK" = ( @@ -396,42 +390,38 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "adb" = ( -/obj/structure/rack, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/box/trackimp, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 +/obj/structure/shelf/security, +/obj/item/grenade/barrier{ + pixel_x = -6; + pixel_y = 12 }, -/obj/item/storage/toolbox/mechanical, -/obj/effect/turf_decal/delivery/red/hollow, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 +/obj/item/grenade/barrier{ + pixel_x = 1; + pixel_y = 12 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/item/grenade/barrier{ + pixel_x = 8; + pixel_y = 12 }, -/area/station/security/armory/secure) -"adg" = ( -/obj/structure/dispenser/oxygen, -/obj/structure/window/reinforced{ - dir = 1 +/obj/item/grenade/barrier{ + pixel_x = -6 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/item/grenade/barrier{ + pixel_x = 1 }, -/area/station/security/armory/secure) -"adh" = ( -/obj/machinery/suit_storage_unit/security/secure, -/obj/structure/window/reinforced{ - dir = 1 +/obj/item/grenade/barrier{ + pixel_x = 8 }, -/obj/structure/window/reinforced{ - dir = 4 +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" }, +/area/station/security/armory/secure) +"adg" = ( +/obj/structure/dispenser/oxygen, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "vault" }, /area/station/security/armory/secure) "adi" = ( @@ -468,9 +458,15 @@ /area/station/security/main) "adm" = ( /obj/structure/table/reinforced, -/obj/item/gun/energy/laser/practice, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_y = 4; + pixel_x = 6 + }, /obj/machinery/firealarm/directional/east, +/obj/item/paper/firingrange{ + pixel_y = 4; + pixel_x = -6 + }, /turf/simulated/floor/plating, /area/station/security/range) "ado" = ( @@ -547,32 +543,25 @@ /turf/simulated/floor/plasteel, /area/station/security/permabrig) "adP" = ( -/obj/structure/rack, -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ +/obj/structure/shelf/security, +/obj/item/storage/fancy/shell/rubbershot{ pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_y = -3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_y = 3 }, -/obj/item/storage/box/beanbag{ +/obj/item/storage/fancy/shell/beanbag{ pixel_y = 3 }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -721,6 +710,7 @@ /obj/machinery/computer/brigcells{ dir = 4 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" @@ -772,7 +762,7 @@ /obj/machinery/button/windowtint/east{ id = "HoS"; pixel_y = -8; - req_one_access_txt = "58" + req_access = list(58) }, /obj/machinery/keycard_auth/east{ pixel_y = 2 @@ -806,6 +796,7 @@ /obj/structure/chair/office/dark{ dir = 4 }, +/obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "redcorner" @@ -844,7 +835,6 @@ /obj/machinery/camera{ c_tag = "Brig Secure Armory North" }, -/obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "vault" @@ -905,24 +895,8 @@ /turf/simulated/floor/plasteel, /area/station/security/prisonershuttle) "afe" = ( -/obj/structure/window/reinforced, -/obj/structure/rack/gunrack, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/gun/energy/disabler{ - pixel_x = -8 - }, -/obj/item/gun/energy/disabler{ - pixel_x = -4 - }, -/obj/item/gun/energy/disabler, -/obj/item/gun/energy/disabler{ - pixel_x = 4 - }, -/obj/item/gun/energy/disabler{ - pixel_x = 8 - }, +/obj/structure/shelf/security, +/obj/item/storage/fancy/shell/tranquilizer, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -941,14 +915,14 @@ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 6; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control/shutter/south{ desc = "A remote control-switch to lock down the prison wing's blast doors"; id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = -6; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -993,14 +967,27 @@ /turf/simulated/floor/engine, /area/station/science/toxins/mixing) "afx" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/flashbangs, -/obj/structure/window/reinforced{ - dir = 1 - }, +/obj/structure/shelf/security, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/item/clothing/glasses/sunglasses_fake{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/storage/box/flashbangs, +/obj/item/clothing/glasses/sunglasses_fake{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = 6; + pixel_y = 10 + }, /turf/simulated/floor/plasteel, /area/station/security/range) "afK" = ( @@ -1137,7 +1124,6 @@ /area/station/maintenance/asmaint2) "agS" = ( /obj/machinery/flasher/portable, -/obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "vault" @@ -1232,7 +1218,7 @@ name = "Office Door"; pixel_x = 6; pixel_y = 15; - req_one_access_txt = "58" + req_access = list(58) }, /obj/machinery/door_control/shutter{ desc = "A remote control-switch to lock down the prison wing's blast doors"; @@ -1240,14 +1226,14 @@ name = "Prison Wing Lockdown"; pixel_x = 6; pixel_y = 6; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door_control/shutter{ id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 6; pixel_y = -3; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/carpet, /area/station/command/office/hos) @@ -1294,25 +1280,19 @@ /turf/space, /area/shuttle/gamma/station) "ahG" = ( -/obj/structure/rack/gunrack, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, +/obj/structure/gunrack, /obj/item/gun/projectile/shotgun/riot{ - pixel_x = 8 + pixel_y = 12 }, /obj/item/gun/projectile/shotgun/riot{ - pixel_x = 4 + pixel_y = 8 }, -/obj/item/gun/projectile/shotgun/riot, /obj/item/gun/projectile/shotgun/riot{ - pixel_x = -4 + pixel_y = 4 }, +/obj/item/gun/projectile/shotgun/riot, /obj/item/gun/projectile/shotgun/riot{ - pixel_x = -8 + pixel_y = -4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -1417,28 +1397,32 @@ }, /area/station/security/brig) "aif" = ( -/obj/structure/rack, -/obj/item/storage/box/teargas{ - pixel_x = -3; - pixel_y = -3 +/obj/structure/shelf/security, +/obj/item/storage/box/handcuffs{ + pixel_x = -8; + pixel_y = -4 }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs{ - pixel_x = -2; - pixel_y = -2 +/obj/item/storage/box/handcuffs{ + pixel_y = -4 + }, +/obj/item/storage/box/handcuffs{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/storage/box/teargas{ + pixel_x = -8; + pixel_y = 8 }, -/obj/item/storage/box/handcuffs, /obj/item/storage/box/seccarts{ - pixel_x = 3; - pixel_y = 2 + pixel_y = 8 }, -/obj/effect/turf_decal/delivery/red/hollow, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 +/obj/item/storage/box/flashbangs{ + pixel_x = 8; + pixel_y = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "vault" }, /area/station/security/armory/secure) "aig" = ( @@ -1449,13 +1433,25 @@ /area/station/command/office/hos) "aij" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/item/target/syndicate, -/obj/item/target/syndicate, -/obj/item/target/syndicate, -/obj/item/target, -/obj/item/target, +/obj/item/target/syndicate{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/target/syndicate{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/target/syndicate{ + pixel_y = 8 + }, /obj/item/target, +/obj/item/target{ + pixel_x = 8 + }, +/obj/item/target{ + pixel_x = -8 + }, +/obj/structure/shelf/security, /turf/simulated/floor/plasteel, /area/station/security/range) "aio" = ( @@ -1470,34 +1466,16 @@ }, /area/station/security/armory/secure) "aip" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/rack, -/obj/item/storage/box/tranquilizer, -/obj/structure/window/reinforced{ - dir = 8 - }, +/obj/structure/gunrack, +/obj/item/gun/energy/ionrifle, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" }, /area/station/security/armory/secure) "aiq" = ( -/obj/structure/rack/gunrack, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/gun/energy/laser{ - pixel_x = -4 - }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser{ - pixel_x = 4 - }, +/obj/structure/rack, +/obj/item/clothing/suit/hooded/ablative, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -1557,12 +1535,20 @@ }, /area/station/security/armory/secure) "aiB" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 8 +/obj/structure/gunrack, +/obj/item/gun/energy/disabler{ + pixel_y = 8 + }, +/obj/item/gun/energy/disabler{ + pixel_y = 4 + }, +/obj/item/gun/energy/disabler, +/obj/item/gun/energy/disabler{ + pixel_y = -4 + }, +/obj/item/gun/energy/disabler{ + pixel_y = -8 }, -/obj/item/clothing/suit/hooded/ablative, -/obj/item/gun/energy/ionrifle, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -1579,16 +1565,13 @@ }, /area/station/security/brig) "aiN" = ( -/obj/structure/rack/gunrack, -/obj/structure/window/reinforced{ - dir = 4 - }, +/obj/structure/gunrack, /obj/item/gun/energy/gun{ - pixel_x = -4 + pixel_y = 8 }, /obj/item/gun/energy/gun, /obj/item/gun/energy/gun{ - pixel_x = 4 + pixel_y = -8 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -1741,27 +1724,13 @@ }, /area/station/security/brig) "ajq" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/clothing/suit/armor/bulletproof/sec{ - pixel_x = -3 - }, -/obj/item/clothing/suit/armor/bulletproof/sec, -/obj/item/clothing/suit/armor/bulletproof/sec{ - pixel_x = 3 - }, -/obj/item/clothing/head/helmet/alt{ - pixel_y = 8; - pixel_x = -3 - }, -/obj/item/clothing/head/helmet/alt{ +/obj/structure/gunrack, +/obj/item/gun/energy/laser{ pixel_y = 8 }, -/obj/item/clothing/head/helmet/alt{ - pixel_y = 8; - pixel_x = 3 +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser{ + pixel_y = -8 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -1769,19 +1738,16 @@ }, /area/station/security/armory/secure) "ajr" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/sslr{ - pixel_x = -4 + pixel_y = 8 }, -/obj/item/gun/projectile/automatic/sslr, /obj/item/gun/projectile/automatic/sslr{ - pixel_x = 4 + pixel_y = 4 }, +/obj/item/gun/projectile/automatic/sslr, /obj/item/gun/projectile/automatic/sslr{ - pixel_x = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 + pixel_y = -4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -1828,21 +1794,24 @@ }, /area/station/security/brig) "ajK" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 1 +/obj/structure/shelf/security, +/obj/item/clothing/suit/armor/bulletproof/sec{ + pixel_x = -6 }, -/obj/structure/window/reinforced{ - dir = 4 +/obj/item/clothing/suit/armor/bulletproof/sec, +/obj/item/clothing/suit/armor/bulletproof/sec{ + pixel_x = 6 }, -/obj/item/clothing/head/helmet/riot{ - pixel_y = 3; - pixel_x = 3 +/obj/item/clothing/head/helmet/alt{ + pixel_y = 8; + pixel_x = -6 }, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot{ - pixel_y = -3; - pixel_x = -3 +/obj/item/clothing/head/helmet/alt{ + pixel_y = 8 + }, +/obj/item/clothing/head/helmet/alt{ + pixel_y = 8; + pixel_x = 6 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -1907,7 +1876,6 @@ "akl" = ( /obj/machinery/flasher/portable, /obj/machinery/status_display/directional/north, -/obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "vault" @@ -1940,18 +1908,24 @@ }, /area/station/security/permabrig) "akt" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 4 - }, +/obj/structure/shelf/security, /obj/item/clothing/suit/armor/riot/sec{ - pixel_x = 3; - pixel_y = 3 + pixel_x = -6 }, /obj/item/clothing/suit/armor/riot/sec, /obj/item/clothing/suit/armor/riot/sec{ - pixel_y = -3; - pixel_x = -3 + pixel_x = 6 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_y = 8; + pixel_x = -6 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_y = 8 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_y = 8; + pixel_x = 6 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -1959,19 +1933,13 @@ }, /area/station/security/armory/secure) "aku" = ( -/obj/structure/rack, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, +/obj/structure/shelf/security, /obj/item/shield/riot{ - pixel_x = 3; - pixel_y = 3 + pixel_x = -6 }, /obj/item/shield/riot, /obj/item/shield/riot{ - pixel_x = -3; - pixel_y = -3 + pixel_x = 6 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -2165,15 +2133,15 @@ /obj/structure/table/wood, /obj/item/stamp/hop{ pixel_x = -6; - pixel_y = 10 + pixel_y = 11 }, /obj/item/stamp/granted{ pixel_x = -6; - pixel_y = 4 + pixel_y = 6 }, /obj/item/stamp/denied{ pixel_x = -6; - pixel_y = -2 + pixel_y = -1 }, /obj/item/folder/blue{ pixel_x = 6; @@ -2257,7 +2225,7 @@ }, /area/station/security/brig) "als" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/asmaint2) "alt" = ( @@ -2690,16 +2658,21 @@ }, /area/station/security/warden) "amG" = ( -/obj/structure/table/reinforced, +/obj/structure/shelf/security, /obj/item/reagent_containers/spray/pepper{ - pixel_x = -8 + pixel_y = 12 }, +/obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper{ - pixel_x = -4 + pixel_x = 8; + pixel_y = 12 }, -/obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper{ - pixel_x = 4 + pixel_x = -8; + pixel_y = 12 + }, +/obj/item/reagent_containers/spray/pepper{ + pixel_x = -8 }, /obj/item/reagent_containers/spray/pepper{ pixel_x = 8 @@ -2710,7 +2683,7 @@ }, /area/station/security/storage) "amH" = ( -/obj/structure/rack, +/obj/structure/table/reinforced, /obj/machinery/recharger/wallcharger{ pixel_y = 25 }, @@ -2718,14 +2691,16 @@ pixel_y = 35 }, /obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = -8 + pixel_y = 4; + pixel_x = 6 + }, +/obj/item/flash{ + pixel_y = 6; + pixel_x = -4 }, /obj/item/assembly/timer{ - pixel_y = -6 + pixel_x = 6 }, -/obj/item/flash, -/obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "red" @@ -2738,31 +2713,30 @@ /turf/simulated/floor/plasteel, /area/station/security/storage) "amJ" = ( -/obj/structure/rack, +/obj/structure/table/reinforced, /obj/structure/reagent_dispensers/peppertank/north, /obj/machinery/light/directional/north, -/obj/effect/turf_decal/delivery/red/hollow, /obj/item/clothing/accessory/holster{ - pixel_x = -6; - pixel_y = 6 + pixel_x = -8 }, /obj/item/clothing/accessory/holster{ - pixel_x = -3; - pixel_y = 3 + pixel_x = -4 }, +/obj/item/clothing/accessory/holster, /obj/item/clothing/accessory/holster{ - pixel_x = 3; - pixel_y = -3 + pixel_x = 4 }, /obj/item/clothing/accessory/holster{ - pixel_x = 6; - pixel_y = -6 + pixel_x = 8 }, -/obj/item/clothing/accessory/holster, /obj/item/restraints/handcuffs{ - pixel_y = -4 + pixel_y = 8; + pixel_x = -4 + }, +/obj/item/restraints/handcuffs{ + pixel_y = 8; + pixel_x = 4 }, -/obj/item/restraints/handcuffs, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "red" @@ -2941,7 +2915,7 @@ /area/station/engineering/solar/fore_starboard) "anp" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/engineering/utility) "anq" = ( @@ -3235,20 +3209,25 @@ }, /area/station/security/warden) "aoz" = ( -/obj/structure/table/reinforced, +/obj/structure/shelf/security, /obj/item/radio/security{ - pixel_x = -8 + pixel_y = 12 }, +/obj/item/radio/security, /obj/item/radio/security{ - pixel_x = -4 + pixel_x = -8; + pixel_y = 12 }, -/obj/item/radio/security, /obj/item/radio/security{ - pixel_x = 4 + pixel_x = 8; + pixel_y = 12 }, /obj/item/radio/security{ pixel_x = 8 }, +/obj/item/radio/security{ + pixel_x = -8 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -3414,7 +3393,7 @@ /turf/simulated/floor/plasteel, /area/station/security/processing) "apd" = ( -/obj/structure/closet/secure_closet/evidence, +/obj/structure/shelf/security, /obj/machinery/alarm/directional/west, /obj/machinery/light/small/directional/west, /turf/simulated/floor/plasteel{ @@ -3556,7 +3535,7 @@ "apy" = ( /obj/machinery/door/window/reinforced/normal{ dir = 8; - req_one_access_txt = "63" + req_access = list(63) }, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airlock/windoor/access/any/security/general{ @@ -3615,6 +3594,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "red" @@ -4218,7 +4198,7 @@ }, /area/station/public/dorms) "asf" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/fore) "asg" = ( @@ -4391,8 +4371,7 @@ "asO" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/wood/fancy/cherry, /area/station/legal/lawoffice) @@ -4440,12 +4419,12 @@ /obj/machinery/door_control/normal/east{ id = "BrigRight"; name = "Brig Foyer Right Doors"; - req_one_access_txt = "63" + req_access = list(63) }, /obj/machinery/door_control/normal/east{ pixel_y = 8; name = "Brig Foyer Left Doors"; - req_one_access_txt = "63"; + req_access = list(63); desc = "A remote control switch for the brig foyer."; id = "BrigLeft" }, @@ -4454,7 +4433,7 @@ desc = "A remote control switch for the brig foyer."; id = "BrigEast"; name = "Brig Foyer East Doors"; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 6; @@ -4547,7 +4526,7 @@ "atp" = ( /obj/machinery/door/window/reinforced/normal{ dir = 8; - req_one_access_txt = "63" + req_access = list(63) }, /obj/effect/mapping_helpers/airlock/windoor/access/any/security/general{ dir = 8 @@ -4651,8 +4630,7 @@ "atN" = ( /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -4701,7 +4679,9 @@ "atY" = ( /obj/machinery/light_switch/west, /obj/structure/rack, -/obj/machinery/syndicatebomb/training, +/obj/machinery/syndicatebomb/training{ + pixel_y = 3 + }, /turf/simulated/floor/plasteel, /area/station/security/range) "aua" = ( @@ -4736,6 +4716,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 }, +/obj/item/radio/intercom/directional/west, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkred" @@ -4759,7 +4740,6 @@ }, /area/station/security/permabrig) "aul" = ( -/obj/item/radio/intercom/directional/south, /obj/machinery/firealarm/directional/east, /obj/structure/rack, /obj/item/storage/box/handcuffs{ @@ -4774,6 +4754,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, @@ -5044,7 +5025,7 @@ /obj/structure/cable, /obj/machinery/button/windowtint/south{ id = "Processing"; - req_one_access_txt = "63" + req_access = list(63) }, /obj/machinery/light/directional/east, /turf/simulated/floor/plasteel, @@ -5364,9 +5345,6 @@ /area/station/security/prison/cell_block/A) "awc" = ( /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, /obj/machinery/door/poddoor/preopen{ id_tag = "Secure Gate"; name = "Security Blast Door" @@ -6156,7 +6134,7 @@ "ayH" = ( /obj/machinery/button/windowtint/west{ id = "IAA"; - req_one_access_txt = "38" + req_access = list(38) }, /obj/machinery/economy/vending/lawdrobe, /turf/simulated/floor/wood/fancy/cherry, @@ -6738,7 +6716,8 @@ "azY" = ( /obj/machinery/button/windowtint/west{ id = "Interrogation"; - req_one_access_txt = "63" + req_access = list(63); + pixel_y = -6 }, /obj/structure/cable{ d1 = 1; @@ -6749,17 +6728,20 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/machinery/light_switch/west{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/station/security/interrogation/observation) "aAa" = ( -/obj/machinery/status_display/directional/east, /obj/structure/cable{ d1 = 1; d2 = 8; icon_state = "1-8" }, +/obj/machinery/light_switch/east, /turf/simulated/floor/carpet/green, /area/station/public/arcade) "aAb" = ( @@ -6775,7 +6757,7 @@ dir = 8; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "aAd" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, @@ -6888,9 +6870,10 @@ "aAC" = ( /obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "bluecorner" }, -/area/station/security/interrogation/observation) +/area/station/hallway/secondary/exit) "aAE" = ( /obj/machinery/light/directional/west, /obj/machinery/light_switch/west, @@ -6909,7 +6892,7 @@ /turf/simulated/floor/wood/fancy/cherry, /area/station/legal/lawoffice) "aAH" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -6957,13 +6940,13 @@ /obj/machinery/button/windowtint/east{ id = "Magistrate"; pixel_y = 6; - req_one_access_txt = "74" + req_access = list(74) }, /obj/machinery/door_control/normal/east{ id = "magistrateofficedoor"; name = "Office Door"; pixel_y = -6; - req_one_access_txt = "74" + req_access = list(74) }, /turf/simulated/floor/carpet, /area/station/legal/magistrate) @@ -7371,8 +7354,7 @@ /obj/machinery/status_display/directional/north, /obj/machinery/alarm/directional/west, /obj/machinery/computer/prisoner{ - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/wood/fancy/cherry, /area/station/legal/magistrate) @@ -7420,6 +7402,7 @@ /area/station/legal/magistrate) "aCl" = ( /obj/structure/closet/secure_closet/magistrate, +/obj/machinery/light_switch/north, /turf/simulated/floor/wood/fancy/cherry, /area/station/legal/magistrate) "aCo" = ( @@ -7562,10 +7545,15 @@ /area/station/security/execution) "aCI" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags{ + pixel_x = 4; + pixel_y = 8 + }, /obj/item/assembly/signaler{ code = 6; - frequency = 1445 + frequency = 1445; + pixel_x = -6; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -7580,7 +7568,7 @@ /obj/machinery/door_control/shutter/north{ id = "brig_courtroom"; name = "Brig Courtroom Shutter Control"; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plating, /area/station/security/brig) @@ -7597,7 +7585,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/abandonedbar) "aCN" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/abandonedbar) "aCO" = ( @@ -7690,6 +7678,7 @@ /obj/structure/table, /obj/item/camera, /obj/machinery/light/small/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -7974,7 +7963,7 @@ /area/station/legal/courtroom) "aDR" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "aDS" = ( @@ -8057,6 +8046,7 @@ /obj/structure/chair/comfy/brown, /obj/effect/landmark/start/detective, /obj/machinery/light/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "grimy" }, @@ -8079,7 +8069,7 @@ /obj/machinery/button/windowtint/north{ id = "Detective"; pixel_x = -8; - req_one_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -8666,7 +8656,7 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/abandonedbar) "aGd" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/station/maintenance/abandonedbar) @@ -8856,7 +8846,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aGL" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fore) "aGM" = ( @@ -9007,7 +8997,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "aHi" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/fpmaint2) "aHj" = ( @@ -9103,7 +9093,7 @@ id = "Courtroom" }, /turf/simulated/floor/plating, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aHB" = ( /obj/structure/chair/sofa/pew/left{ dir = 8 @@ -9112,16 +9102,17 @@ c_tag = "Courtroom Lobby" }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aHC" = ( /obj/item/kirbyplants, -/obj/machinery/firealarm/directional/south, +/obj/machinery/power/apc/directional/south, +/obj/structure/cable, /turf/simulated/floor/wood/fancy, /area/station/legal/courtroom) "aHD" = ( /obj/structure/chair, /turf/simulated/floor/wood/fancy/cherry, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aHE" = ( /turf/simulated/wall/r_wall, /area/station/security/detective) @@ -9134,7 +9125,7 @@ dir = 8 }, /turf/simulated/floor/wood/fancy/cherry, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aHH" = ( /obj/item/kirbyplants, /obj/machinery/alarm/directional/west, @@ -9181,7 +9172,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aHP" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fsmaint) "aHR" = ( @@ -9230,7 +9221,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel/freezer, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "aIb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -9293,8 +9284,7 @@ /obj/item/stock_parts/cell/high/empty, /obj/item/toy/figure/crew/ninja, /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/effect/spawner/random_spawners/cobweb_right_frequent, /turf/simulated/floor/plating, @@ -9311,7 +9301,7 @@ /turf/simulated/floor/plasteel, /area/station/public/dorms) "aIq" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fore) "aIu" = ( @@ -9344,7 +9334,7 @@ /obj/machinery/door/window/classic/normal{ dir = 1; name = "Kitchen"; - req_one_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) @@ -9464,7 +9454,7 @@ /area/station/maintenance/fpmaint) "aIS" = ( /obj/structure/grille, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aIT" = ( @@ -9530,13 +9520,13 @@ anchored = 1 }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aJc" = ( /obj/structure/chair/sofa/pew/left{ dir = 8 }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aJd" = ( /obj/structure/window/basic{ dir = 8 @@ -9546,7 +9536,7 @@ dir = 10 }, /turf/simulated/floor/wood/fancy/cherry, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aJe" = ( /obj/structure/table, /obj/item/book/manual/wiki/security_space_law, @@ -9582,7 +9572,6 @@ /turf/simulated/floor/wood/oak, /area/station/security/detective) "aJl" = ( -/obj/machinery/light_switch/south, /obj/structure/window/basic{ dir = 4 }, @@ -9645,7 +9634,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "aJx" = ( /obj/structure/table/reinforced, /obj/item/razor{ @@ -9661,7 +9650,7 @@ /area/station/maintenance/fore) "aJy" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aJz" = ( @@ -9850,7 +9839,7 @@ anchored = 1 }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aKw" = ( /obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/wood/fancy/cherry, @@ -10004,7 +9993,7 @@ /turf/simulated/floor/carpet/black, /area/station/maintenance/fsmaint) "aKW" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fpmaint2) "aKX" = ( @@ -10128,6 +10117,10 @@ icon_state = "yellowcorner" }, /area/station/maintenance/fsmaint) +"aLx" = ( +/obj/machinery/light_switch/west, +/turf/simulated/floor/wood/fancy, +/area/station/legal/courtroom) "aLA" = ( /turf/simulated/wall, /area/station/service/mime) @@ -10208,8 +10201,8 @@ /obj/item/gavelhammer, /obj/machinery/button/windowtint{ id = "Courtroom"; - req_one_access_txt = "74;3"; - pixel_y = -12 + pixel_y = -12; + req_one_access = list(74,3) }, /turf/simulated/floor/carpet/black, /area/station/legal/courtroom) @@ -10241,8 +10234,13 @@ dir = 1 }, /obj/machinery/hologram/holopad, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aLY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -10250,8 +10248,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aMa" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -10269,7 +10272,7 @@ dir = 4 }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aMd" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -10511,7 +10514,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood/fancy/cherry, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aNc" = ( /obj/item/radio/intercom/directional/east, /turf/simulated/floor/plasteel{ @@ -10604,7 +10607,7 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "aNw" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/hallway/secondary/entry) "aNx" = ( @@ -10678,11 +10681,11 @@ /area/station/hallway/primary/fore) "aNM" = ( /turf/simulated/floor/wood/fancy/cherry, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aNP" = ( /obj/machinery/door/firedoor, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aNT" = ( /obj/machinery/status_display/directional/east, /turf/simulated/floor/plasteel{ @@ -10705,7 +10708,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "aNZ" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -10723,9 +10726,14 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/cable{ - d1 = 4; + d1 = 1; d2 = 8; - icon_state = "4-8" + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -10795,11 +10803,11 @@ }, /area/station/maintenance/fpmaint) "aOr" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fpmaint) "aOs" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aOv" = ( @@ -10823,11 +10831,6 @@ /obj/item/reagent_containers/drinks/drinkingglass{ pixel_x = -5 }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, /obj/structure/window/basic{ dir = 8 }, @@ -10868,6 +10871,11 @@ /area/station/legal/courtroom) "aOz" = ( /obj/machinery/alarm/directional/west, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/wood/fancy, /area/station/legal/courtroom) "aOB" = ( @@ -10998,7 +11006,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fpmaint2) "aPc" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fpmaint2) "aPd" = ( @@ -11014,7 +11022,7 @@ /obj/effect/mapping_helpers/airlock/autoname, /obj/machinery/access_button/north{ autolink_id = "apsolar_btn_ext"; - req_one_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -11042,7 +11050,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aPj" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fpmaint) "aPk" = ( @@ -11079,7 +11087,7 @@ }, /area/station/maintenance/fpmaint) "aPv" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -11090,7 +11098,7 @@ "aPx" = ( /obj/effect/spawner/window/grilled, /turf/simulated/floor/plating, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aPA" = ( /obj/structure/chair/wood{ dir = 1 @@ -11103,16 +11111,16 @@ }, /obj/machinery/ai_status_display/south, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aPC" = ( /obj/structure/chair/sofa/pew/right{ dir = 8 }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aPD" = ( /turf/simulated/floor/plasteel/stairs/left, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aPE" = ( /obj/item/radio/intercom/directional/south, /obj/machinery/light/directional/south, @@ -11120,12 +11128,12 @@ dir = 8 }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aPF" = ( /obj/machinery/economy/vending/cola, /obj/machinery/firealarm/directional/south, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aPG" = ( /obj/machinery/disposal, /obj/machinery/alarm/directional/south, @@ -11133,7 +11141,7 @@ dir = 1 }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "aPH" = ( /obj/item/kirbyplants, /turf/simulated/floor/plasteel{ @@ -11302,7 +11310,7 @@ /turf/simulated/floor/mineral/tranquillite, /area/station/service/mime) "aQe" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -11348,6 +11356,7 @@ pixel_y = 2 }, /obj/machinery/light/small/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -11440,7 +11449,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "aQy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -11483,7 +11492,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "aQD" = ( /obj/machinery/hologram/holopad, /obj/structure/disposalpipe/segment/corner{ @@ -11522,7 +11531,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aQJ" = ( -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/east, /obj/item/radio/intercom/directional/east, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -11603,6 +11612,7 @@ pixel_x = 4; pixel_y = 2 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whiteblue" @@ -11688,7 +11698,7 @@ /obj/structure/sign/electricshock{ pixel_y = -32 }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -11798,11 +11808,11 @@ /area/station/science/lobby) "aRP" = ( /obj/machinery/economy/vending/coffee, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/wood/fancy, /area/station/legal/courtroom) "aRQ" = ( -/obj/machinery/power/apc/directional/south, -/obj/structure/cable, +/obj/machinery/light_switch/south, /turf/simulated/floor/wood/fancy, /area/station/legal/courtroom) "aRR" = ( @@ -11888,8 +11898,13 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry) "aSk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/transparent/glass/reinforced, -/area/station/public/dorms) +/area/station/public/fitness) "aSl" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, @@ -11975,7 +11990,7 @@ dir = 6 }, /turf/simulated/floor/plasteel/dark, -/area/station/public/dorms) +/area/station/public/fitness) "aSN" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -12188,7 +12203,7 @@ dir = 4; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "aTG" = ( /obj/effect/spawner/random/trash, /obj/effect/spawner/random/trash, @@ -12584,7 +12599,7 @@ /area/station/medical/chemistry) "aUQ" = ( /turf/simulated/wall, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "aUR" = ( /obj/structure/cable{ d1 = 4; @@ -12628,7 +12643,7 @@ /turf/simulated/floor/plating, /area/station/engineering/dronefabricator) "aUY" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/electrical) "aUZ" = ( @@ -12661,7 +12676,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/garden) "aVg" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/public/storage/tools) "aVh" = ( @@ -12817,22 +12832,8 @@ }, /area/station/medical/reception) "aVN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "neutralcorner" - }, -/area/station/public/dorms) +/turf/simulated/floor/plasteel, +/area/station/supply/sorting) "aVO" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -12860,7 +12861,7 @@ /turf/simulated/floor/plating, /area/shuttle/arrival/station) "aWb" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plating, @@ -12995,7 +12996,6 @@ /area/station/public/storage/tools) "aWq" = ( /obj/structure/table, -/obj/machinery/light_switch/north, /obj/machinery/cell_charger{ pixel_x = 2; pixel_y = 4 @@ -13315,7 +13315,6 @@ /obj/structure/flora/junglebush/large{ pixel_y = -18 }, -/obj/machinery/light/directional/east, /turf/simulated/floor/grass/no_creep, /area/station/public/dorms) "aXg" = ( @@ -13355,7 +13354,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "aXj" = ( /obj/structure/morgue, /obj/machinery/camera{ @@ -13415,7 +13414,6 @@ /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "aXt" = ( -/obj/machinery/light/directional/north, /obj/machinery/computer/arcade, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) @@ -13540,22 +13538,30 @@ c_tag = "Vault"; dir = 4 }, -/obj/structure/closet/crate{ - name = "Gold Crate" +/obj/item/radio/intercom/directional/west, +/obj/structure/shelf/command, +/obj/item/stack/sheet/mineral/gold/fifty{ + pixel_x = -8; + pixel_y = -2 }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = -1; - pixel_y = 5 +/obj/item/stack/sheet/mineral/gold/fifty{ + pixel_y = -2 }, -/obj/item/stack/sheet/mineral/gold{ - pixel_y = 2 +/obj/item/stack/sheet/mineral/gold/fifty{ + pixel_y = -2; + pixel_x = 8 }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = 1; - pixel_y = -2 +/obj/item/coin/gold{ + pixel_y = 6; + pixel_x = -8 + }, +/obj/item/storage/belt/champion/wrestling{ + pixel_y = 8 + }, +/obj/item/coin/gold{ + pixel_y = 6; + pixel_x = 8 }, -/obj/item/radio/intercom/directional/west, -/obj/item/storage/belt/champion/wrestling, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "vault" @@ -13781,6 +13787,9 @@ /area/station/service/chapel) "aYA" = ( /obj/structure/table, +/obj/item/storage/fancy/candle_box/full{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "vault" @@ -13854,7 +13863,7 @@ /area/station/maintenance/fsmaint) "aYL" = ( /obj/structure/chair/comfy/shuttle, -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "aYM" = ( @@ -14171,7 +14180,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "aZN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -14203,14 +14212,11 @@ }, /area/station/security/checkpoint/secondary) "aZY" = ( -/obj/machinery/camera{ - c_tag = "Security Checkpoint"; - dir = 1 - }, /obj/machinery/alarm/directional/west, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "red" @@ -14262,25 +14268,31 @@ }, /area/station/ai_monitored/storage/eva) "baj" = ( -/obj/structure/rack, +/obj/effect/turf_decal/delivery/blue/hollow, +/obj/machinery/light/small/directional/north, +/obj/structure/shelf/command, /obj/item/clothing/shoes/magboots{ - pixel_x = 2; - pixel_y = 2 + pixel_x = -8; + pixel_y = -4 }, /obj/item/clothing/shoes/magboots{ - pixel_x = -3; - pixel_y = -3 + pixel_y = -4 }, -/obj/effect/turf_decal/delivery/blue/hollow, /obj/item/clothing/shoes/magboots{ - pixel_x = -3; - pixel_y = -3 + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/tank/jetpack/carbondioxide{ + pixel_y = 8; + pixel_x = -8 }, /obj/item/clothing/shoes/magboots{ - pixel_x = 2; - pixel_y = 2 + pixel_y = 8 + }, +/obj/item/tank/jetpack/carbondioxide{ + pixel_y = 8; + pixel_x = 8 }, -/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -14364,8 +14376,7 @@ /turf/simulated/wall, /area/station/service/chapel/office) "baA" = ( -/obj/structure/rack, -/obj/item/storage/fancy/candle_box/full, +/obj/structure/shelf, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "vault" @@ -14375,7 +14386,7 @@ /obj/structure/closet/coffin, /obj/machinery/door/window/classic/normal{ name = "Coffin Storage"; - req_one_access_txt = "22" + req_access = list(22) }, /obj/structure/window/reinforced{ dir = 8 @@ -14510,6 +14521,7 @@ /obj/item/analyzer{ pixel_y = -8 }, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bbk" = ( @@ -14559,17 +14571,23 @@ }, /area/station/public/dorms) "bbp" = ( -/obj/structure/table, +/obj/structure/shelf, +/obj/machinery/light_switch/east, /obj/item/stack/packageWrap{ - pixel_y = 12 + pixel_x = -6; + pixel_y = -4 }, /obj/item/stack/packageWrap{ - pixel_y = 8 + pixel_y = -4 }, /obj/item/stack/packageWrap{ - pixel_y = 4 + pixel_y = -4; + pixel_x = 6 + }, +/obj/item/stack/packageWrap{ + pixel_x = -6; + pixel_y = 8 }, -/obj/item/stack/packageWrap, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bbq" = ( @@ -14587,11 +14605,17 @@ /turf/simulated/floor/plasteel, /area/station/public/dorms) "bbv" = ( +/obj/machinery/light/directional/north, +/obj/machinery/power/apc/directional/north, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "bbw" = ( /obj/structure/railing/corner{ dir = 4 @@ -14856,6 +14880,7 @@ dir = 8 }, /obj/machinery/light/directional/east, +/obj/machinery/firealarm/directional/east, /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "bcn" = ( @@ -15014,7 +15039,7 @@ /obj/structure/chair/comfy/shuttle{ dir = 1 }, -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "bcO" = ( @@ -15200,6 +15225,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutralcorner" @@ -15295,9 +15321,15 @@ /area/station/command/office/hop) "bdA" = ( /obj/structure/rack, -/obj/item/tank/jetpack/carbondioxide, /obj/effect/turf_decal/delivery/white/hollow, -/obj/item/tank/jetpack/carbondioxide, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = -4; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -15432,15 +15464,19 @@ /turf/simulated/floor/plating, /area/station/service/chapel) "bea" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/structure/cable{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 4; + icon_state = "1-4" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -15492,10 +15528,13 @@ /area/station/science/xenobiology) "bel" = ( /obj/structure/rack, -/obj/item/storage/bible, +/obj/item/storage/bible{ + pixel_x = 4; + pixel_y = 2 + }, /obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 5 + pixel_x = -4; + pixel_y = 4 }, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) @@ -15747,12 +15786,14 @@ /area/station/service/hydroponics) "bfM" = ( /obj/machinery/newscaster/directional/north, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +/obj/structure/rack, +/obj/item/vending_refill/cigarette{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/item/vending_refill/coffee{ + pixel_y = 4 }, -/obj/item/pen, /turf/simulated/floor/plasteel, /area/station/public/storage/office) "bfQ" = ( @@ -15777,11 +15818,8 @@ "bfU" = ( /obj/machinery/firealarm/directional/east, /obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, @@ -15797,16 +15835,10 @@ /turf/simulated/floor/carpet/black, /area/station/service/chapel/office) "bfW" = ( -/obj/structure/rack, -/obj/item/storage/fancy/candle_box/full{ - pixel_x = -3; - pixel_y = 3 - }, +/obj/structure/shelf, +/obj/item/storage/fancy/candle_box/full, +/obj/item/storage/fancy/candle_box/full, /obj/item/storage/fancy/candle_box/full, -/obj/item/storage/fancy/candle_box/full{ - pixel_x = -3; - pixel_y = -3 - }, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "bfX" = ( @@ -15963,16 +15995,15 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry) "bgx" = ( -/obj/structure/table, -/obj/item/camera_film{ - pixel_x = 2; - pixel_y = 2 +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/vending_refill/cola{ + pixel_x = 4; + pixel_y = 8 }, -/obj/item/camera_film{ - pixel_x = -2; - pixel_y = -2 +/obj/item/vending_refill/snack{ + pixel_y = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/public/storage/office) "bgz" = ( @@ -16190,7 +16221,6 @@ /turf/simulated/floor/carpet, /area/station/hallway/secondary/entry) "bhn" = ( -/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkblue" @@ -16204,7 +16234,7 @@ /obj/machinery/door/window/classic/reversed{ dir = 4; name = "Hydroponics Delivery"; - req_one_access_txt = "35" + req_access = list(35) }, /obj/effect/mapping_helpers/airlock/windoor/access/any/service/hydroponics{ dir = 4 @@ -16254,12 +16284,6 @@ }, /area/station/hallway/secondary/entry) "bhF" = ( -/obj/structure/table, -/obj/item/vending_refill/snack{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/vending_refill/cola, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -16305,26 +16329,29 @@ }, /area/station/hallway/secondary/entry) "bhP" = ( -/obj/structure/table, +/obj/structure/shelf/supply, /obj/structure/railing{ dir = 8 }, /obj/machinery/ai_status_display/north, /obj/item/radio{ - pixel_y = 12 + pixel_y = 12; + pixel_x = 8 }, /obj/item/radio{ - pixel_y = 6 + pixel_y = 12 }, /obj/item/radio{ - pixel_x = 8; - pixel_y = 6 + pixel_x = -8; + pixel_y = 12 }, /obj/item/radio{ - pixel_y = 6; pixel_x = -8 }, /obj/item/radio, +/obj/item/radio{ + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkblue" @@ -16483,45 +16510,56 @@ }, /area/station/hallway/primary/central/north) "biL" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall/r_wall, /area/station/security/brig) "biM" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/glass{ - amount = 50 +/obj/effect/turf_decal/delivery/white/hollow, +/obj/machinery/requests_console/directional/north, +/obj/structure/shelf/command, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -6; + pixel_y = -4 }, -/obj/item/stack/sheet/glass{ - amount = 50 +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4 }, -/obj/item/stack/sheet/glass{ - amount = 50 +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4; + pixel_x = 6 }, -/obj/item/stack/sheet/rglass{ - amount = 50; - pixel_x = -2; - pixel_y = 2 +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 4; + pixel_x = -6 }, -/obj/item/stack/rods{ - amount = 50 +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 4; + pixel_x = 6 }, -/obj/effect/turf_decal/delivery/white/hollow, -/obj/effect/turf_decal/delivery/white/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/station/ai_monitored/storage/eva) "biN" = ( /obj/structure/table/reinforced, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, +/obj/item/assembly/signaler{ + pixel_x = -6; + pixel_y = 12 + }, /obj/item/storage/toolbox/electrical{ - pixel_x = 4; - pixel_y = 4 + pixel_x = 2; + pixel_y = 8 }, /obj/machinery/light/directional/east, /obj/structure/extinguisher_cabinet/directional/east, /obj/effect/turf_decal/delivery/white/hollow, +/obj/item/assembly/signaler{ + pixel_x = -6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -16641,7 +16679,7 @@ "bjp" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_one_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -16734,20 +16772,8 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm/directional/north, -/obj/structure/table, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/book/manual/wiki/sop_service{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/eftpos{ - pixel_x = -4; - pixel_y = 4 - }, +/obj/structure/closet/secure_closet/freezer/products, +/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -16932,7 +16958,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/starboard/west) "bkD" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "bkE" = ( @@ -16959,27 +16985,33 @@ "bkT" = ( /obj/structure/table, /obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 7; + pixel_y = 2 }, -/obj/item/pen, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/west, /turf/simulated/floor/plasteel, /area/station/public/storage/office) "bkW" = ( -/obj/structure/table, -/obj/item/vending_refill/cigarette{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/vending_refill/coffee, /obj/machinery/power/apc/directional/east, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d2 = 8; icon_state = "0-8" }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -7; + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/office) "bkX" = ( @@ -17183,7 +17215,7 @@ /turf/simulated/wall, /area/station/public/storage/emergency/port) "blT" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/storage/emergency/port) "blU" = ( @@ -17314,6 +17346,11 @@ /obj/machinery/cell_charger{ pixel_y = 5 }, +/obj/item/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000; + pixel_y = 5 + }, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "bmA" = ( @@ -17863,21 +17900,20 @@ /area/station/maintenance/aft) "bor" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/metal{ - amount = 50; - pixel_x = 2; - pixel_y = 2 +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/delivery/white/hollow, +/obj/item/stack/sheet/rglass/fifty{ + pixel_y = 12 }, -/obj/item/stack/sheet/metal{ - amount = 50 +/obj/item/stack/rods/fifty{ + pixel_y = -4 }, -/obj/item/stack/sheet/metal{ - amount = 50; - pixel_x = -2; - pixel_y = -2 +/obj/item/stack/cable_coil{ + pixel_y = 8 + }, +/obj/item/stack/cable_coil{ + pixel_y = 2 }, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/delivery/white/hollow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -17888,7 +17924,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "boy" = ( /obj/machinery/door/morgue{ name = "Private Study" @@ -18138,21 +18174,21 @@ name = "East Bridge Blast Door Control"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter{ id = "bridge blast west"; name = "West Bridge Blast Door Control"; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter{ id = "bridge blast north"; name = "North Bridge Blast Door Control"; pixel_x = 6; pixel_y = 8; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/keycard_auth{ pixel_x = -6; @@ -18377,8 +18413,7 @@ /area/station/engineering/atmos) "bqG" = ( /obj/structure/table, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, @@ -18407,12 +18442,8 @@ /area/station/public/vacant_store) "bqK" = ( /obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, /obj/item/stack/tape_roll, /obj/item/stack/tape_roll, /turf/simulated/floor/plasteel, @@ -18431,8 +18462,7 @@ /area/station/hallway/primary/central/nw) "bqO" = ( /obj/machinery/computer/prisoner{ - req_access = null; - req_one_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 10; @@ -19038,7 +19068,7 @@ /turf/simulated/floor/carpet, /area/station/public/vacant_office) "btE" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -19075,7 +19105,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/expedition) "btL" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment, /obj/structure/cable{ d1 = 1; @@ -19343,7 +19373,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "bvq" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/locker) "bvr" = ( @@ -19540,20 +19570,17 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/starboard/east) "bwz" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/trimline/corner{ dir = 4 }, +/obj/structure/table, /turf/simulated/floor/plasteel, /area/station/public/vacant_store) "bwA" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/south, -/obj/item/newspaper, -/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/public/vacant_store) "bwC" = ( @@ -19700,14 +19727,14 @@ id = "packageSort1" }, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "bxe" = ( /obj/machinery/conveyor{ dir = 5; id = "packageSort1" }, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "bxf" = ( /obj/machinery/conveyor{ dir = 4; @@ -19715,7 +19742,7 @@ }, /obj/structure/plasticflaps, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "bxg" = ( /obj/machinery/disposal/deliveryChute{ dir = 8 @@ -19724,7 +19751,7 @@ dir = 4 }, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "bxi" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/sortjunction{ @@ -19908,6 +19935,7 @@ /area/station/public/sleep_female) "bxQ" = ( /obj/machinery/economy/vending/coffee, +/obj/machinery/light_switch/west, /turf/simulated/floor/wood/oak, /area/station/service/library) "bxR" = ( @@ -19966,9 +19994,18 @@ "bxX" = ( /obj/machinery/requests_console/directional/east, /obj/structure/table, -/obj/item/folder/white, -/obj/item/pen, -/obj/item/book/manual/wiki/sop_science, +/obj/item/folder/white{ + pixel_x = 8; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/book/manual/wiki/sop_science{ + pixel_x = -6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "purple" @@ -20010,7 +20047,7 @@ id = "packageSort1" }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "byl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -20020,7 +20057,7 @@ }, /area/station/hallway/secondary/exit) "bym" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "byn" = ( @@ -20083,13 +20120,13 @@ id = "packageSort1" }, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "byz" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "byF" = ( /turf/simulated/floor/plasteel{ icon_state = "bluecorner" @@ -20153,7 +20190,7 @@ }, /area/station/medical/morgue) "bzk" = ( -/obj/machinery/smartfridge, +/obj/machinery/smartfridge/food/chef, /turf/simulated/floor/plating, /area/station/service/kitchen) "bzm" = ( @@ -20240,53 +20277,79 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "bzH" = ( /obj/structure/table, /obj/machinery/requests_console/directional/north, -/obj/item/stack/tape_roll, -/obj/item/destTagger{ - pixel_x = 4; - pixel_y = 3 +/obj/item/stack/tape_roll{ + pixel_x = 6 }, -/obj/item/destTagger{ - pixel_x = 4; - pixel_y = 3 +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "arrival" }, -/area/station/supply/office) +/area/station/supply/sorting) "bzI" = ( -/obj/item/storage/box, -/obj/structure/table, -/obj/item/storage/box, -/obj/item/storage/box, /obj/item/radio/intercom/directional/north, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +/obj/structure/shelf/supply, +/obj/item/storage/box{ + pixel_y = -4; + pixel_x = -8 + }, +/obj/item/storage/box{ + pixel_y = -4 + }, +/obj/item/storage/box{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/storage/box{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/box{ + pixel_y = 8 + }, +/obj/item/storage/box{ + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "arrival" }, -/area/station/supply/office) +/area/station/supply/sorting) "bzJ" = ( /turf/simulated/wall, /area/station/supply/office) "bzK" = ( /obj/structure/table, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap, -/obj/item/rcs, +/obj/item/stack/packageWrap{ + pixel_y = -8 + }, +/obj/item/stack/packageWrap{ + pixel_y = -10 + }, +/obj/item/stack/packageWrap{ + pixel_y = -12 + }, +/obj/item/destTagger{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/destTagger{ + pixel_x = 4; + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "arrival" }, -/area/station/supply/office) +/area/station/supply/sorting) "bzM" = ( /obj/machinery/status_display/directional/west, /turf/simulated/floor/plasteel{ @@ -20501,7 +20564,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "bAK" = ( /obj/structure/sign/poster/official/random, /turf/simulated/wall, @@ -20577,15 +20640,17 @@ "bBo" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bBp" = ( /obj/structure/table, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "arrival" }, -/area/station/supply/office) +/area/station/supply/sorting) "bBq" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -20779,7 +20844,7 @@ dir = 4; icon_state = "arrival" }, -/area/station/supply/office) +/area/station/supply/sorting) "bCF" = ( /obj/machinery/economy/atm/directional/west, /turf/simulated/floor/plasteel{ @@ -20898,22 +20963,17 @@ /area/station/hallway/primary/starboard/west) "bDc" = ( /obj/structure/table/glass, -/obj/item/reagent_containers/dropper{ - pixel_y = -5 - }, -/obj/item/reagent_containers/dropper{ - pixel_y = -1 - }, -/obj/item/reagent_containers/dropper{ - pixel_y = 3 - }, -/obj/item/reagent_containers/dropper{ - pixel_y = 7 +/obj/structure/extinguisher_cabinet/directional/west, +/obj/item/lighter/zippo{ + name = "Ash Generator 3000"; + pixel_x = 8; + pixel_y = 6 }, -/obj/item/reagent_containers/dropper{ - pixel_y = 11 +/obj/item/lighter/zippo{ + name = "Ash Generator 3000"; + pixel_x = -6; + pixel_y = 6 }, -/obj/structure/extinguisher_cabinet/directional/west, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whiteyellow" @@ -21081,7 +21141,7 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "bDO" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -21104,7 +21164,7 @@ dir = 1 }, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "bDW" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -21135,7 +21195,7 @@ dir = 4; icon_state = "arrival" }, -/area/station/supply/office) +/area/station/supply/sorting) "bEi" = ( /obj/structure/closet/crate/medical, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -21314,16 +21374,16 @@ /turf/simulated/floor/plasteel, /area/station/security/lobby) "bEM" = ( -/obj/structure/table, +/obj/structure/rack, /obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 + pixel_y = 10 }, /obj/item/storage/toolbox/electrical{ - pixel_x = 1; + pixel_y = 2 + }, +/obj/item/crowbar{ pixel_y = 6 }, -/obj/item/mmi/robotic_brain, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitepurple" @@ -21420,12 +21480,13 @@ id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; - req_one_access_txt = "31" + req_access = list(31) }, /turf/simulated/floor/plasteel, /area/station/supply/warehouse) "bFq" = ( /obj/structure/sign/poster/contraband/random/south, +/obj/structure/shelf/supply, /turf/simulated/floor/plasteel, /area/station/supply/warehouse) "bFr" = ( @@ -21461,7 +21522,7 @@ dir = 4; icon_state = "arrival" }, -/area/station/supply/office) +/area/station/supply/sorting) "bFz" = ( /obj/item/radio/intercom/directional/north, /turf/simulated/floor/plasteel, @@ -21470,7 +21531,7 @@ /obj/effect/turf_decal/delivery/partial, /obj/effect/turf_decal/arrows/black, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bFB" = ( /obj/structure/closet/walllocker/emerglocker/north, /obj/machinery/camera{ @@ -21639,23 +21700,10 @@ /area/station/hallway/secondary/exit) "bGi" = ( /obj/structure/table/glass, -/obj/item/lighter/zippo{ - name = "Ash Generator 3000"; - pixel_x = -6; - pixel_y = -12 - }, /obj/machinery/reagentgrinder{ pixel_x = -2; pixel_y = 12 }, -/obj/item/lighter/zippo{ - name = "Ash Generator 3000"; - pixel_x = 8; - pixel_y = -12 - }, -/obj/item/eftpos{ - pixel_x = 9 - }, /obj/structure/disaster_counter/chemistry{ pixel_x = -32 }, @@ -21711,11 +21759,13 @@ dir = 8 }, /obj/structure/table/glass, -/obj/item/storage/bag/chemistry, -/obj/item/storage/bag/chemistry, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas{ - pixel_y = 6 +/obj/item/storage/bag/chemistry{ + pixel_y = 10; + pixel_x = 4 + }, +/obj/item/storage/bag/chemistry{ + pixel_y = 4; + pixel_x = -4 }, /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" @@ -21761,9 +21811,18 @@ }, /area/station/medical/reception) "bGw" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/item/crowbar/large, +/obj/structure/shelf/science, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/storage/toolbox/electrical{ + pixel_y = -2 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 6; + pixel_y = -2 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkyellow" @@ -21799,13 +21858,31 @@ }, /area/station/medical/reception) "bGB" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular/empty, -/obj/item/storage/firstaid/regular/empty, -/obj/item/storage/firstaid/regular/empty, -/obj/item/healthanalyzer, -/obj/item/healthanalyzer, -/obj/item/healthanalyzer, +/obj/structure/shelf/science, +/obj/item/stack/sheet/glass{ + amount = 10; + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/stack/sheet/plasteel/fifteen{ + pixel_y = -4 + }, +/obj/item/stack/sheet/glass{ + amount = 10; + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_y = 8 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -21818,7 +21895,7 @@ }, /obj/structure/table, /obj/item/ashtray/glass, -/obj/item/radio/intercom/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitehall" @@ -21826,13 +21903,29 @@ /area/station/science/lobby) "bGE" = ( /obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, /obj/machinery/button/windowtint/west{ id = "robo" }, +/obj/item/clothing/head/welding{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/stack/cable_coil{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/item/book/manual/wiki/robotics_cyborgs{ + pixel_x = -6; + pixel_y = 1 + }, +/obj/item/book/manual/ripley_build_and_repair{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/book/manual/wiki/sop_science{ + pixel_x = -6; + pixel_y = 7 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -21840,15 +21933,28 @@ /area/station/science/robotics) "bGF" = ( /obj/machinery/requests_console/directional/north, -/obj/structure/rack, -/obj/item/book/manual/wiki/sop_science{ - pixel_x = -3; - pixel_y = 3 +/obj/structure/shelf/science, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = 4; + pixel_x = -6 }, -/obj/item/book/manual/ripley_build_and_repair, -/obj/item/book/manual/wiki/robotics_cyborgs{ - pixel_x = 3; - pixel_y = -3 +/obj/item/stack/sheet/metal/fifty{ + pixel_y = 4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = 4; + pixel_x = 6 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4; + pixel_x = -6 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4; + pixel_x = 6 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -21859,7 +21965,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "bGH" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "bGK" = ( @@ -21919,7 +22025,7 @@ dir = 4 }, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "bHh" = ( /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, @@ -21927,19 +22033,25 @@ "bHi" = ( /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bHn" = ( /obj/structure/table, /obj/item/reagent_containers/drinks/cans/cola{ pixel_x = -6; - pixel_y = 8 + pixel_y = 10 + }, +/obj/item/reagent_containers/drinks/drinkingglass{ + pixel_y = 2 + }, +/obj/item/toy/figure/crew/cargotech{ + pixel_x = 8; + pixel_y = 12 }, -/obj/item/reagent_containers/drinks/drinkingglass, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "arrival" }, -/area/station/supply/office) +/area/station/supply/sorting) "bHu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -22150,7 +22262,7 @@ id = "robotics"; name = "Robotics Lab Shutters Control"; pixel_x = 24; - req_one_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -22233,7 +22345,7 @@ dir = 8; icon_state = "brown" }, -/area/station/supply/office) +/area/station/supply/sorting) "bIH" = ( /obj/structure/sign/mech{ desc = "A painting of an ED-209 security robot."; @@ -22486,12 +22598,20 @@ "bJA" = ( /obj/structure/table/glass, /obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 6 + pixel_x = 6; + pixel_y = 4 }, /obj/item/pen{ - pixel_x = -5; - pixel_y = 8 + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/clothing/mask/gas{ + pixel_y = 8; + pixel_x = -10 + }, +/obj/item/clothing/mask/gas{ + pixel_y = 2; + pixel_x = -10 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -22504,21 +22624,20 @@ dir = 8; icon_state = "brown" }, -/area/station/supply/office) +/area/station/supply/sorting) "bJF" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/dropper/precision{ - pixel_x = 3 - }, -/obj/item/reagent_containers/dropper/precision, -/obj/item/reagent_containers/dropper/precision{ - pixel_x = -3 - }, /obj/machinery/camera{ c_tag = "Medbay Chemistry"; dir = 4 }, /obj/machinery/requests_console/directional/west, +/obj/structure/table/glass, +/obj/item/stack/sheet/mineral/plasma{ + pixel_y = 12 + }, +/obj/item/hand_labeler{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteyellow" @@ -22669,7 +22788,10 @@ /area/station/science/robotics) "bKo" = ( /obj/structure/table, -/obj/item/reagent_containers/drinks/mug, +/obj/item/reagent_containers/drinks/mug{ + pixel_x = 4; + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitepurple" @@ -22718,7 +22840,7 @@ }, /obj/machinery/newscaster/security_unit/east, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "bKF" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; @@ -22743,25 +22865,28 @@ /turf/simulated/wall, /area/station/command/office/hop) "bKQ" = ( -/obj/structure/rack, +/obj/structure/shelf/supply, /obj/item/reagent_containers/drinks/cans/beer, /obj/item/reagent_containers/drinks/cans/beer{ - pixel_x = 4; - pixel_y = 4 + pixel_x = 8 + }, +/obj/item/reagent_containers/drinks/cans/beer{ + pixel_x = -8 }, /turf/simulated/floor/plasteel, /area/station/supply/warehouse) "bKT" = ( -/obj/structure/rack, -/obj/item/storage/belt/utility, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 +/obj/structure/table, +/obj/item/mmi/robotic_brain{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/clothing/glasses/welding{ + pixel_x = -2 }, /obj/item/radio/headset/headset_sci{ - pixel_x = -3 + pixel_x = 6 }, -/obj/item/clothing/glasses/welding, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -22799,7 +22924,7 @@ id = "rdlab2"; name = "Research and Development Lab Shutters Control"; pixel_x = -24; - req_one_access_txt = "47" + req_access = list(47) }, /obj/effect/landmark/start/scientist, /turf/simulated/floor/plasteel{ @@ -22880,7 +23005,7 @@ /turf/simulated/floor/plating, /area/station/science/robotics) "bLJ" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/storage/tools/auxiliary) "bLK" = ( @@ -23005,7 +23130,7 @@ id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; - req_one_access_txt = "31" + req_access = list(31) }, /obj/machinery/power/apc/directional/east, /obj/structure/cable{ @@ -23042,11 +23167,11 @@ "bMx" = ( /obj/machinery/status_display/supply_display, /turf/simulated/wall, -/area/station/supply/office) +/area/station/supply/sorting) "bMA" = ( /obj/machinery/mineral/ore_redemption, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "bMJ" = ( /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ @@ -23098,7 +23223,7 @@ /area/station/medical/surgery/secondary) "bNi" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/electrical, +/obj/item/clothing/gloves/color/fyellow, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -23113,23 +23238,12 @@ "bNk" = ( /obj/structure/table, /obj/item/robotanalyzer, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 10; - pixel_x = -3; - pixel_y = 6 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/item/robotanalyzer{ + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkpurple" @@ -23137,18 +23251,29 @@ /area/station/science/robotics) "bNl" = ( /obj/structure/table, +/obj/item/multitool{ + pixel_x = 10; + pixel_y = 8 + }, +/obj/item/multitool{ + pixel_x = 10; + pixel_y = 2 + }, /obj/item/assembly/prox_sensor{ pixel_x = -8; - pixel_y = 4 + pixel_y = 8 }, /obj/item/assembly/prox_sensor{ - pixel_x = -8; + pixel_y = 8 + }, +/obj/item/clothing/glasses/hud/diagnostic{ + pixel_x = -3; pixel_y = 4 }, -/obj/item/multitool{ - pixel_x = 3 +/obj/item/clothing/glasses/hud/diagnostic{ + pixel_x = -3; + pixel_y = -1 }, -/obj/item/clothing/glasses/hud/diagnostic, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkpurple" @@ -23222,23 +23347,11 @@ /area/station/science/rnd) "bNu" = ( /obj/structure/rack, -/obj/item/stock_parts/matter_bin{ - pixel_x = -5; - pixel_y = 2 - }, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/micro_laser, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/capacitor{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/manipulator, /obj/machinery/light/directional/east, -/obj/item/stock_parts/scanning_module, -/obj/item/stock_parts/scanning_module, /obj/machinery/status_display/directional/east, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "purple" @@ -23300,6 +23413,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/item/radio/intercom/directional/south, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -23397,6 +23511,11 @@ dir = 4 }, /obj/machinery/light/directional/north, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel, /area/station/supply/office) "bNN" = ( @@ -23442,8 +23561,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "bOb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -23469,13 +23593,13 @@ id = "QMLoaddoor"; name = "Loading Doors"; pixel_y = -8; - req_one_access_txt = "79" + req_access = list(79) }, /obj/machinery/door_control/shutter/west{ id = "QMLoaddoor2"; name = "Loading Doors"; pixel_y = 8; - req_one_access_txt = "79" + req_access = list(79) }, /obj/effect/turf_decal{ dir = 8 @@ -23507,7 +23631,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bOu" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/alarm/all_access/directional/east, @@ -23615,6 +23739,7 @@ /obj/item/clothing/accessory/stethoscope{ pixel_y = 9 }, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whiteblue" @@ -23657,11 +23782,12 @@ pixel_y = 1 }, /obj/item/disk/nuclear/training{ - pixel_y = -2; - pixel_x = -7 + pixel_y = 1; + pixel_x = -6 }, /obj/item/disk/nuclear/training{ - pixel_x = -5 + pixel_x = -4; + pixel_y = 4 }, /turf/simulated/floor/plasteel, /area/station/security/range) @@ -23699,17 +23825,14 @@ }, /area/station/engineering/supermatter_room) "bPg" = ( -/obj/structure/table/glass, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; - name = "Chemistry Cleaner"; - pixel_y = 14 - }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /obj/machinery/alarm/directional/east, +/obj/structure/table/glass, +/obj/item/eftpos{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteyellow" @@ -23741,18 +23864,12 @@ /area/station/science/lobby) "bPs" = ( /obj/structure/table, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 +/obj/item/storage/belt/utility{ + pixel_y = 8 }, -/obj/item/multitool{ - pixel_x = 3 +/obj/item/mecha_parts/core{ + pixel_y = 1 }, -/obj/item/clothing/glasses/hud/diagnostic, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -23895,7 +24012,7 @@ "bPW" = ( /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bPX" = ( /obj/structure/closet/emcloset, /obj/structure/extinguisher_cabinet/directional/north, @@ -23925,7 +24042,7 @@ /obj/machinery/door/window/classic/normal{ dir = 8; name = "Cargo Desk"; - req_one_access_txt = "50" + req_access = list(50) }, /obj/structure/noticeboard{ pixel_y = 27 @@ -23960,7 +24077,7 @@ /turf/simulated/floor/transparent/glass, /area/station/command/bridge) "bQq" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/storage) "bQs" = ( @@ -24029,16 +24146,25 @@ /turf/simulated/wall/r_wall, /area/station/medical/paramedic) "bQS" = ( -/obj/structure/table/glass, /obj/machinery/firealarm/directional/east, -/obj/item/storage/box/syringes{ - pixel_y = 16 +/obj/structure/shelf/medbay, +/obj/item/storage/box/beakers{ + pixel_y = -6; + pixel_x = -8 }, /obj/item/storage/box/iv_bags{ - pixel_x = -6 + pixel_y = -6 + }, +/obj/item/storage/box/syringes{ + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/storage/box/beakers{ + pixel_y = 8; + pixel_x = -8 }, /obj/item/storage/box/iv_bags{ - pixel_x = 6 + pixel_y = 8 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -24146,33 +24272,27 @@ }, /area/station/science/hallway) "bRs" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/gloves/color/fyellow{ - pixel_y = 4 - }, -/obj/item/clothing/gloves/color/fyellow{ - pixel_y = -1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics/chargebay) +/obj/effect/spawner/random/storage, +/turf/simulated/floor/plating, +/area/station/maintenance/asmaint) "bRt" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, /obj/structure/table/glass, /obj/item/reagent_containers/glass/beaker/large{ - pixel_x = 6 + pixel_x = 6; + pixel_y = 4 }, /obj/item/reagent_containers/glass/beaker/large{ - pixel_x = -6 + pixel_x = -6; + pixel_y = 4 }, /turf/simulated/floor/engine, /area/station/medical/chemistry) "bRy" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, +/obj/item/crowbar/large, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -24225,7 +24345,6 @@ /area/station/public/locker) "bRM" = ( /obj/machinery/autolathe, -/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel, /area/station/supply/office) "bRN" = ( @@ -24487,16 +24606,16 @@ /area/station/science/robotics/chargebay) "bSK" = ( /obj/item/clipboard{ - pixel_y = 3 + pixel_y = 3; + pixel_x = 5 }, /obj/structure/table, /obj/item/stamp/granted{ - pixel_x = -3; - pixel_y = 3 + pixel_x = -7; + pixel_y = 9 }, /obj/item/stamp/denied{ - pixel_x = 4; - pixel_y = -2 + pixel_x = -7 }, /turf/simulated/floor/plasteel, /area/station/supply/office) @@ -24542,7 +24661,7 @@ /obj/machinery/firealarm/directional/north, /obj/machinery/light/directional/north, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bSR" = ( /obj/effect/spawner/window/reinforced/polarized/grilled{ id = "paramedic" @@ -24698,15 +24817,17 @@ c_tag = "Cargo Office"; dir = 4 }, -/obj/item/stack/sheet/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 4; + pixel_y = 2 }, -/obj/item/stack/sheet/metal{ - amount = 50 +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/multitool{ + pixel_y = -2 }, -/obj/item/multitool, /turf/simulated/floor/plasteel, /area/station/supply/office) "bTG" = ( @@ -24717,18 +24838,33 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/se) "bTI" = ( -/obj/structure/table/glass, -/obj/item/storage/box/beakers, -/obj/item/hand_labeler{ - pixel_y = 14 - }, -/obj/item/storage/box/beakers{ - pixel_x = 5 - }, /obj/machinery/light/directional/west, /obj/structure/sign/poster/official/science{ pixel_x = -32 }, +/obj/structure/shelf/medbay, +/obj/item/reagent_containers/dropper/precision{ + pixel_y = -6; + pixel_x = -8 + }, +/obj/item/reagent_containers/dropper/precision{ + pixel_y = -6 + }, +/obj/item/reagent_containers/dropper/precision{ + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6; + pixel_x = -8 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6; + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whiteyellow" @@ -24737,12 +24873,12 @@ "bTM" = ( /obj/structure/table/glass, /obj/item/reagent_scanner/adv{ - pixel_x = -3; - pixel_y = 3 + pixel_x = -6; + pixel_y = 5 }, /obj/item/reagent_scanner/adv{ - pixel_x = 3; - pixel_y = 3 + pixel_x = 6; + pixel_y = 5 }, /obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ @@ -24826,7 +24962,7 @@ "bTX" = ( /obj/effect/decal/cleanable/dust, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "bTZ" = ( @@ -24845,6 +24981,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/plasteel, /area/station/supply/office) "bUc" = ( @@ -24911,7 +25052,7 @@ }, /obj/effect/landmark/start/assistant, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bUs" = ( /obj/machinery/atmospherics/pipe/manifold/hidden, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -24953,7 +25094,7 @@ /obj/machinery/access_button{ autolink_id = "eng_atmos_btn_ext"; pixel_y = 24; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -24996,24 +25137,24 @@ }, /area/station/science/robotics/chargebay) "bUO" = ( -/obj/structure/disposalpipe/segment/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, /obj/structure/cable{ d1 = 1; - d2 = 4; - icon_state = "1-4" + d2 = 2; + icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/station/service/hydroponics) +"bUR" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/glass, +/obj/effect/spawner/random/storage, +/turf/simulated/floor/plating, +/area/station/maintenance/port) "bUT" = ( /obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard"; @@ -25032,7 +25173,7 @@ "bUU" = ( /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bVd" = ( /obj/structure/cable{ d1 = 4; @@ -25052,8 +25193,9 @@ /obj/effect/mapping_helpers/airlock/autoname, /obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/airlock/access/any/supply/mail_sorting, +/obj/effect/mapping_helpers/airlock/access/any/supply/expedition, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "bVl" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/mining/glass, @@ -25065,7 +25207,7 @@ /obj/machinery/button/windowtint/east{ id = "qm"; pixel_y = 8; - req_one_access_txt = "41" + req_access = list(41) }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -25080,15 +25222,24 @@ /area/station/supply/qm) "bVr" = ( /obj/structure/table, -/obj/item/folder/yellow, -/obj/item/eftpos, -/obj/item/book/manual/wiki/sop_supply, +/obj/item/book/manual/wiki/sop_supply{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/eftpos{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/folder/yellow{ + pixel_y = -5; + pixel_x = -5 + }, /turf/simulated/floor/plasteel, /area/station/supply/office) "bVt" = ( /obj/machinery/economy/vending/cart, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bVu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -25246,7 +25397,7 @@ /turf/simulated/wall, /area/station/medical/cryo) "bWb" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/aft) "bWd" = ( @@ -25374,7 +25525,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_one_access_txt = "4" + req_access = list(4) }, /obj/item/folder/red{ pixel_x = -6; @@ -25446,12 +25597,19 @@ "bWU" = ( /obj/machinery/economy/merch, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "bWW" = ( /obj/structure/table, -/obj/item/storage/belt/utility, -/obj/item/screwdriver/cargo, -/obj/item/storage/firstaid/regular, +/obj/item/storage/belt/utility{ + pixel_x = 4; + pixel_y = 14 + }, +/obj/item/screwdriver/cargo{ + pixel_y = 14 + }, +/obj/item/storage/firstaid/regular{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/supply/office) "bXc" = ( @@ -25575,7 +25733,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/south, /obj/machinery/camera{ c_tag = "Medbay Cryogenics"; dir = 1 @@ -25583,6 +25740,7 @@ /obj/item/reagent_containers/spray/cleaner{ pixel_y = 4 }, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whiteblue" @@ -25686,14 +25844,16 @@ "bYr" = ( /obj/structure/table, /obj/item/megaphone{ - pixel_x = -2; - pixel_y = 12 + pixel_x = 2; + pixel_y = 11 }, /obj/item/paper_bin{ - pixel_y = -8 + pixel_y = -5; + pixel_x = -6 }, /obj/item/pen{ - pixel_y = -4 + pixel_y = -5; + pixel_x = -5 }, /obj/structure/cable{ d1 = 4; @@ -25854,7 +26014,7 @@ /obj/machinery/access_button{ autolink_id = "eng_s_tesla_btn_ext"; pixel_y = 24; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -26209,30 +26369,35 @@ }, /area/station/supply/expedition) "cau" = ( -/obj/structure/table, -/obj/item/mmi, -/obj/item/mmi, -/obj/item/mmi, -/obj/item/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" - }, +/obj/structure/shelf/science, /obj/item/radio/intercom/directional/west, /obj/structure/reagent_dispensers/fueltank/chem/north, +/obj/item/mmi{ + pixel_y = -4; + pixel_x = -6 + }, +/obj/item/mmi{ + pixel_y = -4 + }, +/obj/item/mmi{ + pixel_y = -4; + pixel_x = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, /area/station/science/robotics) "cav" = ( /obj/structure/table, -/obj/item/scalpel{ - pixel_y = 12 +/obj/item/retractor{ + pixel_x = 8 }, -/obj/item/hemostat, -/obj/item/retractor, -/obj/item/stack/medical/bruise_pack/advanced{ - pixel_x = -4; - pixel_y = 4 +/obj/machinery/light_switch/north, +/obj/item/hemostat{ + pixel_x = -4 + }, +/obj/item/scalpel{ + pixel_y = 16 }, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -26436,34 +26601,28 @@ }, /area/station/science/hallway) "caV" = ( -/obj/structure/table, -/obj/item/storage/box/iv_bags{ - layer = 3.3; - pixel_x = -4; - pixel_y = -10 - }, +/obj/structure/shelf/medbay, /obj/item/storage/box/iv_bags{ - layer = 3.3; - pixel_x = 8; - pixel_y = -10 + pixel_y = -4; + pixel_x = -8 }, /obj/item/storage/box/patch_packs{ - layer = 3.2; - pixel_x = -4 + pixel_y = -4 }, -/obj/item/storage/box/patch_packs{ - layer = 3.2; +/obj/item/storage/box/pillbottles{ + pixel_y = -4; pixel_x = 8 }, -/obj/item/storage/box/pillbottles{ - layer = 3.1; - pixel_x = -4; - pixel_y = 10 +/obj/item/storage/box/iv_bags{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/box/patch_packs{ + pixel_y = 8 }, /obj/item/storage/box/pillbottles{ - layer = 3.1; - pixel_x = 8; - pixel_y = 10 + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -26946,6 +27105,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, @@ -26981,8 +27141,6 @@ /obj/structure/sign/poster/random{ pixel_y = 32 }, -/obj/machinery/light/directional/north, -/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "floorgrime" }, @@ -27059,7 +27217,7 @@ dir = 8 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "ccZ" = ( /obj/machinery/door/firedoor, /obj/machinery/conveyor/east{ @@ -27070,7 +27228,7 @@ opacity = 1 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "cdb" = ( /obj/effect/spawner/random_spawners/oil_maybe, /obj/effect/decal/cleanable/dirt, @@ -27471,10 +27629,22 @@ /area/station/science/server/coldroom) "ceN" = ( /obj/structure/table/glass, -/obj/item/lighter/zippo/rd, -/obj/item/paicard, -/obj/item/megaphone, -/obj/item/paper/monitorkey, +/obj/item/paper_bin/nanotrasen{ + pixel_x = -6; + pixel_y = 16 + }, +/obj/item/paicard{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/megaphone{ + pixel_x = -4; + pixel_y = -2 + }, +/obj/item/lighter/zippo/rd{ + pixel_x = -6; + pixel_y = -10 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkpurple" @@ -27728,7 +27898,7 @@ id = "xenobio4"; name = "Chamber 4 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -27795,16 +27965,10 @@ /turf/simulated/wall/r_wall, /area/station/science/toxins/mixing) "cgv" = ( -/obj/machinery/firealarm/directional/south, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/service/hydroponics) +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel, +/area/station/security/range) "cgA" = ( /obj/machinery/economy/vending/coffee, /turf/simulated/floor/wood/oak, @@ -28038,8 +28202,7 @@ }, /area/station/command/office/cmo) "chD" = ( -/obj/item/stack/sheet/metal{ - amount = 10; +/obj/item/stack/sheet/metal/ten{ pixel_y = 2 }, /obj/structure/table, @@ -28076,16 +28239,19 @@ "chK" = ( /obj/structure/table, /obj/item/handheld_defibrillator{ - pixel_y = -6 + pixel_x = -6; + pixel_y = 8 }, -/obj/item/handheld_defibrillator, /obj/item/handheld_defibrillator{ - pixel_x = -6; - pixel_y = -6 + pixel_x = 6; + pixel_y = 8 }, /obj/item/handheld_defibrillator{ pixel_x = -6 }, +/obj/item/handheld_defibrillator{ + pixel_x = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" }, @@ -28118,15 +28284,18 @@ "chO" = ( /obj/structure/table/glass, /obj/item/pen/multi, -/obj/item/paper_bin/nanotrasen, /obj/item/radio/intercom/directional/north, /obj/machinery/camera{ c_tag = "Research Director's Office"; network = list("Research","SS13") }, -/obj/item/reagent_containers/drinks/mug/rd, +/obj/item/reagent_containers/drinks/mug/rd{ + pixel_x = 10; + pixel_y = 8 + }, /obj/item/taperecorder{ - pixel_x = -3 + pixel_x = -6; + pixel_y = 4 }, /obj/effect/spawner/random/officetoys, /turf/simulated/floor/plasteel{ @@ -28188,7 +28357,7 @@ /turf/simulated/floor/plasteel, /area/station/science/storage) "cig" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -28327,18 +28496,28 @@ }, /area/station/medical/surgery/observation) "ciQ" = ( -/obj/structure/table, +/obj/structure/shelf/medbay, /obj/item/storage/belt/medical{ - pixel_y = 6 + pixel_y = -6; + pixel_x = -8 }, /obj/item/storage/belt/medical{ - pixel_y = 3 + pixel_y = -6 }, -/obj/item/clothing/glasses/hud/health{ - pixel_y = 2 +/obj/item/storage/belt/medical{ + pixel_y = -6; + pixel_x = 8 }, -/obj/item/clothing/glasses/hud/health{ - pixel_y = -2 +/obj/item/storage/belt/medical{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/belt/medical{ + pixel_y = 8 + }, +/obj/item/storage/belt/medical{ + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" @@ -28365,7 +28544,7 @@ /turf/simulated/wall, /area/station/maintenance/asmaint) "cja" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "cjc" = ( @@ -28434,8 +28613,13 @@ dir = 4 }, /obj/effect/mapping_helpers/airlock/access/any/supply/mail_sorting, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "cjs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -28514,7 +28698,7 @@ /obj/machinery/door/window/classic/reversed{ dir = 8; name = "Do Not Revive"; - req_one_access_txt = "6" + req_access = list(6) }, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airlock/windoor/access/any/medical/morgue{ @@ -28586,7 +28770,7 @@ dir = 8; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "ckg" = ( /obj/machinery/alarm/directional/north, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -28609,8 +28793,7 @@ "cko" = ( /obj/structure/rack, /obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 + pixel_y = 2 }, /obj/machinery/camera{ c_tag = "Mining Dock"; @@ -28786,7 +28969,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "ckM" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/supply/miningdock) "ckN" = ( @@ -28857,10 +29040,17 @@ /area/station/medical/surgery/observation) "ckX" = ( /obj/structure/table, -/obj/item/folder/white, +/obj/item/folder/white{ + pixel_x = 6; + pixel_y = 2 + }, /obj/item/clothing/gloves/color/latex/nitrile{ pixel_y = 16 }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -8; + pixel_y = 3 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whiteblue" @@ -28956,28 +29146,32 @@ /obj/machinery/door_control/shutter{ id = "Biohazard"; name = "Biohazard Shutter Control"; - pixel_x = -4; - pixel_y = 6; - req_one_access_txt = "30" + pixel_x = -8; + pixel_y = 8; + req_access = list(30) }, /obj/item/folder/white{ - pixel_x = 4 - }, -/obj/item/stamp/rd{ pixel_x = 5; - pixel_y = -2 + pixel_y = 10 }, /obj/structure/table/glass, /obj/machinery/door_control/normal{ id = "rdofficedoor"; name = "Office Door"; - pixel_x = -4; - pixel_y = -4; - req_one_access_txt = "30" + pixel_x = -8; + pixel_y = -2; + req_access = list(30) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/item/paper/monitorkey{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/item/stamp/rd{ + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkpurple" @@ -29142,16 +29336,16 @@ id = "engemergencyeva"; name = "Lobby Emergency Supply"; pixel_x = 24; - req_access_txt = "32"; - pixel_y = 8 + pixel_y = 8; + req_access = list(32) }, /obj/machinery/door_control/normal/north{ desc = "A remote control-switch for the engineering lobby doors."; id = "englobby"; name = "Lobby Entrance"; pixel_x = 24; - req_access_txt = "32"; - pixel_y = -8 + pixel_y = -8; + req_access = list(32) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -29198,7 +29392,7 @@ /obj/effect/mapping_helpers/airlock/autoname, /obj/machinery/access_button/south{ autolink_id = "apsolar_btn_int"; - req_one_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -29233,7 +29427,7 @@ desc = "A remote control-switch for secure storage."; id = "enginestorage"; name = "Engineering Engine Storage"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -29268,11 +29462,29 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/table/reinforced, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, -/obj/item/clothing/glasses/meson, -/obj/item/geiger_counter, +/obj/structure/shelf/engineering, +/obj/item/clothing/suit/radiation{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/clothing/glasses/meson{ + pixel_y = -4 + }, +/obj/item/clothing/suit/radiation{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/clothing/head/radiation{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/clothing/glasses/meson{ + pixel_y = 6 + }, +/obj/item/clothing/head/radiation{ + pixel_x = 6; + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkyellowcorners" @@ -29392,9 +29604,14 @@ /area/station/maintenance/disposal) "cmQ" = ( /obj/structure/rack, -/obj/item/extinguisher, -/obj/item/clothing/mask/gas, -/obj/item/grenade/chem_grenade/firefighting, +/obj/item/clothing/mask/gas{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/grenade/chem_grenade/firefighting{ + pixel_x = 8; + pixel_y = 2 + }, /obj/structure/window/reinforced{ dir = 1 }, @@ -29607,7 +29824,7 @@ id = "cmoofficedoor"; name = "Office Door"; pixel_x = -4; - req_one_access_txt = "40" + req_access = list(40) }, /obj/machinery/button/windowtint{ id = "CMO"; @@ -29619,7 +29836,7 @@ name = "Emergency Medbay Quarantine"; pixel_x = -4; pixel_y = 11; - req_one_access_txt = "40" + req_access = list(40) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -29910,6 +30127,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/structure/extinguisher_cabinet/directional/south, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whiteblue" @@ -30345,11 +30563,11 @@ /area/station/medical/psych) "cre" = ( /obj/item/storage/box/cups{ - pixel_x = 4; + pixel_x = 14; pixel_y = 4 }, /obj/item/storage/box/cups{ - pixel_x = 2; + pixel_x = -4; pixel_y = 2 }, /obj/structure/table, @@ -31134,7 +31352,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/aft) "cuc" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/aft) "cud" = ( @@ -31367,7 +31585,7 @@ /area/station/medical/surgery/primary) "cuI" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "cuJ" = ( @@ -31415,7 +31633,7 @@ /area/station/maintenance/asmaint2) "cuS" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/asmaint2) "cuW" = ( @@ -31434,6 +31652,7 @@ /obj/machinery/light/directional/south, /obj/structure/reagent_dispensers/watertank, /obj/machinery/light_switch/west, +/obj/structure/extinguisher_cabinet/directional/south, /turf/simulated/floor/plasteel, /area/station/science/toxins/mixing) "cva" = ( @@ -31514,8 +31733,13 @@ /area/station/science/toxins/test) "cvu" = ( /obj/structure/table, -/obj/item/analyzer, -/obj/item/healthanalyzer, +/obj/item/analyzer{ + pixel_x = 2; + pixel_y = 12 + }, +/obj/item/healthanalyzer{ + pixel_y = -2 + }, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cvv" = ( @@ -31615,21 +31839,30 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "cvO" = ( +/obj/structure/shelf/medbay, +/obj/machinery/light_switch/south, /obj/item/storage/box/monkeycubes/wolpincubes{ - pixel_x = -6 + pixel_y = -4; + pixel_x = -8 + }, +/obj/item/storage/box/monkeycubes/stokcubes{ + pixel_y = -4 }, /obj/item/storage/box/monkeycubes/neaeracubes{ - pixel_x = 8 + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/storage/box/monkeycubes{ + pixel_y = 8; + pixel_x = -8 }, /obj/item/storage/box/monkeycubes/farwacubes{ - pixel_x = -6; pixel_y = 8 }, -/obj/item/storage/box/monkeycubes/stokcubes{ - pixel_x = 8; - pixel_y = 8 +/obj/item/storage/box/monkeycubes/nian_worme_cubes{ + pixel_y = 8; + pixel_x = 8 }, -/obj/structure/table/glass, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitegreen" @@ -31768,7 +32001,7 @@ }, /area/station/medical/reception) "cwl" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cwo" = ( @@ -31779,6 +32012,7 @@ }, /area/station/science/genetics) "cwr" = ( +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitegreen" @@ -32205,7 +32439,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/incinerator) "cyp" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/port) "cyq" = ( @@ -32255,8 +32489,8 @@ }, /area/station/engineering/break_room) "cyx" = ( -/obj/machinery/alarm/directional/north, /obj/structure/closet/l3closet/janitor, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel, /area/station/service/janitor) "cyy" = ( @@ -32436,12 +32670,14 @@ /turf/space, /area/station/engineering/solar/port) "cyP" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cyQ" = ( /obj/structure/table, -/obj/item/plant_analyzer, +/obj/item/plant_analyzer{ + pixel_y = 12 + }, /obj/item/stock_parts/cell/high{ charge = 100; maxcharge = 15000 @@ -32768,7 +33004,7 @@ /area/station/medical/surgery/primary) "czY" = ( /obj/item/kirbyplants, -/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whiteblue" @@ -32798,7 +33034,7 @@ /obj/machinery/turretid/stun{ name = "AI Antechamber Turret Control"; pixel_y = -24; - req_one_access_txt = "75" + req_access = list(75) }, /obj/machinery/camera/motion{ c_tag = "Mini Satellite Antechamber Center"; @@ -32870,7 +33106,7 @@ }, /area/station/medical/reception) "cAu" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cAv" = ( @@ -32883,7 +33119,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "cAz" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cAB" = ( @@ -33002,7 +33238,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "cBe" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -33054,7 +33290,9 @@ /area/station/hallway/primary/aft) "cBq" = ( /obj/structure/table, -/obj/item/mounted/frame/apc_frame, +/obj/item/mounted/frame/apc_frame{ + pixel_y = 10 + }, /obj/machinery/alarm/directional/west, /obj/machinery/camera{ c_tag = "Engineering Drone Fabricator Room"; @@ -33142,8 +33380,9 @@ /area/station/science/hallway) "cBC" = ( /obj/structure/table, -/obj/item/electropack, -/obj/item/assembly/signaler, +/obj/item/electropack{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -33202,13 +33441,36 @@ }, /area/station/medical/surgery/secondary) "cBJ" = ( -/obj/machinery/light_switch/south, /obj/structure/reagent_dispensers/watertank, +/obj/machinery/alarm/directional/south, /turf/simulated/floor/plasteel, /area/station/service/janitor) "cBL" = ( /obj/machinery/firealarm/directional/south, -/obj/structure/closet/jcloset, +/obj/structure/shelf/service, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 2; + pixel_y = -4 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 10; + pixel_y = -4 + }, +/obj/item/storage/box/lights/mixed{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_y = 8 + }, +/obj/item/storage/box/lights/mixed{ + pixel_y = 8; + pixel_x = 8 + }, /turf/simulated/floor/plasteel, /area/station/service/janitor) "cBN" = ( @@ -33233,6 +33495,7 @@ "cBU" = ( /obj/structure/table, /obj/item/flashlight/lamp, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel, /area/station/service/janitor) "cBY" = ( @@ -33457,22 +33720,30 @@ /turf/simulated/floor/engine/plasma, /area/station/engineering/atmos) "cDe" = ( -/obj/structure/rack, +/obj/structure/shelf/science, +/obj/structure/disposalpipe/segment, /obj/item/assembly/igniter{ - pixel_x = -6; - pixel_y = 2 + pixel_y = -2; + pixel_x = -6 }, /obj/item/assembly/igniter{ - pixel_x = -4; - pixel_y = 1 + pixel_y = -2 }, /obj/item/assembly/igniter{ - pixel_x = -2 + pixel_y = -2; + pixel_x = 6 }, -/obj/item/assembly/igniter{ - pixel_y = -1 +/obj/item/assembly/timer{ + pixel_y = 8; + pixel_x = -6 + }, +/obj/item/assembly/timer{ + pixel_y = 8 + }, +/obj/item/assembly/timer{ + pixel_y = 8; + pixel_x = 6 }, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurple" @@ -33519,7 +33790,7 @@ /turf/simulated/wall/r_wall, /area/station/engineering/supermatter_room) "cDm" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/aft) "cDo" = ( @@ -33605,17 +33876,23 @@ /area/station/science/hallway) "cDD" = ( /obj/structure/table, -/obj/item/healthanalyzer/advanced, /obj/machinery/camera{ c_tag = "Research Test Lab"; network = list("Research","SS13") }, -/obj/item/clothing/ears/earmuffs, /obj/item/clothing/ears/earmuffs{ - pixel_x = 4; - pixel_y = -2 + pixel_x = 8; + pixel_y = 10 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = 8; + pixel_y = 4 }, /obj/machinery/firealarm/directional/north, +/obj/item/assembly/signaler{ + pixel_x = -6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -33648,7 +33925,6 @@ /area/station/science/misc_lab) "cDH" = ( /obj/machinery/chem_dispenser, -/obj/item/reagent_containers/glass/beaker/large, /obj/structure/sign/nosmoking_2{ pixel_y = 32 }, @@ -33722,7 +33998,7 @@ /obj/machinery/door_control/shutter/south{ id = "disvent"; name = "Incinerator Vent Control"; - req_one_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/meter, /obj/effect/decal/cleanable/dirt, @@ -33793,15 +34069,25 @@ }, /area/station/public/construction) "cEe" = ( -/obj/structure/rack, +/obj/structure/shelf/engineering, +/obj/item/t_scanner{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/clothing/glasses/meson{ + pixel_y = -4 + }, +/obj/item/multitool{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/clothing/gloves/color/yellow{ + pixel_x = -6; + pixel_y = 8 + }, /obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = -1 + pixel_y = 8 }, -/obj/item/clothing/gloves/color/yellow, -/obj/item/t_scanner, -/obj/item/clothing/glasses/meson, -/obj/item/multitool, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cEi" = ( @@ -33811,17 +34097,23 @@ /area/station/engineering/supermatter_room) "cEj" = ( /obj/machinery/light/directional/south, -/obj/machinery/economy/vending/janidrobe, +/obj/vehicle/janicart{ + dir = 1 + }, /turf/simulated/floor/plasteel, /area/station/service/janitor) "cEk" = ( /obj/structure/table, -/obj/item/clipboard, +/obj/item/clipboard{ + pixel_x = 6; + pixel_y = 4 + }, /obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 + pixel_x = -6 + }, +/obj/item/pen{ + pixel_x = -6 }, -/obj/item/pen, /obj/machinery/light/directional/west, /turf/simulated/floor/plasteel{ dir = 8; @@ -33877,7 +34169,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "cEx" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/aft) "cEy" = ( @@ -33918,7 +34210,7 @@ }, /area/station/maintenance/aft) "cEE" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "cEH" = ( @@ -34203,18 +34495,29 @@ }, /area/station/science/misc_lab) "cFZ" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/beakers, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, +/obj/structure/shelf/science, +/obj/item/storage/box/beakers{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/storage/box/beakers{ + pixel_y = -4 + }, +/obj/item/storage/box/beakers{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/storage/box/syringes{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/box/pillbottles{ + pixel_y = 8 + }, +/obj/item/storage/box/syringes{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/engine, /area/station/science/misc_lab) "cGa" = ( @@ -34228,12 +34531,22 @@ /area/station/science/misc_lab) "cGd" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/syringes, -/obj/item/storage/box/syringes, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/dropper/precision, -/obj/item/reagent_containers/dropper/precision, +/obj/item/reagent_containers/dropper{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/reagent_containers/dropper{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/reagent_containers/dropper/precision{ + pixel_x = 14; + pixel_y = 8 + }, +/obj/item/reagent_containers/dropper/precision{ + pixel_x = 14; + pixel_y = 2 + }, /turf/simulated/floor/engine, /area/station/science/misc_lab) "cGi" = ( @@ -34288,14 +34601,17 @@ }, /area/station/aisat/atmos) "cGv" = ( -/obj/structure/rack, -/obj/item/circuitboard/borgupload{ - pixel_x = -1; - pixel_y = 1 - }, +/obj/structure/shelf/command, /obj/item/circuitboard/aiupload{ - pixel_x = 2; - pixel_y = -2 + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/circuitboard/card{ + pixel_y = -4 + }, +/obj/item/circuitboard/borgupload{ + pixel_x = 6; + pixel_y = -4 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -34388,10 +34704,10 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/office) "cGS" = ( -/obj/structure/table, -/obj/item/camera, -/obj/machinery/light_switch/east, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/office) "cGT" = ( @@ -34435,7 +34751,7 @@ int_button_link_id = "scibomb_btn_int"; int_door_link_id = "scibomb_door_int"; pixel_y = 27; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "scibomb_vent" }, /obj/structure/cable{ @@ -34512,9 +34828,18 @@ /area/station/hallway/primary/aft) "cHn" = ( /obj/structure/table, -/obj/item/folder, -/obj/item/folder, -/obj/item/radio/alternative, +/obj/item/folder{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/radio/alternative{ + pixel_x = 8; + pixel_y = 14 + }, +/obj/item/folder{ + pixel_x = -6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -34838,56 +35163,51 @@ /turf/simulated/floor/engine/n20, /area/station/engineering/atmos) "cIg" = ( -/obj/structure/rack, -/obj/item/circuitboard/cloning{ - pixel_x = -8; +/obj/structure/shelf/engineering, +/obj/machinery/light_switch/west, +/obj/item/circuitboard/sleeper{ + pixel_x = -6; pixel_y = 8 }, -/obj/item/circuitboard/clonescanner{ - pixel_x = -5; - pixel_y = 5 +/obj/item/circuitboard/bodyscanner{ + pixel_y = 8 }, -/obj/item/circuitboard/clonepod{ - pixel_x = -2; - pixel_y = 2 +/obj/item/circuitboard/cloning{ + pixel_x = 6; + pixel_y = 8 }, /obj/item/circuitboard/cryo_tube{ - pixel_x = 1; - pixel_y = -1 + pixel_x = -6; + pixel_y = -4 }, -/obj/item/circuitboard/pandemic{ - pixel_x = 3; - pixel_y = -3 +/obj/item/circuitboard/clonepod{ + pixel_y = -4 }, -/obj/item/circuitboard/bodyscanner{ +/obj/item/circuitboard/clonescanner{ pixel_x = 6; - pixel_y = -6 - }, -/obj/item/circuitboard/sleeper{ - pixel_x = 9; - pixel_y = -9 + pixel_y = -4 }, -/obj/machinery/light/directional/west, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cIh" = ( -/obj/structure/rack, -/obj/item/circuitboard/rdconsole{ +/obj/structure/shelf/engineering, +/obj/item/circuitboard/destructive_analyzer{ pixel_x = -6; - pixel_y = 6 + pixel_y = 8 }, /obj/item/circuitboard/rdserver{ - pixel_x = -3; - pixel_y = 3 + pixel_y = 8 + }, +/obj/item/circuitboard/circuit_imprinter{ + pixel_x = -6; + pixel_y = -4 }, -/obj/item/circuitboard/destructive_analyzer, /obj/item/circuitboard/protolathe{ - pixel_x = 3; - pixel_y = -3 + pixel_y = -4 }, -/obj/item/circuitboard/circuit_imprinter{ +/obj/item/circuitboard/rdconsole{ pixel_x = 6; - pixel_y = -6 + pixel_y = -4 }, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) @@ -34934,13 +35254,8 @@ }, /area/station/maintenance/aft) "cIo" = ( -/obj/structure/table, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/key/janitor, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, /obj/structure/reagent_dispensers/spacecleanertank/north, +/obj/machinery/economy/vending/janidrobe, /turf/simulated/floor/plasteel, /area/station/service/janitor) "cIp" = ( @@ -35051,14 +35366,12 @@ /obj/structure/table/reinforced, /obj/machinery/ignition_switch{ id = "testigniter"; - pixel_x = 3; - pixel_y = -3 + pixel_x = -6 }, /obj/machinery/door_control/shutter{ id = "RnDChem"; name = "Chamber Blast Doors"; - pixel_x = 3; - pixel_y = 5 + pixel_x = 6 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -35070,10 +35383,12 @@ /area/station/science/misc_lab) "cIF" = ( /obj/structure/table/reinforced, -/obj/item/taperecorder, +/obj/item/taperecorder{ + pixel_x = -6; + pixel_y = 4 + }, /obj/item/tape/random{ - pixel_x = 3; - pixel_y = -3 + pixel_x = 12 }, /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plasteel{ @@ -35152,31 +35467,33 @@ }, /area/station/hallway/primary/aft) "cIW" = ( -/obj/structure/rack, +/obj/structure/shelf/engineering, +/obj/machinery/firealarm/directional/west, +/obj/item/circuitboard/prisoner{ + pixel_x = -6; + pixel_y = -4 + }, /obj/item/circuitboard/secure_data{ - pixel_x = -1; - pixel_y = 1 + pixel_y = -4 }, /obj/item/circuitboard/camera{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/prisoner{ - pixel_x = 5; - pixel_y = -5 + pixel_x = 6; + pixel_y = -3 }, -/obj/machinery/firealarm/directional/west, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cIX" = ( -/obj/structure/rack, -/obj/item/circuitboard/autolathe{ - pixel_x = -1; - pixel_y = 1 - }, +/obj/structure/shelf/engineering, /obj/item/circuitboard/ore_redemption{ - pixel_x = 3; - pixel_y = -3 + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/circuitboard/pandemic{ + pixel_y = -4 + }, +/obj/item/circuitboard/autolathe{ + pixel_x = 6; + pixel_y = -4 }, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) @@ -35192,7 +35509,7 @@ }, /area/station/hallway/primary/central/ne) "cJa" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment, /obj/structure/cable{ d1 = 1; @@ -35216,12 +35533,7 @@ /turf/simulated/floor/wood/oak, /area/station/medical/psych) "cJg" = ( -/obj/structure/table, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, +/obj/structure/shelf/engineering, /obj/machinery/camera{ c_tag = "Engineering Atmos SM Equipment Room"; dir = 1; @@ -35232,6 +35544,17 @@ id = "engsm2"; name = "SM Door Radiation Shutters Control" }, +/obj/item/clothing/gloves/color/black{ + pixel_x = -6; + pixel_y = -5 + }, +/obj/item/clothing/gloves/color/black{ + pixel_y = -6 + }, +/obj/item/clothing/gloves/color/black{ + pixel_x = 6; + pixel_y = -6 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -35266,38 +35589,45 @@ /area/station/engineering/hallway) "cJp" = ( /obj/structure/table, -/obj/item/t_scanner, -/obj/item/multitool{ - pixel_x = 5 - }, -/obj/item/radio/headset/headset_eng, -/obj/item/t_scanner, -/obj/item/wrench, /obj/structure/disposalpipe/segment/corner{ dir = 4 }, +/obj/item/t_scanner{ + pixel_x = 10; + pixel_y = 12 + }, +/obj/item/t_scanner{ + pixel_x = 10; + pixel_y = 4 + }, +/obj/item/multitool{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/radio/headset/headset_eng{ + pixel_x = -4; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, /area/station/engineering/atmos/storage) "cJq" = ( -/obj/structure/rack, -/obj/item/circuitboard/message_monitor{ +/obj/structure/shelf/engineering, +/obj/item/circuitboard/teleporter_hub{ pixel_x = -6; - pixel_y = 6 + pixel_y = 8 }, -/obj/item/circuitboard/aifixer{ - pixel_x = -3; - pixel_y = 3 +/obj/item/circuitboard/teleporter{ + pixel_x = -6; + pixel_y = -4 }, -/obj/item/circuitboard/teleporter, -/obj/item/circuitboard/teleporter_hub{ - pixel_x = 3; - pixel_y = -3 +/obj/item/circuitboard/message_monitor{ + pixel_y = -4 }, /obj/item/circuitboard/teleporter_station{ pixel_x = 6; - pixel_y = -6 + pixel_y = -4 }, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) @@ -35341,7 +35671,7 @@ id = "xenobio6"; name = "Chamber 6 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -35352,8 +35682,17 @@ c_tag = "EVA Motion Sensor"; dir = 4 }, -/obj/item/book/manual/evaguide, -/obj/item/stack/tape_roll, +/obj/item/book/manual/evaguide{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/stack/tape_roll{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -35400,6 +35739,7 @@ /obj/structure/table/reinforced, /obj/item/weldingtool, /obj/item/clothing/head/welding, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -35587,33 +35927,38 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "cKz" = ( -/obj/structure/rack, -/obj/item/circuitboard/cyborgrecharger{ - pixel_x = -4; - pixel_y = -2 +/obj/structure/shelf/engineering, +/obj/item/circuitboard/aifixer{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/circuitboard/mechfab{ + pixel_y = 8 }, /obj/item/circuitboard/mech_bay_power_console{ - pixel_x = 2; - pixel_y = 2 + pixel_x = -6; + pixel_y = -4 }, -/obj/item/circuitboard/mech_recharger, -/obj/item/circuitboard/mechfab{ - pixel_y = 3 +/obj/item/circuitboard/mech_recharger{ + pixel_y = -4 + }, +/obj/item/circuitboard/cyborgrecharger{ + pixel_x = 6; + pixel_y = -4 }, -/obj/machinery/light/directional/east, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cKD" = ( /obj/machinery/door/airlock/medical{ locked = 1; - req_one_access_txt = "33" + req_access = list(33) }, /obj/effect/mapping_helpers/airlock/autoname, /obj/effect/mapping_helpers/airlock/access/any/medical/chemistry, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cKE" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/asmaint) "cKF" = ( @@ -35989,7 +36334,8 @@ pixel_y = 5 }, /obj/item/storage/box/lights/mixed{ - pixel_x = 3 + pixel_x = 6; + pixel_y = 2 }, /turf/simulated/floor/plasteel, /area/station/engineering/break_room) @@ -36374,18 +36720,13 @@ /turf/simulated/wall/r_wall, /area/station/engineering/hallway) "cOl" = ( -/obj/structure/rack, +/obj/structure/shelf/command, /obj/item/circuitboard/crew{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/card{ - pixel_x = 2; - pixel_y = -2 + pixel_x = -6; + pixel_y = -4 }, /obj/item/circuitboard/communications{ - pixel_x = 5; - pixel_y = -5 + pixel_y = -4 }, /turf/simulated/floor/plasteel{ dir = 10; @@ -36907,6 +37248,7 @@ c_tag = "Engineering Atmos East"; network = list("SS13","Engineering") }, +/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" @@ -37015,7 +37357,7 @@ /turf/simulated/wall, /area/station/maintenance/asmaint) "cQx" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "cQy" = ( @@ -37125,13 +37467,28 @@ /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cQN" = ( -/obj/structure/rack, -/obj/item/clothing/suit/storage/hazardvest, -/obj/item/clothing/suit/storage/hazardvest, -/obj/item/clothing/mask/gas, +/obj/structure/shelf/engineering, +/obj/item/storage/box{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/storage/box{ + pixel_y = -4 + }, +/obj/item/storage/box{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_x = -8; + pixel_y = 8 + }, /obj/item/clothing/mask/gas{ - pixel_x = -3; - pixel_y = -3 + pixel_y = 8 + }, +/obj/item/storage/belt/utility{ + pixel_x = 8; + pixel_y = 8 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -37440,13 +37797,28 @@ /area/station/engineering/hallway) "cRN" = ( /obj/structure/table/reinforced, -/obj/item/clothing/head/welding, -/obj/item/storage/belt/utility, -/obj/item/multitool, +/obj/item/storage/belt/utility{ + pixel_x = -6; + pixel_y = 6 + }, /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/delivery/white/hollow, -/obj/item/storage/belt/utility, -/obj/item/multitool, +/obj/item/storage/belt/utility{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/multitool{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/item/multitool{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/clothing/head/welding{ + pixel_x = -6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -37660,7 +38032,7 @@ id = "engemergencyeva"; name = "Lobby Emergency Supply"; pixel_y = 6; - req_access_txt = "32" + req_access = list(32) }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -37727,7 +38099,7 @@ }, /area/station/engineering/smes) "cSz" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -37949,14 +38321,15 @@ /area/station/engineering/break_room) "cTf" = ( /obj/structure/table, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, /obj/item/storage/belt/utility{ - pixel_x = 2; - pixel_y = 2 + pixel_x = 6 + }, +/obj/item/storage/belt/utility{ + pixel_x = -6 + }, +/obj/item/storage/box/lights/mixed{ + pixel_y = 8 }, -/obj/item/storage/belt/utility, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -38133,20 +38506,16 @@ }, /area/station/engineering/supermatter_room) "cTF" = ( -/obj/structure/table, +/obj/structure/shelf/engineering, /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 4 }, /obj/item/radio{ - pixel_y = 4; pixel_x = -8 }, +/obj/item/radio, /obj/item/radio{ - pixel_y = 4 - }, -/obj/item/radio{ - pixel_x = 8; - pixel_y = 4 + pixel_x = 8 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -38220,20 +38589,15 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/tools/auxiliary) "cTT" = ( -/obj/structure/table, /obj/machinery/status_display/directional/north, +/obj/structure/shelf/engineering, /obj/item/radio{ - pixel_y = 6; pixel_x = -8 }, +/obj/item/radio, /obj/item/radio{ - pixel_x = 8; - pixel_y = 6 - }, -/obj/item/radio{ - pixel_y = 12 + pixel_x = 8 }, -/obj/item/radio, /turf/simulated/floor/plasteel{ icon_state = "darkyellowfull" }, @@ -38580,18 +38944,15 @@ /area/station/engineering/control) "cVj" = ( /obj/structure/table, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 +/obj/item/storage/belt/utility{ + pixel_x = -6 }, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 5 +/obj/item/storage/belt/utility{ + pixel_x = 6 }, /obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 + pixel_y = 14 }, -/obj/item/storage/belt/utility, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -38708,11 +39069,13 @@ icon_state = "4-8" }, /obj/structure/table/reinforced, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, -/obj/item/clothing/glasses/meson, -/obj/item/geiger_counter, /obj/machinery/ai_status_display/north, +/obj/item/geiger_counter{ + pixel_y = 8 + }, +/obj/item/geiger_counter{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkyellowcorners" @@ -38788,7 +39151,7 @@ }, /area/station/engineering/equipmentstorage) "cVR" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cVS" = ( @@ -38811,11 +39174,10 @@ /area/station/engineering/engine/supermatter) "cVU" = ( /obj/structure/table, -/obj/item/clothing/head/welding, -/obj/item/clothing/head/welding, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, /obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/item/wrench{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -38862,7 +39224,7 @@ "cWl" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "cWm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/extinguisher_cabinet/directional/south, @@ -39088,7 +39450,7 @@ /obj/machinery/access_button{ autolink_id = "eng_atmos_btn_int"; pixel_y = 24; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -39332,8 +39694,8 @@ "cXV" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/drinks/cans/beer{ - pixel_x = -6; - pixel_y = 3 + pixel_x = -14; + pixel_y = 5 }, /obj/item/ashtray/glass{ pixel_x = 4 @@ -39444,6 +39806,7 @@ /area/station/maintenance/apmaint) "cYq" = ( /obj/machinery/light/directional/east, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel/stairs/left{ dir = 1 }, @@ -39483,20 +39846,30 @@ /turf/simulated/floor/plasteel, /area/station/public/storage/office) "cYK" = ( -/obj/structure/table, +/obj/structure/shelf, +/obj/effect/decal/cleanable/dirt, /obj/item/toner{ - pixel_y = 6 + pixel_x = -6; + pixel_y = -4 }, +/obj/machinery/light_switch/east, /obj/item/toner{ - pixel_y = 3 + pixel_y = -4 }, -/obj/item/toner, /obj/item/toner{ - pixel_y = -4 + pixel_y = -4; + pixel_x = 6 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 +/obj/item/camera_film{ + pixel_y = 8; + pixel_x = -6 + }, +/obj/item/camera{ + pixel_y = 6 + }, +/obj/item/camera_film{ + pixel_y = 8; + pixel_x = 6 }, /turf/simulated/floor/plasteel, /area/station/public/storage/office) @@ -39579,8 +39952,10 @@ /area/station/maintenance/assembly_line) "cYV" = ( /obj/structure/rack, -/obj/item/storage/toolbox/electrical, -/obj/machinery/light/directional/north, +/obj/item/storage/toolbox/electrical{ + pixel_y = 2 + }, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ icon_state = "floorgrime" }, @@ -39634,12 +40009,29 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) "cZc" = ( -/obj/structure/table, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, +/obj/structure/shelf/engineering, +/obj/item/clothing/gloves/color/black{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/clothing/gloves/color/black{ + pixel_y = -6 + }, +/obj/item/clothing/gloves/color/black{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/clothing/glasses/welding{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/clothing/glasses/welding{ + pixel_y = 6 + }, +/obj/item/clothing/glasses/welding{ + pixel_x = 6; + pixel_y = 6 + }, /obj/machinery/alarm/directional/south, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -39713,7 +40105,7 @@ id = "xenobio7"; name = "Chamber 7 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -39935,20 +40327,15 @@ /area/station/command/office/captain) "dab" = ( /obj/structure/table, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ +/obj/machinery/light/directional/east, +/obj/item/radio/intercom/directional/east, +/obj/item/stack/rods{ amount = 50 }, /obj/item/stack/rods{ - amount = 50 + amount = 50; + pixel_y = -6 }, -/obj/machinery/light/directional/east, -/obj/item/radio/intercom/directional/east, /turf/simulated/floor/plasteel{ icon_state = "darkyellowfull" }, @@ -39963,9 +40350,9 @@ }, /area/station/engineering/hallway) "daf" = ( -/obj/machinery/requests_console/directional/west, /obj/effect/turf_decal/delivery/white/hollow, /obj/structure/closet/secure_closet/exile, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -40345,14 +40732,19 @@ /area/station/service/kitchen) "dbJ" = ( /obj/item/clothing/ears/earmuffs{ - pixel_y = 6 + pixel_y = 13; + pixel_x = -4 }, /obj/item/clothing/ears/earmuffs{ - pixel_x = -5; + pixel_x = -4; pixel_y = 6 }, /obj/structure/table, /obj/machinery/firealarm/directional/east, +/obj/item/crowbar/large, +/obj/item/crowbar/large{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "darkyellowfull" }, @@ -40380,18 +40772,14 @@ /area/station/engineering/utility) "dbO" = ( /obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 +/obj/machinery/cell_charger{ + pixel_x = 2; + pixel_y = 4 }, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 +/obj/item/stock_parts/cell/high/plus{ + pixel_x = 2; + pixel_y = 4 }, -/obj/machinery/light_switch/south, /obj/effect/turf_decal/delivery/white/hollow, /obj/machinery/camera{ c_tag = "EVA"; @@ -40447,7 +40835,7 @@ /obj/machinery/access_button{ autolink_id = "eng_s_tesla_btn_int"; pixel_y = 24; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -40629,19 +41017,21 @@ /turf/simulated/floor/plating, /area/station/engineering/dronefabricator) "dcE" = ( -/obj/structure/rack, +/obj/structure/shelf/engineering, /obj/item/circuitboard/powermonitor{ - pixel_x = -3; - pixel_y = 3 + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/circuitboard/smes{ + pixel_x = -6; + pixel_y = -4 }, -/obj/item/circuitboard/stationalert, /obj/item/circuitboard/atmos_alert{ - pixel_x = 3; - pixel_y = -3 + pixel_y = -4 }, -/obj/item/circuitboard/smes{ +/obj/item/circuitboard/stationalert{ pixel_x = 6; - pixel_y = -6 + pixel_y = -4 }, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) @@ -41157,7 +41547,9 @@ /area/station/engineering/hallway) "deA" = ( /obj/structure/table, -/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/electrical{ + pixel_y = 2 + }, /obj/machinery/light/directional/south, /obj/item/radio/intercom/directional/south, /turf/simulated/floor/plasteel{ @@ -41352,13 +41744,13 @@ /obj/machinery/button/windowtint/west{ id = "CE"; pixel_y = 8; - req_access_txt = "56" + req_access = list(56) }, /obj/machinery/door_control/normal/west{ id = "ceofficedoor"; name = "Office Doors"; pixel_y = -2; - req_access_txt = "56" + req_access = list(56) }, /obj/structure/cable{ d1 = 1; @@ -41605,6 +41997,7 @@ icon_state = "4-8" }, /obj/structure/table/reinforced, +/obj/item/rpd, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkyellowcorners" @@ -41671,6 +42064,7 @@ dir = 4 }, /obj/machinery/alarm/directional/south, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ icon_state = "yellow" }, @@ -41787,7 +42181,7 @@ "dgz" = ( /obj/structure/table/holotable/wood, /obj/item/reagent_containers/drinks/bottle/rum{ - pixel_y = 2 + pixel_y = 8 }, /obj/item/reagent_containers/drinks/drinkingglass/shotglass{ pixel_x = -8; @@ -41947,7 +42341,11 @@ }, /obj/machinery/door_control/shutter/south{ id = "ChangKitchenBottom"; - name = "Mr. Chang's Bottom Shutters Control" + name = "Mr. Chang's Bottom Shutters Control"; + pixel_x = -8 + }, +/obj/machinery/light_switch/south{ + pixel_x = 8 }, /turf/simulated/floor/wood, /area/station/public/mrchangs) @@ -42439,11 +42837,6 @@ /area/station/engineering/atmos) "djp" = ( /obj/structure/table, -/obj/item/storage/briefcase/inflatable{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/storage/briefcase/inflatable, /obj/machinery/computer/security/telescreen{ desc = "Used for watching engines."; layer = 4; @@ -42456,6 +42849,12 @@ c_tag = "Engineering Reception"; network = list("SS13","Engineering") }, +/obj/item/storage/briefcase/inflatable{ + pixel_y = 8 + }, +/obj/item/storage/briefcase/inflatable{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "djq" = ( @@ -42755,8 +43154,8 @@ c_tag = "Engineering Atmos Center North"; network = list("SS13","Engineering") }, -/obj/machinery/firealarm/directional/north, /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" @@ -42802,6 +43201,7 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -43014,13 +43414,13 @@ id = "blueshieldofficedoor"; name = "Office Door"; pixel_x = 6; - req_access_txt = "67" + req_access = list(67) }, /obj/machinery/door_control/shutter/south{ id = "blueshield"; name = "Privacy Shutters Control"; pixel_x = -6; - req_access_txt = "67" + req_access = list(67) }, /obj/machinery/keycard_auth/south{ pixel_y = -34 @@ -43042,9 +43442,7 @@ /turf/simulated/wall/r_wall, /area/station/engineering/engine/supermatter) "dlu" = ( -/obj/machinery/porta_turret{ - dir = 1 - }, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners" }, @@ -43325,7 +43723,7 @@ /area/station/maintenance/assembly_line) "dmJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/aft) "dmK" = ( @@ -43388,7 +43786,7 @@ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -43421,15 +43819,15 @@ /area/station/command/office/ce) "dmV" = ( /obj/structure/table, -/obj/item/apc_electronics, -/obj/item/airlock_electronics, +/obj/item/aicard{ + pixel_y = 4 + }, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "dmW" = ( /obj/structure/table, /obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 + pixel_y = 6 }, /obj/item/stack/cable_coil, /turf/simulated/floor/plasteel{ @@ -43767,12 +44165,15 @@ }, /area/station/security/checkpoint/secondary) "doj" = ( -/obj/machinery/light_switch/east, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, +/obj/machinery/camera{ + c_tag = "Security Checkpoint"; + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "red" @@ -43798,11 +44199,8 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) "dot" = ( -/obj/structure/rack, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed, -/obj/item/restraints/legcuffs/beartrap, -/obj/item/restraints/legcuffs/beartrap, +/obj/structure/table, +/obj/item/key/janitor, /turf/simulated/floor/plasteel, /area/station/service/janitor) "dou" = ( @@ -43870,28 +44268,13 @@ }, /area/station/engineering/atmos) "doK" = ( -/obj/item/transfer_valve{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/transfer_valve{ - pixel_x = 2; - pixel_y = -2 - }, +/obj/structure/shelf/science, +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve, /obj/item/transfer_valve, -/obj/item/transfer_valve{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/transfer_valve{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/structure/table, -/obj/item/transfer_valve{ - pixel_x = -6; - pixel_y = 6 - }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -43975,6 +44358,7 @@ "dpl" = ( /obj/item/radio/intercom/directional/south, /obj/machinery/recharge_station, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -44052,20 +44436,18 @@ /area/station/turret_protected/aisat/interior) "dpw" = ( /obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 +/obj/item/storage/toolbox/mechanical{ + pixel_y = 16 }, -/obj/item/storage/toolbox/mechanical, /obj/machinery/power/apc/directional/west, /obj/structure/cable{ d2 = 4; icon_state = "0-4" }, +/obj/item/stack/cable_coil{ + pixel_y = 6 + }, +/obj/item/stack/cable_coil, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -44127,18 +44509,14 @@ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/the_singularitygen, /turf/simulated/floor/plating, /area/station/engineering/secure_storage) "dpK" = ( /obj/machinery/light/directional/east, -/obj/machinery/porta_turret{ - dir = 8; - installation = /obj/item/gun/energy/gun; - name = "hallway turret" - }, +/obj/machinery/porta_turret/ai_turret/disable, /turf/simulated/floor/bluegrid, /area/station/aisat/hall) "dpL" = ( @@ -44437,10 +44815,10 @@ }, /area/station/turret_protected/ai) "drq" = ( -/obj/machinery/alarm/directional/north, /obj/structure/chair{ dir = 8 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -44448,6 +44826,7 @@ "drt" = ( /obj/structure/table/reinforced, /obj/item/folder, +/obj/structure/extinguisher_cabinet/directional/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -44460,8 +44839,8 @@ /turf/simulated/floor/bluegrid, /area/station/turret_protected/ai) "drA" = ( -/obj/structure/extinguisher_cabinet/directional/east, /obj/structure/chair/office/dark, +/obj/machinery/alarm/directional/east, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -44482,12 +44861,6 @@ /obj/machinery/status_display/directional/west, /turf/simulated/floor/bluegrid, /area/station/turret_protected/ai) -"drI" = ( -/obj/machinery/porta_turret{ - dir = 4 - }, -/turf/simulated/floor/bluegrid, -/area/station/turret_protected/ai) "drK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -44502,9 +44875,7 @@ }, /area/station/turret_protected/ai) "drM" = ( -/obj/machinery/porta_turret{ - dir = 8 - }, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/bluegrid, /area/station/turret_protected/ai) "drN" = ( @@ -44529,9 +44900,7 @@ /area/station/aisat/service) "drR" = ( /obj/machinery/status_display/directional/west, -/obj/machinery/porta_turret{ - dir = 4 - }, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/bluegrid, /area/station/turret_protected/ai) "drS" = ( @@ -44684,12 +45053,12 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "dsy" = ( -/obj/machinery/light_switch/west, +/obj/item/flag/sec, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whitepurplecorner" + icon_state = "darkredfull" }, -/area/station/science/hallway) +/area/station/security/main) "dsz" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command, @@ -44740,13 +45109,10 @@ "dsJ" = ( /obj/structure/table, /obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 + pixel_y = 6 }, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000 +/obj/item/stack/cable_coil{ + pixel_y = 2 }, /obj/machinery/ai_status_display/north, /turf/simulated/floor/plating, @@ -45021,7 +45387,7 @@ /obj/machinery/access_button{ autolink_id = "arrivalsmaint_btn_int"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) @@ -45072,8 +45438,13 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "dvD" = ( /obj/machinery/camera{ c_tag = "Prison Cafeteria External"; @@ -45088,8 +45459,20 @@ }, /turf/simulated/floor/engine/xenobio, /area/station/science/xenobiology) +"dvX" = ( +/obj/structure/rack, +/obj/item/restraints/legcuffs/beartrap{ + pixel_y = 12 + }, +/obj/item/restraints/legcuffs/beartrap{ + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/station/service/janitor) "dvY" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/port) "dwg" = ( @@ -45182,12 +45565,12 @@ /obj/machinery/door/window/classic/normal{ dir = 1; name = "Kitchen"; - req_one_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "dyn" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -45212,8 +45595,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "dyH" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable, @@ -45767,7 +46155,7 @@ }, /area/station/security/brig) "dGj" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/wood/oak, /area/station/command/office/ntrep) "dGn" = ( @@ -45789,7 +46177,7 @@ /obj/machinery/access_button{ autolink_id = "eng_n_tesla_btn_int"; pixel_y = -24; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -45918,14 +46306,17 @@ "dKh" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/glass/bottle/morphine{ - pixel_x = 8 + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/reagent_containers/glass/bottle/morphine{ + pixel_x = -6; + pixel_y = 8 }, -/obj/item/reagent_containers/glass/bottle/morphine, -/obj/item/reagent_containers/glass/bottle/facid, /obj/machinery/door_control/shutter/west{ id = "justice_blast"; name = "Space Vent"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/flasher_button{ id = "Execution"; @@ -45933,6 +46324,7 @@ pixel_y = 7 }, /obj/machinery/alarm/directional/north, +/obj/item/reagent_containers/glass/bottle/facid, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -46055,7 +46447,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "dMb" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/fsmaint) "dMc" = ( @@ -46130,6 +46522,7 @@ /obj/structure/railing{ dir = 5 }, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" }, @@ -46362,7 +46755,7 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/fsmaint) "dSu" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/asmaint) "dTF" = ( @@ -46436,23 +46829,25 @@ /obj/item/book/random, /turf/simulated/floor/carpet, /area/station/maintenance/asmaint) +"dUw" = ( +/obj/effect/spawner/window/reinforced/grilled, +/turf/simulated/floor/plating, +/area/station/supply/lobby) "dUW" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 +/obj/structure/shelf/engineering, +/obj/item/aiModule/reset{ + pixel_x = -6; + pixel_y = -4 }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/item/airlock_electronics{ + pixel_y = -4 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/item/apc_electronics{ + pixel_x = 6; + pixel_y = -4 }, -/area/station/service/hydroponics) +/turf/simulated/floor/plating, +/area/station/engineering/tech_storage) "dVb" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -46800,6 +47195,11 @@ /obj/item/candle, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) +"ecg" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/ai_monitored/storage/eva) "ech" = ( /obj/machinery/light/small/directional/west, /turf/simulated/floor/plating, @@ -46881,10 +47281,13 @@ /area/station/maintenance/apmaint) "edf" = ( /obj/structure/table, -/obj/item/clothing/head/welding, -/obj/item/clothing/head/welding, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, +/obj/item/wrench{ + pixel_y = 4 + }, +/obj/item/radio/headset/headset_eng{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -46897,15 +47300,15 @@ "edp" = ( /obj/structure/table, /obj/item/cartridge/engineering{ - pixel_x = -3; - pixel_y = 2 + pixel_x = -6; + pixel_y = 12 }, /obj/item/cartridge/engineering{ - pixel_x = 3 + pixel_x = -6; + pixel_y = 6 }, /obj/item/cartridge/engineering{ - pixel_x = 4; - pixel_y = 5 + pixel_x = -6 }, /turf/simulated/floor/plasteel{ icon_state = "yellowcorner" @@ -47070,7 +47473,7 @@ dir = 4 }, /turf/simulated/floor/plasteel/dark, -/area/station/public/dorms) +/area/station/public/fitness) "efk" = ( /obj/structure/rack, /obj/item/reagent_containers/drinks/bottle/whiskey{ @@ -47228,7 +47631,7 @@ }, /area/station/maintenance/fsmaint) "egW" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/aft) "ehb" = ( @@ -47375,6 +47778,12 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/starboard/east) +"eiZ" = ( +/obj/machinery/light_switch/east, +/turf/simulated/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/station/engineering/atmos) "ejc" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -47401,7 +47810,7 @@ /turf/simulated/floor/plating/airless, /area/space/nearstation) "ejH" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -47417,7 +47826,7 @@ sort_type_txt = "2" }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "ekB" = ( /turf/simulated/floor/plasteel, /area/station/security/prisonershuttle) @@ -47525,7 +47934,7 @@ dir = 4; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "eng" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -47587,7 +47996,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "enO" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) @@ -47751,9 +48160,18 @@ /turf/simulated/floor/engine, /area/station/engineering/engine/supermatter) "esC" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -47887,7 +48305,7 @@ /obj/machinery/access_button{ autolink_id = "fpsolar_btn_int"; pixel_x = 24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/fore_port) @@ -48098,7 +48516,7 @@ /area/station/maintenance/aft) "exC" = ( /obj/machinery/door/airlock{ - req_one_access_txt = "26" + req_access = list(26) }, /obj/effect/mapping_helpers/airlock/autoname, /turf/simulated/floor/plating, @@ -48211,7 +48629,18 @@ /area/station/command/teleporter) "ezy" = ( /obj/item/radio/intercom/directional/east, -/obj/machinery/papershredder, +/obj/structure/shelf/science, +/obj/item/stock_parts/manipulator{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/stock_parts/micro_laser{ + pixel_y = -4 + }, +/obj/item/stock_parts/manipulator{ + pixel_y = -4; + pixel_x = 6 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitepurple" @@ -48223,7 +48652,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "ezU" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment, /obj/structure/cable{ d1 = 1; @@ -48267,7 +48696,7 @@ }, /area/station/engineering/equipmentstorage) "eAu" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/medical/patients_rooms) "eAF" = ( @@ -48367,7 +48796,7 @@ }, /area/station/engineering/atmos/control) "eDB" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/r_wall, /area/station/ai_monitored/storage/eva) "eDE" = ( @@ -48681,13 +49110,14 @@ "eJt" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "eJD" = ( /obj/structure/rack, -/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 10 + }, /obj/item/storage/toolbox/electrical{ - pixel_x = -5; - pixel_y = -5 + pixel_y = 2 }, /obj/effect/turf_decal/delivery/blue/hollow, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -48873,9 +49303,29 @@ network = list("Research","SS13") }, /obj/machinery/newscaster/directional/east, -/obj/structure/window/reinforced, -/obj/structure/table, -/obj/item/reagent_containers/dropper, +/obj/structure/shelf/science, +/obj/item/stock_parts/matter_bin{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/stock_parts/scanning_module{ + pixel_y = -4 + }, +/obj/item/stock_parts/capacitor{ + pixel_y = -4; + pixel_x = 6 + }, +/obj/item/stock_parts/matter_bin{ + pixel_x = -6; + pixel_y = 12 + }, +/obj/item/stock_parts/scanning_module{ + pixel_y = 12 + }, +/obj/item/stock_parts/capacitor{ + pixel_y = 12; + pixel_x = 6 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "purple" @@ -48937,7 +49387,7 @@ /obj/machinery/turretid/stun{ name = "AI Satellite Service Bay Turret Control"; pixel_x = -6; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/wall/r_wall, /area/station/aisat/service) @@ -49026,12 +49476,13 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) "ePE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/disposalpipe/segment/corner{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -49399,7 +49850,10 @@ "eXy" = ( /obj/machinery/alarm/directional/south, /obj/structure/table, -/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil{ + pixel_x = 6; + pixel_y = 6 + }, /obj/machinery/cell_charger, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -49432,7 +49886,7 @@ id = "xenobio2"; name = "Chamber 2 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -49452,7 +49906,7 @@ /obj/machinery/door_control/shutter/east{ id = "mechbay_outer"; name = "Outer Mech Bay Shutters Control"; - req_one_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -49510,12 +49964,14 @@ /area/station/medical/virology) "fav" = ( /obj/structure/table, -/obj/item/folder/yellow, -/obj/item/pen/red{ - pixel_x = 2; - pixel_y = 6 +/obj/item/folder/yellow{ + pixel_x = -11; + pixel_y = 4 + }, +/obj/effect/spawner/random/officetoys{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/spawner/random/officetoys, /turf/simulated/floor/carpet, /area/station/supply/qm) "faB" = ( @@ -49537,7 +49993,7 @@ /obj/machinery/door_control/shutter/south{ id = "mechbay_inner"; name = "Inner Mech Bay Shutter Control"; - req_one_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -49595,9 +50051,7 @@ }, /area/station/security/interrogation) "fcb" = ( -/obj/machinery/porta_turret{ - dir = 4 - }, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -49655,7 +50109,7 @@ /area/station/public/dorms) "fcM" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -49692,13 +50146,13 @@ }, /area/station/command/office/captain) "fdd" = ( -/obj/machinery/firealarm/directional/south, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/structure/disposalpipe/junction/y{ dir = 1 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -49737,8 +50191,8 @@ int_button_link_id = "eng_s_tesla_btn_int"; int_door_link_id = "eng_s_tesla_door_int"; pixel_y = 25; - req_access_txt = "10;13"; - vent_link_id = "eng_s_tesla_vent" + vent_link_id = "eng_s_tesla_vent"; + req_access = list(10,13) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -49810,6 +50264,15 @@ }, /turf/simulated/floor/plasteel, /area/station/maintenance/incinerator) +"feC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/trimline{ + dir = 1 + }, +/obj/structure/shelf, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plasteel, +/area/station/public/vacant_store) "feH" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -49861,7 +50324,6 @@ }, /area/station/hallway/secondary/exit) "fho" = ( -/obj/machinery/light/directional/east, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, @@ -49870,7 +50332,7 @@ dir = 6; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "fhx" = ( /obj/effect/decal/cleanable/dust, /obj/structure/cable{ @@ -50119,14 +50581,11 @@ /turf/simulated/floor/plasteel, /area/station/public/locker) "fmk" = ( -/obj/machinery/hologram/holopad{ - pixel_x = -16 - }, +/obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "green" + icon_state = "cafeteria" }, -/area/station/service/hydroponics) +/area/station/service/kitchen) "fmn" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -50196,9 +50655,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "fnT" = ( -/obj/machinery/porta_turret{ - dir = 1 - }, +/obj/machinery/porta_turret/ai_turret, /obj/item/radio/intercom/locked/ai_private{ broadcasting = 1; dir = 1; @@ -50704,7 +51161,7 @@ id = "smstorage"; name = "Supermatter Storage"; pixel_x = 24; - req_access_txt = "32" + req_access = list(32) }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -50984,22 +51441,38 @@ /obj/structure/railing/cap/normal, /turf/simulated/floor/carpet/black, /area/station/service/bar/atrium) +"fBi" = ( +/obj/machinery/light_switch/west{ + pixel_y = 6 + }, +/turf/simulated/floor/bluegrid, +/area/station/turret_protected/ai) "fBj" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "fBk" = ( /obj/structure/table, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/science, -/obj/item/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; - name = "Chemistry Cleaner" +/obj/item/clothing/glasses/science{ + pixel_x = -4; + pixel_y = 10 + }, +/obj/item/clothing/glasses/science{ + pixel_x = -4; + pixel_y = 6 }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/machinery/requests_console/directional/north, +/obj/item/healthanalyzer/advanced{ + pixel_x = -4 + }, +/obj/item/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; + name = "Chemistry Cleaner"; + pixel_x = 9 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitepurple" @@ -51236,16 +51709,13 @@ /turf/simulated/floor/engine/xenobio, /area/station/science/xenobiology) "fFz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/chair/wood{ - dir = 1 +/obj/machinery/firealarm/directional/west, +/obj/machinery/light_switch/south, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurplecorner" }, -/turf/simulated/floor/carpet/black, -/area/station/legal/courtroom) +/area/station/science/hallway) "fFC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -51403,7 +51873,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "fIC" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -51657,19 +52127,14 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "fNk" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/station/service/hydroponics) "fNC" = ( /obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/light_switch/north, /turf/simulated/floor/wood/oak, /area/station/command/office/ntrep) "fNH" = ( @@ -51756,11 +52221,8 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/asmaint) "fQr" = ( -/obj/structure/table, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, +/obj/structure/shelf, +/obj/item/storage/box/gloves, /obj/item/storage/box/bodybags, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) @@ -51774,7 +52236,7 @@ id = "captainofficedoor"; name = "Office Door"; pixel_y = -3; - req_one_access_txt = "20" + req_access = list(20) }, /turf/simulated/floor/carpet/royalblue, /area/station/command/office/captain) @@ -51978,27 +52440,13 @@ /turf/simulated/floor/plating, /area/station/medical/morgue) "fUQ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/station/public/dorms) +/turf/simulated/wall, +/area/station/public/fitness) "fUW" = ( /obj/structure/sign/biohazard, /turf/simulated/wall/r_wall, /area/station/science/toxins/mixing) "fUY" = ( -/obj/machinery/light/directional/east, /obj/machinery/atmospherics/pipe/simple/visible/red, /turf/simulated/floor/plasteel{ dir = 4; @@ -52171,7 +52619,7 @@ /obj/machinery/door_control/shutter/west{ id = "teleshutter"; name = "Teleporter Shutters Access Control"; - req_one_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "floorgrime" @@ -52287,10 +52735,12 @@ "fZD" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/sop_engineering{ - pixel_x = -3 + pixel_x = -6; + pixel_y = 2 }, /obj/item/book/manual/wiki/engineering_guide{ - pixel_x = 3 + pixel_x = 6; + pixel_y = 2 }, /turf/simulated/floor/plasteel{ icon_state = "darkyellowfull" @@ -52562,7 +53012,7 @@ pixel_y = 32 }, /turf/simulated/floor/plasteel/dark, -/area/station/public/dorms) +/area/station/public/fitness) "ggr" = ( /obj/item/stack/rods{ amount = 4 @@ -52683,9 +53133,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/table/reinforced, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/glasses/meson, +/obj/structure/shelf/engineering, /obj/machinery/door_control/shutter/north{ desc = "A remote control-switch for the SM Radiation Security Shutters"; id = "engsm2"; @@ -52944,7 +53392,7 @@ /obj/machinery/access_button/west{ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; - req_one_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -52976,7 +53424,7 @@ }, /area/station/engineering/hallway) "gmu" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "gmE" = ( @@ -53152,7 +53600,6 @@ }, /area/station/medical/cryo) "gpp" = ( -/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -53516,11 +53963,7 @@ /turf/simulated/floor/engine, /area/station/maintenance/fsmaint) "guL" = ( -/obj/structure/window/reinforced, /obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/item/ammo_box/magazine/sslr{ pixel_y = 12; pixel_x = -4 @@ -53719,7 +54162,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "gxW" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -53729,7 +54172,7 @@ }, /area/station/service/chapel) "gyA" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -54029,8 +54472,13 @@ /obj/structure/disposalpipe/segment/corner{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "gDU" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, @@ -54129,6 +54577,14 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/aft) +"gEZ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy, +/area/station/legal/courtroom/gallery) "gFm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -54221,12 +54677,11 @@ "gFX" = ( /obj/structure/weightmachine/weightlifter, /obj/effect/landmark/start/assistant, -/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "gGk" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -54565,6 +55020,12 @@ /obj/structure/table/wood, /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) +"gMB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/station/supply/lobby) "gMH" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -54574,13 +55035,11 @@ pixel_x = -27; pixel_y = 5 }, -/obj/item/stack/sheet/metal{ - amount = 50; +/obj/item/stack/sheet/metal/fifty{ pixel_x = -4; pixel_y = 1 }, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 2 }, @@ -54896,7 +55355,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "gQN" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "gRe" = ( @@ -55092,6 +55551,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -55204,6 +55664,9 @@ /obj/structure/table, /obj/machinery/light_switch/north, /obj/machinery/light/directional/north, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purple" @@ -55284,7 +55747,7 @@ /obj/machinery/access_button/north{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Prison Gate"; @@ -55317,12 +55780,12 @@ "gXL" = ( /obj/machinery/door/window/classic/reversed{ name = "Toxins Launcher"; - req_one_access_txt = "7" + req_access = list(7) }, /obj/machinery/door/window/classic/reversed{ dir = 1; name = "Toxins Launcher"; - req_one_access_txt = "7" + req_access = list(7) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard"; @@ -55393,7 +55856,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "gYs" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint) "gYM" = ( @@ -55516,6 +55979,9 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plating, /area/station/service/bar) +"hag" = ( +/turf/simulated/floor/wood/fancy, +/area/station/legal/courtroom/gallery) "hak" = ( /obj/effect/decal/cleanable/dust, /obj/machinery/light/small/directional/east, @@ -55979,6 +56445,11 @@ /obj/machinery/power/apc/directional/east, /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/west) +"hiL" = ( +/obj/effect/turf_decal/delivery/partial, +/obj/effect/turf_decal/arrows/black, +/turf/simulated/floor/plasteel, +/area/station/supply/sorting) "hiM" = ( /obj/machinery/atmospherics/pipe/manifold/visible, /turf/simulated/floor/plating, @@ -56021,7 +56492,7 @@ "hiQ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/oil_maybe, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "hju" = ( @@ -56064,7 +56535,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "hjX" = ( /obj/structure/window/reinforced{ dir = 1 @@ -56262,9 +56733,17 @@ "hnY" = ( /obj/machinery/light/directional/north, /obj/structure/table, -/obj/item/bonegel, -/obj/item/bonesetter, -/obj/item/FixOVein, +/obj/item/FixOVein{ + pixel_x = 9; + pixel_y = 7 + }, +/obj/item/bonegel{ + pixel_y = 6 + }, +/obj/item/bonesetter{ + pixel_x = -6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -56321,7 +56800,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/fore_port) "hoJ" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/disposal) "hpd" = ( @@ -56530,7 +57009,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "hsz" = ( /obj/effect/decal/cleanable/dust, /obj/structure/sign/poster/contraband/random/west, @@ -56618,7 +57097,7 @@ /area/station/security/permabrig) "htV" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "htY" = ( @@ -56640,13 +57119,11 @@ }, /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical{ - pixel_y = 5 + pixel_y = 10 }, /obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 + pixel_y = 6 }, -/obj/item/rpd, /obj/machinery/ai_status_display/north, /turf/simulated/floor/plasteel{ dir = 4; @@ -56673,8 +57150,13 @@ /obj/structure/disposalpipe/junction/reversed{ dir = 1 }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "huR" = ( /obj/item/crowbar/red, /turf/simulated/floor/plasteel{ @@ -56722,7 +57204,7 @@ /obj/effect/turf_decal/siding/wood/cherry{ dir = 10 }, -/obj/item/radio/intercom/directional/west, +/obj/machinery/light_switch/west, /turf/simulated/floor/wood/fancy/cherry, /area/station/service/bar/atrium) "hwH" = ( @@ -56792,8 +57274,8 @@ d2 = 8; icon_state = "1-8" }, -/obj/machinery/light/directional/south, /obj/item/radio/intercom/directional/south, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ icon_state = "floorgrime" }, @@ -56811,6 +57293,7 @@ dir = 1 }, /obj/item/disk/rnd_backup_disk, +/obj/machinery/light_switch/east, /turf/simulated/floor/bluegrid, /area/station/telecomms/chamber) "hyx" = ( @@ -56819,7 +57302,7 @@ /area/station/maintenance/apmaint) "hyE" = ( /obj/machinery/door/airlock/freezer{ - req_one_access_txt = "28" + req_access = list(28) }, /obj/effect/mapping_helpers/airlock/autoname, /obj/structure/barricade/wooden, @@ -56840,22 +57323,13 @@ /turf/simulated/floor/carpet, /area/station/medical/psych) "hyO" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/item/paper/firingrange, -/obj/item/clothing/ears/earmuffs{ - pixel_y = 4 - }, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/glasses/sunglasses{ +/obj/structure/table/reinforced, +/obj/item/gun/energy/laser/practice{ pixel_y = 4 }, -/obj/item/clothing/glasses/sunglasses, /turf/simulated/floor/plasteel, /area/station/security/range) "hyQ" = ( @@ -56970,7 +57444,7 @@ /obj/machinery/door_control/shutter/north{ id = "paramedic"; name = "Garage Door Control"; - req_one_access_txt = "66" + req_access = list(66) }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -57009,6 +57483,7 @@ /obj/machinery/atmospherics/unary/portables_connector, /obj/machinery/atmospherics/portable/pump, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -57016,8 +57491,13 @@ /area/station/engineering/atmos/storage) "hBo" = ( /obj/structure/punching_bag, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/transparent/glass/reinforced, -/area/station/public/dorms) +/area/station/public/fitness) "hBu" = ( /obj/structure/table, /obj/effect/spawner/random/maintenance, @@ -57086,7 +57566,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "hCG" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "hCY" = ( @@ -57779,7 +58259,7 @@ id = "xenobio1"; name = "Chamber 1 Containment Blast Door"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -57935,8 +58415,8 @@ int_button_link_id = "eng_atmos_btn_int"; int_door_link_id = "eng_atmos_door_int"; pixel_y = 25; - req_access_txt = "10;13"; - vent_link_id = "eng_atmos_vent" + vent_link_id = "eng_atmos_vent"; + req_access = list(10,13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "eng_atmos_vent"; @@ -58348,7 +58828,7 @@ /turf/simulated/floor/plating/airless, /area/station/engineering/control) "hZZ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -58700,7 +59180,7 @@ /obj/machinery/access_button{ autolink_id = "fssolar_btn_ext"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/port) @@ -58794,19 +59274,29 @@ "iki" = ( /obj/effect/turf_decal/delivery/hollow, /obj/item/radio/intercom/directional/north, -/obj/structure/closet/crate, -/obj/item/hatchet, +/obj/structure/shelf/service, /obj/item/hatchet{ - pixel_x = -2; - pixel_y = -2 + pixel_x = -8; + pixel_y = -6 }, /obj/item/hatchet{ - pixel_x = -4; - pixel_y = -4 + pixel_y = -6 + }, +/obj/item/hatchet{ + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/storage/bag/plants/portaseeder{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/bag/plants/portaseeder{ + pixel_y = 8 + }, +/obj/item/storage/bag/plants/portaseeder{ + pixel_y = 8; + pixel_x = 8 }, -/obj/item/storage/bag/plants/portaseeder, -/obj/item/storage/bag/plants/portaseeder, -/obj/item/storage/bag/plants/portaseeder, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -58939,19 +59429,14 @@ /area/station/legal/magistrate) "inv" = ( /obj/structure/table, -/obj/item/clothing/glasses/hud/health{ - pixel_y = 10 +/obj/machinery/alarm/directional/south, +/obj/item/gun/syringe, +/obj/item/gun/syringe{ + pixel_y = 3 }, -/obj/item/clothing/glasses/hud/health{ +/obj/item/gun/syringe{ pixel_y = 6 }, -/obj/item/clothing/glasses/hud/health{ - pixel_y = 2 - }, -/obj/item/clothing/glasses/hud/health{ - pixel_y = -2 - }, -/obj/machinery/alarm/directional/south, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -59046,11 +59531,16 @@ "ipA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel/stairs{ icon_state = "rampbottom"; dir = 1 }, -/area/station/public/dorms) +/area/station/public/fitness) "ipF" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ @@ -59172,12 +59662,12 @@ }, /area/station/engineering/atmos) "ism" = ( -/obj/machinery/firealarm/directional/south, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/machinery/light_switch/south, /turf/simulated/floor/wood/oak, /area/station/command/office/blueshield) "isv" = ( @@ -59323,7 +59813,7 @@ }, /obj/machinery/light/small/directional/north, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "iwn" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "secmaint_vent"; @@ -59413,7 +59903,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "ixr" = ( /obj/structure/lattice, /turf/space, @@ -59508,7 +59998,7 @@ dir = 10 }, /turf/simulated/floor/plasteel/dark, -/area/station/public/dorms) +/area/station/public/fitness) "iyJ" = ( /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -59588,7 +60078,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "iBM" = ( /mob/living/simple_animal/mouse/rat, /turf/simulated/floor/plating, @@ -59660,7 +60150,7 @@ int_button_link_id = "secmaint_btn_int"; int_door_link_id = "secmaint_door_int"; pixel_y = -25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "secmaint_vent" }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -59719,34 +60209,28 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/aft) "iEg" = ( -/obj/structure/table, -/obj/item/storage/box/masks{ - layer = 3.6; - pixel_x = -4; - pixel_y = -10 - }, -/obj/item/storage/box/masks{ - layer = 3.6; - pixel_x = 8; - pixel_y = -10 +/obj/structure/shelf/medbay, +/obj/item/storage/box/autoinjectors{ + pixel_x = -8; + pixel_y = -4 }, -/obj/item/storage/box/bodybags{ - layer = 3.5; - pixel_x = -4 +/obj/item/storage/box/syringes{ + pixel_y = -4 }, -/obj/item/storage/box/bodybags{ - layer = 3.5; +/obj/item/storage/box/beakers{ + pixel_y = -4; pixel_x = 8 }, -/obj/item/storage/box/beakers{ - layer = 3.4; - pixel_x = -4; - pixel_y = 10 +/obj/item/storage/box/autoinjectors{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/storage/box/syringes{ + pixel_y = 8 }, /obj/item/storage/box/beakers{ - layer = 3.4; - pixel_x = 8; - pixel_y = 10 + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -59835,7 +60319,7 @@ icon_state = "1-2" }, /obj/machinery/door/airlock/command/glass{ - req_one_access_txt = "16" + req_access = list(16) }, /obj/effect/mapping_helpers/airlock/autoname, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -59941,12 +60425,29 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "iHT" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/crowbar/large, -/obj/item/storage/box/lights/mixed, +/obj/structure/shelf/engineering, +/obj/item/clothing/gloves/color/black{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/clothing/gloves/color/black{ + pixel_y = -6 + }, +/obj/item/clothing/gloves/color/black{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/clothing/glasses/welding{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/clothing/glasses/welding{ + pixel_y = 6 + }, +/obj/item/clothing/glasses/welding{ + pixel_x = 6; + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -59997,8 +60498,14 @@ /area/station/engineering/control) "iIQ" = ( /obj/structure/table/reinforced, -/obj/item/gun/energy/laser/practice, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_y = 4; + pixel_x = -6 + }, +/obj/item/paper/firingrange{ + pixel_y = 4; + pixel_x = 6 + }, /turf/simulated/floor/plating, /area/station/security/range) "iIW" = ( @@ -60079,6 +60586,12 @@ }, /turf/simulated/floor/plasteel, /area/station/maintenance/incinerator) +"iLb" = ( +/obj/machinery/light_switch/east, +/turf/simulated/floor/plasteel{ + icon_state = "whitepurplecorner" + }, +/area/station/science/hallway) "iLg" = ( /obj/machinery/door/poddoor{ id_tag = "turbinevent"; @@ -60123,8 +60636,9 @@ /area/station/maintenance/aft) "iLP" = ( /obj/machinery/light/directional/south, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "iMe" = ( /obj/effect/decal/cleanable/dust, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ @@ -60256,7 +60770,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "iOY" = ( @@ -60343,7 +60857,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -60374,7 +60888,9 @@ /area/station/hallway/primary/aft) "iQt" = ( /obj/structure/table/reinforced, -/obj/item/book/manual/wiki/engineering_construction, +/obj/item/book/manual/wiki/engineering_construction{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "darkyellowfull" }, @@ -60444,7 +60960,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fpmaint) "iRT" = ( -/obj/machinery/light/directional/west, +/obj/machinery/light/small/directional/west, /obj/item/radio/intercom/directional/west, /turf/simulated/floor/mineral/tranquillite, /area/station/service/mime) @@ -60566,6 +61082,17 @@ icon_state = "whiteblue" }, /area/station/medical/patients_rooms) +"iUh" = ( +/obj/structure/chair/sofa/pew/left{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood/fancy, +/area/station/legal/courtroom/gallery) "iUO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -60692,20 +61219,6 @@ /area/station/science/genetics) "iYn" = ( /obj/structure/closet/walllocker/emerglocker/north, -/obj/structure/disposalpipe/segment/corner{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -60829,7 +61342,7 @@ }, /area/station/security/brig) "iZV" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) @@ -60896,7 +61409,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/smes) "jbB" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/dorms) "jbO" = ( @@ -61199,7 +61712,6 @@ /obj/item/screwdriver, /obj/item/wrench, /obj/item/storage/fancy/donut_box, -/obj/machinery/light_switch/west, /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 }, @@ -61210,7 +61722,7 @@ /area/station/security/permabrig) "jgA" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "jgP" = ( @@ -61413,7 +61925,25 @@ /turf/simulated/floor/plasteel, /area/station/public/dorms) "jmB" = ( -/mob/living/simple_animal/mouse/rat, +/obj/structure/shelf, +/obj/item/reagent_containers/glass/bottle/nutrient/ez{ + pixel_x = -8 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez{ + pixel_x = 8 + }, +/obj/item/reagent_containers/spray/pestspray{ + pixel_x = -8; + pixel_y = 12 + }, +/obj/item/storage/bag/plants/seed_sorting_tray{ + pixel_y = 12 + }, +/obj/item/reagent_containers/spray/pestspray{ + pixel_x = 8; + pixel_y = 12 + }, /turf/simulated/floor/grass, /area/station/security/permabrig) "jmU" = ( @@ -61550,8 +62080,13 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "joA" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -61573,7 +62108,7 @@ /area/station/science/robotics) "jpc" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -61822,7 +62357,7 @@ }, /area/station/maintenance/aft) "jsn" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 2; d2 = 4; @@ -62129,16 +62664,28 @@ }, /area/station/medical/virology) "jyI" = ( -/obj/structure/table, -/obj/item/storage/belt/medical{ - pixel_y = 6 +/obj/structure/shelf/medbay, +/obj/item/clothing/glasses/hud/health{ + pixel_y = -4; + pixel_x = -8 }, -/obj/item/storage/belt/medical{ - pixel_y = 3 +/obj/item/clothing/glasses/hud/health{ + pixel_y = -4 }, -/obj/item/storage/belt/medical, -/obj/item/storage/belt/medical{ - pixel_y = -3 +/obj/item/clothing/glasses/hud/health{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/clothing/glasses/hud/health{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/clothing/glasses/hud/health{ + pixel_y = 8 + }, +/obj/item/clothing/glasses/hud/health{ + pixel_y = 8; + pixel_x = 8 }, /obj/item/radio/intercom/directional/south, /turf/simulated/floor/plasteel{ @@ -62459,8 +63006,7 @@ /area/station/maintenance/fpmaint2) "jFf" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /obj/item/circuitboard/chem_dispenser, /obj/item/storage/pill_bottle/random_drug_bottle, @@ -62595,7 +63141,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel/freezer, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "jJn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -62683,10 +63229,12 @@ }, /obj/structure/table/glass, /obj/item/reagent_containers/glass/beaker/large{ - pixel_x = -6 + pixel_x = -6; + pixel_y = 4 }, /obj/item/reagent_containers/glass/beaker/large{ - pixel_x = 6 + pixel_x = 6; + pixel_y = 4 }, /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/engine, @@ -62811,6 +63359,13 @@ }, /turf/space, /area/space/nearstation) +"jNd" = ( +/obj/machinery/alarm/directional/south, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/station/hallway/secondary/exit) "jNl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -63250,7 +63805,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "jUt" = ( /obj/machinery/light/directional/east, /turf/simulated/floor/plasteel/airless, @@ -63370,7 +63925,7 @@ /obj/machinery/access_button{ autolink_id = "arrivalsmaint_btn_ext"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) @@ -63414,7 +63969,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "jYQ" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -63435,6 +63990,14 @@ icon_state = "cafeteria" }, /area/station/service/kitchen) +"jZo" = ( +/obj/structure/chair/sofa/pew/right{ + dir = 8 + }, +/obj/machinery/power/apc/directional/south, +/obj/structure/cable, +/turf/simulated/floor/wood/fancy, +/area/station/legal/courtroom/gallery) "jZu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 6 @@ -63560,13 +64123,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel/stairs/right, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "kcl" = ( /obj/machinery/door_control/shutter/north{ desc = "A remote control-switch for the engineering security doors."; id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; - req_one_access_txt = "17;75" + req_one_access = list(17,75) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -63701,8 +64264,7 @@ /area/station/maintenance/apmaint) "kdZ" = ( /obj/structure/table, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, @@ -63933,13 +64495,13 @@ id = "representative"; name = "Privacy Shutters Control"; pixel_x = -6; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/door_control/normal/south{ id = "ntrepofficedoor"; name = "Office Door"; pixel_x = 6; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/keycard_auth/south{ pixel_y = -34 @@ -64043,7 +64605,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "kkO" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ @@ -64115,8 +64677,13 @@ name = "Billy Crabington"; real_name = "Billy Crabington" }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/transparent/glass/reinforced, -/area/station/public/dorms) +/area/station/public/fitness) "klA" = ( /obj/structure/cable{ d1 = 2; @@ -64188,15 +64755,14 @@ "knX" = ( /obj/effect/decal/cleanable/dirt, /obj/item/storage/toolbox/mechanical{ - pixel_x = 3; - pixel_y = 6 + pixel_y = 14 }, /obj/item/multitool{ - pixel_y = -5; - pixel_x = 5 + pixel_y = 2; + pixel_x = 6 }, /obj/item/clothing/head/welding{ - pixel_y = -2; + pixel_y = 5; pixel_x = -6 }, /obj/structure/table/reinforced, @@ -64248,6 +64814,11 @@ /obj/effect/landmark/start/psychiatrist, /turf/simulated/floor/carpet, /area/station/medical/psych) +"koT" = ( +/obj/structure/flora/grass/jungle, +/mob/living/simple_animal/mouse/rat, +/turf/simulated/floor/grass, +/area/station/security/permabrig) "kpx" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/effect/turf_decal/delivery/hollow, @@ -64450,20 +65021,26 @@ /turf/simulated/floor/carpet, /area/station/maintenance/asmaint) "kst" = ( -/obj/item/cartridge/signal/toxins, -/obj/item/cartridge/signal/toxins{ - pixel_x = -4; - pixel_y = 2 - }, /obj/item/cartridge/signal/toxins{ - pixel_x = 4; - pixel_y = 6 + pixel_x = -6; + pixel_y = 8 }, /obj/structure/table/glass, -/obj/item/book/manual/wiki/sop_science, +/obj/item/book/manual/wiki/sop_science{ + pixel_x = 6; + pixel_y = 2 + }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/item/cartridge/signal/toxins{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/cartridge/signal/toxins{ + pixel_x = -6; + pixel_y = -4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -64478,7 +65055,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "ksJ" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -64522,8 +65099,10 @@ network = list("Research","SS13") }, /obj/structure/table, +/obj/item/hand_labeler{ + pixel_y = 8 + }, /obj/item/stack/packageWrap, -/obj/item/hand_labeler, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -64567,7 +65146,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "kum" = ( /obj/structure/disposalpipe/sortjunction/reversed{ dir = 1; @@ -64859,7 +65438,7 @@ /obj/machinery/door_control/shutter/south{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; - req_one_access_txt = "3" + req_access = list(3) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -64922,6 +65501,7 @@ /area/space/nearstation) "kBr" = ( /obj/machinery/requests_console/directional/east, +/obj/machinery/light/floor, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "kBF" = ( @@ -65001,8 +65581,14 @@ "kBQ" = ( /obj/structure/table/wood, /obj/item/stack/packageWrap, -/obj/item/assembly/timer, -/obj/item/hand_labeler, +/obj/item/assembly/timer{ + pixel_x = -4; + pixel_y = 12 + }, +/obj/item/hand_labeler{ + pixel_x = 2; + pixel_y = 10 + }, /turf/simulated/floor/carpet/black, /area/station/command/meeting_room) "kCd" = ( @@ -65014,11 +65600,8 @@ /turf/simulated/floor/plasteel, /area/station/science/toxins/launch) "kCq" = ( -/obj/structure/sink/directional/north, -/obj/machinery/light_switch{ - name = "custom placement"; - pixel_x = -10; - pixel_y = 34 +/obj/structure/sink/directional/north{ + layer = 3.1 }, /obj/structure/mirror{ pixel_y = 32 @@ -65274,6 +65857,7 @@ icon_state = "4-8" }, /obj/machinery/light/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/carpet/royalblue, /area/station/command/office/captain) "kHi" = ( @@ -65532,8 +66116,8 @@ int_button_link_id = "eng_sm_btn_int"; int_door_link_id = "eng_sm_door_int"; pixel_y = 25; - req_access_txt = "13"; - vent_link_id = "eng_sm_vent" + vent_link_id = "eng_sm_vent"; + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/engineering/ai_transit_tube) @@ -65561,6 +66145,17 @@ icon_state = "brown" }, /area/station/supply/miningdock) +"kMj" = ( +/obj/machinery/power/apc/directional/west, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/station/supply/sorting) "kMw" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance, @@ -65694,6 +66289,10 @@ }, /turf/simulated/floor/carpet/royalblue, /area/station/command/office/captain) +"kOt" = ( +/obj/structure/shelf/supply, +/turf/simulated/floor/plasteel, +/area/station/supply/warehouse) "kPs" = ( /obj/effect/spawner/window/reinforced/polarized/grilled{ id = "hos_room" @@ -65852,7 +66451,7 @@ autolink_id = "viro_btn_ext"; layer = 3.6; name = "Virology Lab Access Button"; - req_one_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -66278,7 +66877,7 @@ /obj/machinery/access_button{ autolink_id = "assolar_btn_int"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/aft_starboard) @@ -66375,7 +66974,8 @@ "lbb" = ( /obj/structure/closet/firecloset, /obj/machinery/light/directional/east, -/obj/machinery/alarm/directional/east, +/obj/machinery/alarm/directional/south, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellowcorner" @@ -66511,7 +67111,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "lcL" = ( -/obj/effect/spawner/random_barrier/wall_probably, +/obj/effect/spawner/random/barrier/wall_probably, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "lcZ" = ( @@ -66635,8 +67235,12 @@ }, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) +"lfW" = ( +/obj/effect/spawner/window/reinforced/grilled, +/turf/simulated/floor/plating, +/area/station/supply/sorting) "lfX" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ d1 = 1; @@ -66854,10 +67458,7 @@ /turf/simulated/floor/engine, /area/station/maintenance/incinerator) "ljI" = ( -/obj/structure/table, -/obj/item/stamp/granted, -/obj/item/clothing/accessory/armband/cargo, -/obj/item/hand_labeler, +/obj/structure/shelf/supply, /turf/simulated/floor/plasteel, /area/station/supply/storage) "ljT" = ( @@ -66867,10 +67468,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "lko" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -66961,7 +67567,7 @@ "lmq" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "lmy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, @@ -67013,7 +67619,7 @@ /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "lnV" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/incinerator) "lon" = ( @@ -67085,6 +67691,7 @@ "lpF" = ( /obj/machinery/optable, /obj/machinery/light/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, @@ -67176,15 +67783,28 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "lrF" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/flashbangs, +/obj/structure/shelf/security, /obj/machinery/status_display/directional/west, -/obj/structure/window/reinforced{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/item/clothing/glasses/sunglasses_fake{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/storage/box/flashbangs, +/obj/item/clothing/glasses/sunglasses_fake{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = 6; + pixel_y = 10 + }, /turf/simulated/floor/plasteel, /area/station/security/range) "lrJ" = ( @@ -67486,6 +68106,16 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) +"lwn" = ( +/obj/structure/mirror{ + pixel_y = -34 + }, +/obj/structure/sink/directional/south, +/obj/machinery/firealarm/directional/west, +/turf/simulated/floor/plasteel{ + icon_state = "hydrofloor" + }, +/area/station/public/toilet/unisex) "lwt" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -67647,6 +68277,10 @@ icon_state = "brown" }, /area/station/supply/expedition) +"lzR" = ( +/obj/machinery/hologram/holopad, +/turf/simulated/floor/plasteel, +/area/station/supply/sorting) "lAb" = ( /obj/effect/landmark/damageturf, /obj/machinery/light_construct/small/west, @@ -67773,7 +68407,7 @@ /obj/machinery/turretid/stun{ name = "AI Chamber Hallway Turret Control"; pixel_y = 6; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/wall/r_wall, /area/station/aisat/hall) @@ -67797,7 +68431,7 @@ /obj/machinery/access_button{ autolink_id = "assolar_btn_ext"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/aft_starboard) @@ -67959,8 +68593,13 @@ /area/station/public/arcade) "lFv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "lFz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -68270,7 +68909,7 @@ }, /obj/machinery/light/directional/north, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "lKO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -68308,7 +68947,9 @@ /area/station/medical/surgery/primary) "lLC" = ( /obj/structure/table/reinforced, -/obj/item/folder/yellow, +/obj/item/folder/yellow{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "darkyellowfull" }, @@ -68595,7 +69236,7 @@ /obj/structure/window/reinforced, /obj/machinery/door/window/classic/normal{ layer = 3; - req_one_access_txt = "50"; + req_access = list(50); dir = 1; name = "Delivery Chute" }, @@ -68617,7 +69258,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/disposal) "lQx" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/legal/courtroom) "lQE" = ( @@ -68689,7 +69330,7 @@ }, /area/station/science/toxins/mixing) "lRt" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -68740,7 +69381,7 @@ /area/station/command/office/hop) "lSw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/hologram/holopad, +/obj/machinery/light/floor, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -68886,9 +69527,13 @@ /area/station/maintenance/apmaint) "lVk" = ( /obj/structure/table, -/obj/item/aicard, -/obj/item/aiModule/reset, /obj/machinery/status_display/directional/north, +/obj/item/flashlight{ + pixel_y = 10 + }, +/obj/item/flashlight{ + pixel_y = 4 + }, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "lVr" = ( @@ -68982,7 +69627,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "lXb" = ( /obj/structure/statue/bananium/clown, /obj/structure/sign/poster/official/random/north, @@ -69226,6 +69871,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -69251,10 +69897,10 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/se) "mao" = ( -/obj/machinery/alarm/directional/south, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel, /area/station/security/prisonershuttle) "maF" = ( @@ -69843,7 +70489,7 @@ /turf/simulated/wall, /area/station/engineering/dronefabricator) "mjg" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/medical/virology) "mjh" = ( @@ -69965,6 +70611,10 @@ }, /turf/simulated/floor/engine, /area/station/engineering/engine/supermatter) +"mkx" = ( +/obj/structure/window/reinforced, +/turf/simulated/floor/plasteel, +/area/station/security/range) "mkE" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -70143,6 +70793,7 @@ /turf/simulated/floor/plating, /area/station/medical/psych) "moN" = ( +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -70378,7 +71029,7 @@ id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_y = 8; - req_one_access_txt = "12" + req_access = list(12) }, /obj/machinery/driver_button{ id_tag = "trash"; @@ -70433,14 +71084,6 @@ /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) -"mtR" = ( -/obj/machinery/porta_turret{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/turret_protected/ai_upload) "mtW" = ( /obj/machinery/hologram/holopad, /obj/structure/disposalpipe/segment{ @@ -70570,7 +71213,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "mwL" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/supply/storage) "mwO" = ( @@ -70629,7 +71272,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "mxM" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "mxP" = ( @@ -70647,7 +71290,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "myq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 @@ -70793,13 +71436,13 @@ /obj/machinery/access_button/west{ autolink_id = "scibomb_btn_ext"; pixel_y = 24; - req_one_access_txt = "13"; + req_access = list(13); pixel_x = 0 }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "mBl" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/port) "mBE" = ( @@ -70940,10 +71583,13 @@ pixel_x = -32 }, /obj/item/book/manual/wiki/sop_science{ - pixel_x = -3; - pixel_y = 3 + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/book/manual/wiki/experimentor{ + pixel_x = 6; + pixel_y = 2 }, -/obj/item/book/manual/wiki/experimentor, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurple" @@ -71183,10 +71829,12 @@ }, /area/station/hallway/secondary/exit) "mIA" = ( -/obj/structure/table, +/obj/structure/shelf/supply, +/obj/item/stamp/granted, +/obj/item/stamp/granted, /obj/item/stamp/granted, /obj/item/clothing/head/soft, -/obj/item/hand_labeler, +/obj/item/clothing/head/soft, /obj/item/clothing/head/soft, /turf/simulated/floor/plasteel{ dir = 4; @@ -71511,7 +72159,9 @@ /area/station/maintenance/fsmaint) "mQf" = ( /obj/structure/rack, -/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 2 + }, /obj/structure/sign/poster/ripped{ pixel_y = 32 }, @@ -71560,9 +72210,6 @@ /obj/item/roller{ pixel_y = 12 }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -12 - }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whiteblue" @@ -71608,17 +72255,32 @@ /area/station/command/office/captain) "mTh" = ( /obj/effect/turf_decal/delivery/hollow, -/obj/structure/closet/crate/hydroponics/prespawned, -/obj/item/watertank, -/obj/item/reagent_containers/spray/plantbgone, -/obj/item/reagent_containers/spray/plantbgone, -/obj/item/reagent_containers/spray/plantbgone, -/obj/machinery/camera{ - c_tag = "Hydroponics Storage" - }, /obj/structure/sign/poster/contraband/have_a_puff{ pixel_y = 32 }, +/obj/structure/shelf/service, +/obj/item/storage/box/disks_plantgene{ + pixel_y = -4; + pixel_x = -8 + }, +/obj/item/storage/box/disks_plantgene{ + pixel_y = -4 + }, +/obj/item/storage/box/disks_plantgene{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_y = 12; + pixel_x = -8 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_y = 12 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_y = 12; + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -71674,7 +72336,14 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) +"mUh" = ( +/obj/machinery/light_switch/north, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whitepurplecorner" + }, +/area/station/science/hallway) "mUt" = ( /obj/effect/turf_decal/siding/wood/cherry{ dir = 1 @@ -71887,7 +72556,7 @@ pixel_x = 6 }, /turf/simulated/floor/plasteel/freezer, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "mYn" = ( /obj/structure/cable{ d1 = 4; @@ -71950,13 +72619,18 @@ "mZn" = ( /obj/structure/cable{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 8; + icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/sw) "mZp" = ( @@ -71994,13 +72668,13 @@ id = "hopqueue"; name = "Queue Privacy Shutters Control"; pixel_x = -6; - req_one_access_txt = "57" + req_access = list(57) }, /obj/machinery/door_control/shutter/north{ id = "hop"; name = "Privacy Shutters Control"; pixel_x = 6; - req_one_access_txt = "57" + req_access = list(57) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -72435,6 +73109,7 @@ /area/station/service/bar/atrium) "nin" = ( /obj/machinery/light/directional/west, +/obj/machinery/papershredder, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurple" @@ -72626,13 +73301,13 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -38; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control/shutter/south{ id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = -8; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4 @@ -73094,7 +73769,7 @@ }, /area/station/maintenance/apmaint) "nsA" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/glass, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -73253,6 +73928,14 @@ icon_state = "white" }, /area/station/science/hallway) +"nvw" = ( +/obj/machinery/power/apc/directional/south, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel, +/area/station/supply/lobby) "nvy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -73509,7 +74192,7 @@ /obj/machinery/door_control/shutter/east{ id = "HydroHallway"; name = "Hydroponics Privacy Shutters Control"; - req_one_access_txt = "35" + req_access = list(35) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -73541,9 +74224,18 @@ /area/station/security/lobby) "nBc" = ( /obj/structure/table, -/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 12 + }, /obj/machinery/light/directional/south, /obj/structure/sign/poster/official/random/south, +/obj/item/stack/cable_coil{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/stack/cable_coil{ + pixel_x = -2 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whitepurple" @@ -73595,22 +74287,28 @@ "nBz" = ( /obj/structure/table, /obj/item/clipboard{ - pixel_y = 3 + pixel_y = 3; + pixel_x = 4 }, /obj/item/stamp/granted{ - pixel_x = -4; - pixel_y = 6 + pixel_x = -7; + pixel_y = 11 }, /obj/item/stamp/qm{ - pixel_y = 2 + pixel_y = 6; + pixel_x = -7 }, /obj/item/stamp/denied{ - pixel_x = 4; - pixel_y = -2 + pixel_x = -7; + pixel_y = -1 }, /obj/item/lighter/zippo/engraved{ - pixel_x = 14; - pixel_y = 6 + pixel_x = 9; + pixel_y = 20 + }, +/obj/item/pen/red{ + pixel_x = 5; + pixel_y = 5 }, /turf/simulated/floor/carpet, /area/station/supply/qm) @@ -73689,7 +74387,7 @@ id = "xenobio3"; name = "Chamber 3 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -73779,7 +74477,7 @@ id = "xenobio5"; name = "Chamber 5 Containment Blast Doors"; pixel_y = 4; - req_one_access_txt = "55" + req_access = list(55) }, /obj/structure/cable{ d1 = 1; @@ -73802,6 +74500,9 @@ icon_state = "dark" }, /area/station/turret_protected/ai) +"nFw" = ( +/turf/simulated/floor/plasteel, +/area/station/supply/lobby) "nFG" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -73878,7 +74579,7 @@ dir = 2 }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "nHW" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -73951,8 +74652,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "nIX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -73986,6 +74692,10 @@ icon_state = "whiteblue" }, /area/station/medical/cloning) +"nJo" = ( +/obj/effect/spawner/random/fungus/maybe, +/turf/simulated/wall, +/area/station/legal/courtroom/gallery) "nJz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -74009,7 +74719,7 @@ /obj/machinery/access_button{ autolink_id = "evamaint_btn_ext"; pixel_x = 25; - req_one_access_txt = "13" + req_access = list(13) }, /obj/machinery/door/airlock/external{ id_tag = "evamaint_door_ext"; @@ -74052,13 +74762,8 @@ /area/station/maintenance/asmaint) "nLa" = ( /obj/structure/rack, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 2; - pixel_y = 2 - }, /obj/item/stack/sheet/metal/fifty{ - pixel_x = -2; - pixel_y = -2 + pixel_y = 4 }, /obj/machinery/ai_status_display/north, /turf/simulated/floor/plasteel{ @@ -74304,7 +75009,7 @@ "nPG" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "nQl" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -74398,6 +75103,25 @@ }, /turf/simulated/floor/plating/airless, /area/station/engineering/control) +"nSv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/table/reinforced, +/obj/item/clothing/gloves/color/black{ + pixel_y = 8 + }, +/obj/item/clothing/glasses/meson, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkyellowcorners" + }, +/area/station/engineering/supermatter_room) "nSH" = ( /obj/structure/cable{ d1 = 4; @@ -74457,10 +75181,8 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/power/apc/directional/west, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2" +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -74489,9 +75211,7 @@ /area/station/engineering/supermatter_room) "nTN" = ( /obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large{ - pixel_y = 3 - }, +/obj/item/reagent_containers/glass/beaker/large, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -74555,7 +75275,7 @@ /turf/simulated/floor/wood/oak, /area/station/service/library) "nVq" = ( -/obj/structure/table, +/obj/structure/shelf/service, /obj/item/cultivator, /obj/item/shovel/spade, /obj/item/hatchet, @@ -74564,6 +75284,8 @@ }, /obj/machinery/firealarm/directional/east, /obj/machinery/light/small/directional/east, +/obj/item/reagent_containers/glass/bucket, +/obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, @@ -74615,6 +75337,7 @@ d2 = 8; icon_state = "2-8" }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkyellow" @@ -74787,7 +75510,7 @@ name = "Office Door"; pixel_x = -6; pixel_y = 3; - req_one_access_txt = "57" + req_access = list(57) }, /obj/effect/spawner/random/officetoys, /turf/simulated/floor/plasteel{ @@ -74983,11 +75706,13 @@ /area/station/medical/reception) "ocw" = ( /obj/structure/table, -/obj/item/storage/toolbox/mechanical, /obj/item/storage/belt/utility{ - pixel_y = 3 + pixel_y = 8 + }, +/obj/item/multitool{ + pixel_x = 6; + pixel_y = 2 }, -/obj/item/multitool, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purple" @@ -75014,9 +75739,21 @@ /area/station/public/dorms) "ocX" = ( /obj/structure/table, +/obj/item/cautery{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 8; + pixel_y = 12 + }, +/obj/item/surgicaldrill{ + pixel_x = 1; + pixel_y = 3 + }, /obj/item/circular_saw, -/obj/item/surgicaldrill, -/obj/item/cautery, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -75029,7 +75766,7 @@ dir = 8; icon_state = "brown" }, -/area/station/supply/office) +/area/station/supply/sorting) "odt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -75067,7 +75804,7 @@ name = "Incinerator Access Console"; pixel_x = -26; pixel_y = 6; - req_one_access_txt = "12" + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -75087,11 +75824,11 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/machinery/light/small/directional/east, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "oes" = ( /obj/structure/disposalpipe/sortjunction/reversed{ dir = 8; @@ -75108,14 +75845,30 @@ }, /area/station/science/genetics) "oeO" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stock_parts/cell/high/plus, -/obj/item/crowbar, /obj/machinery/alarm/directional/north, -/obj/item/mecha_parts/core, +/obj/structure/shelf/science, +/obj/item/storage/firstaid/regular/empty{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/storage/firstaid/regular/empty{ + pixel_y = -6 + }, +/obj/item/storage/firstaid/regular/empty{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/healthanalyzer{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/healthanalyzer{ + pixel_y = 8 + }, +/obj/item/healthanalyzer{ + pixel_x = 6; + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -75403,7 +76156,7 @@ /obj/machinery/access_button{ autolink_id = "eng_sm_btn_ext"; pixel_y = 24; - req_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/engineering/ai_transit_tube) @@ -75480,7 +76233,7 @@ /obj/machinery/access_button{ autolink_id = "eng_sm_btn_int"; pixel_y = 24; - req_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/engineering/ai_transit_tube) @@ -75582,7 +76335,9 @@ "olG" = ( /obj/machinery/light/directional/north, /obj/structure/rack, -/obj/item/stack/sheet/plasteel, +/obj/item/stack/sheet/plasteel{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkblue" @@ -75605,9 +76360,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "omd" = ( -/obj/item/stack/sheet/metal{ - amount = 10 - }, +/obj/item/stack/sheet/metal/ten, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) @@ -75808,7 +76561,7 @@ autolink_id = "secmaint_btn_int"; name = "interior access button"; pixel_y = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -75905,7 +76658,7 @@ int_button_link_id = "apsolar_btn_int"; int_door_link_id = "apsolar_door_int"; pixel_y = -25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "apsolar_vent" }, /turf/simulated/floor/plating, @@ -75923,7 +76676,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "osE" = ( /obj/structure/table, /obj/item/paper_bin, @@ -76027,7 +76780,7 @@ /area/station/science/storage) "otX" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/plating, /area/station/maintenance/fore) "otY" = ( @@ -76193,7 +76946,7 @@ "oxf" = ( /obj/effect/landmark/burnturf, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "oxy" = ( @@ -76310,17 +77063,12 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "ozX" = ( -/obj/structure/table, -/obj/item/storage/box/bodybags{ - pixel_x = -4; - pixel_y = -4 - }, +/obj/structure/shelf/science, +/obj/item/storage/box/bodybags, /obj/item/storage/box/masks, -/obj/item/storage/box/gloves{ - pixel_x = 4; - pixel_y = 4 - }, +/obj/item/storage/box/gloves, /obj/item/tank/internals/anesthetic, +/obj/item/stack/medical/bruise_pack/advanced, /obj/item/clothing/mask/breath/medical, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -76434,9 +77182,7 @@ /area/station/maintenance/asmaint) "oBR" = ( /obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /obj/item/stack/tape_roll, /obj/structure/extinguisher_cabinet/directional/west, /turf/simulated/floor/plasteel{ @@ -76526,6 +77272,14 @@ /obj/structure/disposalpipe/junction, /turf/simulated/floor/plasteel, /area/station/hallway/primary/aft) +"oEp" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/wood/fancy, +/area/station/legal/courtroom) "oEu" = ( /obj/structure/sign/biohazard{ pixel_y = 32 @@ -76587,23 +77341,17 @@ /turf/simulated/floor/carpet/cyan, /area/station/security/prison/cell_block/A) "oFq" = ( -/obj/item/assembly/timer{ - pixel_x = -5; - pixel_y = 4 - }, -/obj/item/assembly/timer{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/assembly/timer{ - pixel_x = -1 +/obj/structure/shelf/science, +/obj/structure/disposalpipe/segment, +/obj/item/assembly/igniter{ + pixel_y = -2; + pixel_x = -6 }, +/obj/item/storage/box/monkeycubes, /obj/item/assembly/timer{ - pixel_x = 1; - pixel_y = -2 + pixel_y = -6; + pixel_x = 6 }, -/obj/structure/rack, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurple" @@ -76742,9 +77490,7 @@ }, /area/station/science/toxins/mixing) "oGA" = ( -/obj/machinery/porta_turret{ - dir = 8 - }, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -76807,6 +77553,10 @@ icon_state = "neutral" }, /area/station/public/dorms) +"oIg" = ( +/obj/machinery/light_switch/west, +/turf/simulated/floor/engine, +/area/station/science/test_chamber) "oIB" = ( /obj/machinery/alarm/directional/south, /obj/machinery/firealarm/directional/east, @@ -76874,7 +77624,7 @@ /area/station/service/bar/atrium) "oJu" = ( /obj/machinery/newscaster/directional/north, -/obj/vehicle/janicart, +/obj/structure/closet/jcloset, /turf/simulated/floor/plasteel, /area/station/service/janitor) "oJw" = ( @@ -76898,8 +77648,13 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "oJO" = ( /obj/machinery/light/small/directional/south, /obj/structure/closet/firecloset/full, @@ -77062,7 +77817,8 @@ /area/station/medical/medbay2) "oMN" = ( /obj/structure/table, -/obj/item/clothing/glasses/welding, +/obj/machinery/light/small/directional/south, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/engineering/utility) "oMR" = ( @@ -77247,7 +78003,7 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /obj/machinery/access_button{ autolink_id = "secmaint_btn_ext"; - req_one_access_txt = "13"; + req_access = list(13); pixel_y = 24 }, /turf/simulated/floor/plating, @@ -77350,9 +78106,14 @@ /area/station/maintenance/disposal) "oRP" = ( /obj/structure/rack, -/obj/item/extinguisher, -/obj/item/clothing/mask/gas, -/obj/item/grenade/chem_grenade/firefighting, +/obj/item/clothing/mask/gas{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/grenade/chem_grenade/firefighting{ + pixel_x = 8; + pixel_y = 2 + }, /obj/structure/window/reinforced{ dir = 1 }, @@ -78151,11 +78912,16 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "pfF" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -78205,7 +78971,7 @@ }, /area/station/engineering/control) "pgV" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "pgW" = ( @@ -78686,8 +79452,30 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/closet/secure_closet/freezer/kitchen, /obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/shelf/service, +/obj/item/reagent_containers/condiment/flour{ + pixel_y = -4; + pixel_x = -8 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_y = -4 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/reagent_containers/condiment/rice{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_y = 8 + }, +/obj/item/reagent_containers/condiment/sugar{ + pixel_y = 8; + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -78785,13 +79573,14 @@ /area/station/public/dorms) "ppm" = ( /obj/structure/table, -/obj/item/clothing/glasses/hud/hydroponic{ - pixel_y = 8 +/obj/item/book/manual/hydroponics_pod_people{ + pixel_y = 2; + pixel_x = 6 }, -/obj/item/clothing/glasses/hud/hydroponic{ - pixel_y = 4 +/obj/item/paper/hydroponics{ + pixel_x = -6; + pixel_y = 2 }, -/obj/item/clothing/glasses/hud/hydroponic, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -78843,9 +79632,7 @@ }, /area/station/security/permabrig) "ppR" = ( -/obj/item/stack/sheet/metal{ - amount = 10 - }, +/obj/item/stack/sheet/metal/ten, /turf/simulated/floor/plating/airless, /area/space/nearstation) "ppV" = ( @@ -79405,7 +80192,7 @@ /obj/machinery/access_button/south{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/simulated/floor/plasteel{ @@ -79421,10 +80208,11 @@ /area/station/maintenance/asmaint) "pAp" = ( /obj/structure/rack, -/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 10 + }, /obj/item/storage/toolbox/electrical{ - pixel_x = -5; - pixel_y = -5 + pixel_y = 2 }, /obj/effect/turf_decal/delivery/blue/hollow, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -79528,7 +80316,7 @@ }, /area/station/legal/courtroom) "pBP" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "pCe" = ( @@ -79589,8 +80377,13 @@ "pCW" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "pDr" = ( /obj/structure/cable{ d1 = 2; @@ -79631,7 +80424,7 @@ /area/station/hallway/secondary/entry) "pEu" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -79639,7 +80432,6 @@ /area/station/maintenance/apmaint) "pEE" = ( /obj/machinery/flasher/portable, -/obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "vault" @@ -79684,15 +80476,11 @@ /area/station/maintenance/apmaint) "pFm" = ( /obj/structure/closet/crate, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /obj/item/stack/rods{ amount = 50 }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, +/obj/item/stack/sheet/glass/fifty, /obj/item/airlock_electronics, /obj/item/airlock_electronics, /obj/item/stock_parts/cell/high{ @@ -79747,6 +80535,11 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/plasteel, /area/station/supply/office) "pHV" = ( @@ -79842,7 +80635,7 @@ /obj/machinery/door_control/shutter/west{ id = "stationawaygate"; name = "Gateway Shutters Control"; - req_one_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -80003,6 +80796,7 @@ c_tag = "Engineering Atmos Center"; network = list("SS13","Engineering") }, +/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" @@ -80449,6 +81243,10 @@ icon_state = "darkyellowcorners" }, /area/station/engineering/hallway) +"pUQ" = ( +/obj/machinery/light_switch/east, +/turf/simulated/floor/plasteel, +/area/station/supply/office) "pUR" = ( /mob/living/simple_animal/mouse, /obj/structure/cable{ @@ -80504,7 +81302,7 @@ /obj/machinery/door_control/shutter/west{ id = "atmos"; name = "Atmospherics Lockdown"; - req_access_txt = "24" + req_access = list(24) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -80517,7 +81315,7 @@ int_button_link_id = "arrivalsmaint_btn_int"; int_door_link_id = "arrivalsmaint_door_int"; pixel_x = 25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "arrivalsmaint_vent" }, /turf/simulated/floor/plating, @@ -80776,7 +81574,10 @@ /area/station/maintenance/fore) "qaU" = ( /obj/structure/table, -/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = 2 + }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -81104,7 +81905,7 @@ /area/station/maintenance/fpmaint) "qhK" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "qhO" = ( @@ -81224,13 +82025,9 @@ }, /area/station/medical/sleeper) "qjZ" = ( -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/portable/canister/oxygen, -/obj/effect/turf_decal/delivery/blue/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/engineering/atmos/storage) +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel, +/area/station/supply/sorting) "qkc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -81333,7 +82130,7 @@ anchored = 1 }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "qlE" = ( /obj/item/restraints/handcuffs/cable/green, /obj/machinery/conveyor{ @@ -81465,7 +82262,7 @@ dir = 4 }, /turf/simulated/floor/plasteel/dark, -/area/station/public/dorms) +/area/station/public/fitness) "qnq" = ( /obj/machinery/conveyor{ dir = 1; @@ -81476,7 +82273,7 @@ }, /obj/machinery/light/small/directional/west, /turf/simulated/floor/plating, -/area/station/supply/office) +/area/station/supply/sorting) "qnK" = ( /obj/machinery/bodyscanner{ dir = 2 @@ -81547,6 +82344,13 @@ /area/station/maintenance/fsmaint) "qot" = ( /obj/item/radio/intercom/directional/south, +/obj/structure/shelf/supply, +/obj/item/hand_labeler, +/obj/item/hand_labeler, +/obj/item/hand_labeler, +/obj/item/clothing/accessory/armband/cargo, +/obj/item/clothing/accessory/armband/cargo, +/obj/item/clothing/accessory/armband/cargo, /turf/simulated/floor/plasteel, /area/station/supply/storage) "qov" = ( @@ -81607,8 +82411,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "qqy" = ( /obj/structure/cable{ d1 = 2; @@ -81791,13 +82601,13 @@ pixel_x = 5; pixel_y = 10 }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 5 - }, /obj/item/reagent_containers/spray/cleaner{ pixel_x = -5 }, /obj/machinery/light/directional/south, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 5 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whiteblue" @@ -81856,7 +82666,7 @@ dir = 8; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "qtJ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -81917,9 +82727,9 @@ /area/station/maintenance/asmaint) "qus" = ( /obj/structure/table, -/obj/item/toy/figure/crew/cargotech, +/obj/item/rcs, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/sorting) "qvf" = ( /obj/structure/table, /obj/item/melee/baton/cattleprod, @@ -81950,11 +82760,12 @@ "qvO" = ( /obj/structure/table, /obj/item/paper_bin{ - pixel_y = 7 + pixel_y = 4; + pixel_x = -6 }, /obj/item/pen{ - pixel_x = -2; - pixel_y = 8 + pixel_x = -6; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -82096,6 +82907,12 @@ icon_state = "dark" }, /area/station/service/chapel) +"qyu" = ( +/obj/machinery/light_switch/east{ + pixel_y = 6 + }, +/turf/simulated/floor/bluegrid, +/area/station/turret_protected/ai) "qyy" = ( /obj/item/holder/mouse, /obj/effect/decal/cleanable/dirt, @@ -82154,18 +82971,13 @@ }, /area/station/maintenance/fsmaint) "qzV" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Departure Lounge South-West"; - dir = 1 - }, +/obj/machinery/atmospherics/portable/canister/nitrogen, +/obj/effect/turf_decal/delivery/red/hollow, +/obj/machinery/light/directional/west, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "bluecorner" + icon_state = "dark" }, -/area/station/hallway/secondary/exit) +/area/station/engineering/atmos/storage) "qAg" = ( /obj/structure/table, /obj/effect/spawner/random/maintenance, @@ -82279,14 +83091,6 @@ }, /area/station/engineering/smes) "qCi" = ( -/obj/structure/rack, -/obj/item/clothing/suit/storage/hazardvest, -/obj/item/clothing/suit/storage/hazardvest, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas{ - pixel_x = -3; - pixel_y = -3 - }, /obj/machinery/light/directional/east, /turf/simulated/floor/plasteel{ dir = 4; @@ -82294,7 +83098,7 @@ }, /area/station/engineering/hallway) "qCk" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/supply/warehouse) "qCv" = ( @@ -82392,7 +83196,7 @@ id = "Prison Gate"; name = "Prison Wing Lockdown"; pixel_x = -38; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/flasher_button{ id = "prison"; @@ -82750,9 +83554,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -82783,13 +83585,8 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/abandonedbar) "qJg" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/carpet/black, -/area/station/legal/courtroom) +/turf/simulated/wall, +/area/station/supply/sorting) "qJx" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/hop, @@ -83000,6 +83797,7 @@ /obj/effect/turf_decal/siding/trimline/corner{ dir = 1 }, +/obj/structure/displaycase, /turf/simulated/floor/plasteel, /area/station/public/vacant_store) "qLE" = ( @@ -83036,7 +83834,7 @@ /obj/machinery/access_button{ autolink_id = "fpmaint_btn_int"; pixel_x = -24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -83119,7 +83917,7 @@ /obj/machinery/access_button/north{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/simulated/floor/plasteel{ @@ -83178,6 +83976,9 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/light_switch/east{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -83339,6 +84140,15 @@ /area/station/maintenance/asmaint) "qRs" = ( /obj/machinery/light/directional/south, +/obj/structure/table, +/obj/item/eftpos{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/eftpos{ + pixel_x = -6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -83387,19 +84197,18 @@ /turf/simulated/floor/wood/fancy, /area/station/public/sleep_female) "qSr" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 5 - }, -/obj/item/storage/belt/utility, +/obj/structure/shelf/engineering, /obj/machinery/camera{ c_tag = "Engineering Equipment Storage Lockers"; network = list("SS13","Engineering") }, +/obj/machinery/newscaster/directional/north, /obj/item/radio, /obj/item/radio, /obj/item/radio, -/obj/machinery/newscaster/directional/north, +/obj/item/storage/toolbox/mechanical, +/obj/item/flashlight, +/obj/item/storage/toolbox/mechanical, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -83413,7 +84222,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "qSL" = ( /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -83444,7 +84253,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "qTO" = ( @@ -83645,7 +84454,7 @@ dir = 8; icon_state = "brown" }, -/area/station/supply/office) +/area/station/supply/sorting) "qXL" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -83993,10 +84802,29 @@ }, /area/station/medical/reception) "rdu" = ( -/obj/structure/rack, -/obj/item/storage/box, -/obj/item/storage/box, -/obj/item/storage/belt/utility, +/obj/structure/shelf/engineering, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_y = -4; + pixel_x = -8 + }, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_y = -4 + }, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/clothing/mask/gas{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/clothing/mask/gas{ + pixel_y = 8 + }, +/obj/item/clothing/mask/gas{ + pixel_y = 8; + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" @@ -84117,7 +84945,7 @@ }, /area/station/security/permabrig) "rgs" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/apmaint) "rgv" = ( @@ -84162,7 +84990,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "rhk" = ( @@ -84216,7 +85044,8 @@ pixel_x = 4; pixel_y = 6 }, -/obj/machinery/status_display/directional/north, +/obj/machinery/status_display/directional/east, +/obj/machinery/light_switch/north, /turf/simulated/floor/wood/oak, /area/station/command/office/blueshield) "rix" = ( @@ -84380,7 +85209,7 @@ /turf/space, /area/space/nearstation) "rmi" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -84420,21 +85249,21 @@ /turf/space, /area/space/nearstation) "rmV" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/station/public/storage/office) "rna" = ( /obj/structure/rack, -/obj/item/storage/toolbox/emergency/old, +/obj/item/storage/toolbox/emergency/old{ + pixel_y = 2 + }, /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel, /area/station/engineering/control) @@ -84443,7 +85272,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "rng" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "rnu" = ( @@ -84477,6 +85306,20 @@ icon_state = "darkyellowfull" }, /area/station/engineering/control) +"ron" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/wood/fancy, +/area/station/legal/courtroom/gallery) "rov" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 10 @@ -84484,6 +85327,12 @@ /obj/structure/lattice/catwalk, /turf/space, /area/space/nearstation) +"roK" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, +/turf/simulated/floor/plating, +/area/station/legal/courtroom/gallery) "roN" = ( /obj/machinery/hologram/holopad, /obj/structure/disposalpipe/segment{ @@ -84775,7 +85624,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "rwI" = ( @@ -84799,7 +85648,7 @@ /area/station/science/robotics/chargebay) "rxm" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "rxp" = ( @@ -84808,9 +85657,7 @@ /area/station/engineering/ai_transit_tube) "rxK" = ( /obj/machinery/status_display/directional/east, -/obj/machinery/porta_turret{ - dir = 8 - }, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/bluegrid, /area/station/turret_protected/ai) "rxV" = ( @@ -84965,19 +85812,15 @@ /area/station/science/toxins/launch) "rAR" = ( /obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/stack/cable_coil, /obj/item/analyzer{ pixel_x = -5; pixel_y = 5 }, /obj/item/taperecorder{ - pixel_x = 5; + pixel_x = 11; pixel_y = 5 }, +/obj/structure/extinguisher_cabinet/directional/south, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -85000,7 +85843,7 @@ /turf/simulated/floor/wood/fancy/cherry, /area/station/service/theatre) "rCg" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/asmaint) "rCn" = ( @@ -85027,6 +85870,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/status_display/directional/east, /turf/simulated/floor/carpet/green, /area/station/public/arcade) "rDI" = ( @@ -85066,7 +85910,12 @@ "rDV" = ( /obj/structure/table, /obj/item/reagent_containers/drinks/bottle/cream{ - pixel_y = 8 + pixel_y = 10; + pixel_x = 6 + }, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = -5; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -85327,7 +86176,7 @@ }, /area/station/science/explab) "rID" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) @@ -85513,7 +86362,7 @@ int_button_link_id = "fpsolar_btn_int"; int_door_link_id = "fpsolar_door_int"; pixel_x = 25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "fpsolar_vent" }, /obj/structure/cable{ @@ -85590,6 +86439,13 @@ }, /turf/simulated/floor/wood/fancy, /area/station/public/sleep_male) +"rOu" = ( +/obj/machinery/firealarm/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/station/engineering/atmos) "rPa" = ( /obj/effect/decal/cleanable/dust, /obj/effect/landmark/damageturf, @@ -85758,7 +86614,7 @@ }, /area/station/security/permabrig) "rRt" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/engineering/utility) "rRy" = ( @@ -85783,16 +86639,10 @@ /area/station/command/bridge) "rRW" = ( /obj/effect/turf_decal/delivery/hollow, -/obj/structure/table, -/obj/item/storage/box/disks_plantgene{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/box/disks_plantgene{ - pixel_x = 2; - pixel_y = 2 +/obj/structure/closet/crate/hydroponics/prespawned, +/obj/machinery/camera{ + c_tag = "Hydroponics Storage" }, -/obj/item/storage/box/disks_plantgene, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -85906,6 +86756,7 @@ /area/station/engineering/control) "rUR" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkblue" @@ -85926,9 +86777,7 @@ }, /area/station/engineering/supermatter_room) "rVt" = ( -/obj/machinery/porta_turret{ - dir = 8 - }, +/obj/machinery/porta_turret/ai_turret, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -86025,7 +86874,7 @@ dir = 1 }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "rWA" = ( /obj/machinery/clonepod, /obj/machinery/alarm/directional/south, @@ -86068,6 +86917,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "browncorner" @@ -86149,6 +87003,17 @@ /obj/structure/table, /turf/simulated/floor/plating, /area/station/maintenance/assembly_line) +"rXY" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/station/supply/office) "rYm" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -86306,6 +87171,7 @@ c_tag = "Engineering SM Prep Room"; network = list("SS13","Engineering") }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkyellow" @@ -86342,7 +87208,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "scB" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical, @@ -86799,7 +87665,7 @@ /obj/machinery/access_button{ autolink_id = "fpmaint_btn_ext"; pixel_x = 24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -86882,12 +87748,9 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/aft) "sms" = ( -/obj/machinery/light/directional/west, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "yellow" - }, -/area/station/engineering/atmos) +/obj/machinery/light/floor, +/turf/simulated/floor/plating, +/area/station/engineering/tech_storage) "smu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -87001,8 +87864,7 @@ /area/station/supply/storage) "snE" = ( /obj/structure/closet/crate/secure{ - req_one_access = list(33,41); - req_one_access_txt = "33;41" + req_one_access = list(33,41) }, /mob/living/simple_animal/hostile/scarybat, /obj/effect/spawner/random_spawners/id_skins, @@ -87147,7 +88009,7 @@ /area/station/security/permabrig) "sqc" = ( /obj/effect/decal/cleanable/dust, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fore) "sqf" = ( @@ -87437,7 +88299,7 @@ dir = 4 }, /turf/simulated/wall, -/area/station/supply/office) +/area/station/supply/sorting) "suV" = ( /obj/structure/table/wood, /obj/item/paper_bin/nanotrasen{ @@ -87626,12 +88488,12 @@ icon_state = "0-8" }, /obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, /obj/item/stack/cable_coil{ - amount = 15 + amount = 15; + pixel_y = 7 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -1 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -87817,6 +88679,7 @@ /area/station/security/prisonlockers) "sBi" = ( /obj/structure/filingcabinet, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/wood/oak, /area/station/command/office/ntrep) "sBx" = ( @@ -88064,32 +88927,28 @@ /turf/simulated/floor/wood/fancy/cherry, /area/station/service/theatre) "sEn" = ( -/obj/structure/table, -/obj/item/tank/internals/emergency_oxygen/nitrogen{ - pixel_x = 6; - pixel_y = -2 - }, -/obj/item/tank/internals/emergency_oxygen/nitrogen{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/tank/internals/emergency_oxygen/nitrogen{ - layer = 3.1; - pixel_x = 6; - pixel_y = 10 - }, +/obj/structure/shelf/medbay, /obj/item/tank/internals/emergency_oxygen/plasma{ - pixel_x = -6; - pixel_y = -2 + pixel_y = -6; + pixel_x = -8 }, /obj/item/tank/internals/emergency_oxygen/plasma{ - pixel_x = -6; - pixel_y = 4 + pixel_y = -6 }, /obj/item/tank/internals/emergency_oxygen/plasma{ - layer = 3.1; - pixel_x = -6; - pixel_y = 10 + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/tank/internals/emergency_oxygen/nitrogen{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/tank/internals/emergency_oxygen/nitrogen{ + pixel_y = 8 + }, +/obj/item/tank/internals/emergency_oxygen/nitrogen{ + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -88173,19 +89032,29 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "sFE" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/spray/pestspray, -/obj/item/reagent_containers/spray/pestspray, -/obj/item/clothing/gloves/botanic_leather, -/obj/item/cultivator, -/obj/item/cultivator, -/obj/item/shovel/spade, -/obj/item/shovel/spade, -/obj/item/plant_analyzer, -/obj/item/storage/bag/plants/seed_sorting_tray, +/obj/structure/shelf, +/obj/item/shovel/spade{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/plant_analyzer{ + pixel_y = -4 + }, +/obj/item/cultivator{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/shovel/spade{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/clothing/gloves/botanic_leather{ + pixel_y = 8 + }, +/obj/item/cultivator{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/grass, /area/station/security/permabrig) "sFQ" = ( @@ -88294,6 +89163,7 @@ "sHC" = ( /obj/machinery/economy/vending/coffee, /obj/machinery/light/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkblue" @@ -88416,7 +89286,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "sKS" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/medical/patients_rooms) "sLe" = ( @@ -88572,7 +89442,7 @@ /obj/machinery/access_button{ autolink_id = "fpsolar_btn_ext"; pixel_x = 24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/fore_port) @@ -88596,10 +89466,28 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/closet/secure_closet/freezer/fridge, /obj/machinery/camera{ c_tag = "Kitchen" }, +/obj/structure/shelf/service, +/obj/item/reagent_containers/condiment/soymilk{ + pixel_y = 12; + pixel_x = -8 + }, +/obj/item/reagent_containers/condiment/soymilk{ + pixel_y = 12 + }, +/obj/item/reagent_containers/condiment/soymilk{ + pixel_y = 12; + pixel_x = 8 + }, +/obj/item/reagent_containers/condiment/soymilk{ + pixel_x = -8 + }, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/soymilk{ + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -88872,7 +89760,7 @@ int_button_link_id = "assolar_btn_int"; int_door_link_id = "assolar_door_int"; pixel_x = 25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "assolar_vent" }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -88917,6 +89805,7 @@ }, /obj/machinery/power/apc/directional/south, /obj/structure/closet/crate/can, +/obj/item/newspaper, /turf/simulated/floor/plasteel, /area/station/public/vacant_store) "sTX" = ( @@ -88980,10 +89869,6 @@ pixel_x = 2; pixel_y = 10 }, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health{ - pixel_y = 6 - }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitegreen" @@ -89164,10 +90049,9 @@ /turf/simulated/floor/plating, /area/station/medical/medbay2) "sZe" = ( -/obj/structure/table, /obj/item/radio/intercom/directional/south, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, +/obj/structure/closet/crate, /turf/simulated/floor/plasteel, /area/station/public/vacant_store) "sZg" = ( @@ -89375,7 +90259,9 @@ "tdf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/electrical{ + pixel_y = 2 + }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, @@ -89739,13 +90625,13 @@ id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = 6; - req_one_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control/shutter/south{ id = "kitchenbar"; name = "Kitchen Bar Shutters Control"; pixel_x = -6; - req_one_access_txt = "28" + req_access = list(28) }, /obj/machinery/processor, /turf/simulated/floor/plasteel{ @@ -90258,13 +91144,12 @@ /area/station/engineering/hallway) "tsO" = ( /obj/structure/table, -/obj/item/gun/syringe{ - pixel_y = 6 +/obj/item/soap/deluxe/laundry{ + pixel_y = 4 }, -/obj/item/gun/syringe{ - pixel_y = 3 +/obj/item/soap/deluxe/laundry{ + pixel_y = 8 }, -/obj/item/gun/syringe, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -90376,20 +91261,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/item/robotanalyzer, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 10; - pixel_x = -3; - pixel_y = 6 +/obj/machinery/cell_charger{ + pixel_x = 2; + pixel_y = 2 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -90681,7 +91555,9 @@ /area/station/aisat/atmos) "tCl" = ( /obj/structure/table, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_y = 2 + }, /obj/item/radio/intercom/directional/west, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -90719,7 +91595,7 @@ dir = 4; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "tDn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -91156,17 +92032,9 @@ /area/station/medical/chemistry) "tMg" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 +/obj/machinery/reagentgrinder{ + pixel_y = 8 }, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/pillbottles, /turf/simulated/floor/engine, /area/station/science/misc_lab) "tMq" = ( @@ -91274,6 +92142,7 @@ /area/station/medical/surgery/observation) "tOs" = ( /obj/effect/spawner/random_spawners/cobweb_right_frequent, +/obj/structure/table, /turf/simulated/floor/plating, /area/station/engineering/utility) "tOE" = ( @@ -91520,9 +92389,18 @@ /area/station/medical/surgery/observation) "tSu" = ( /obj/structure/table, -/obj/item/clipboard, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/clipboard{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "darkbluecorners" }, @@ -91554,7 +92432,7 @@ /area/station/maintenance/turbine) "tSN" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -91590,7 +92468,7 @@ /obj/machinery/access_button{ autolink_id = "fssolar_btn_int"; pixel_x = 24; - req_one_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/port) @@ -91694,10 +92572,24 @@ icon_state = "dark" }, /area/station/engineering/dronefabricator) +"tVb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/station/supply/sorting) "tVd" = ( /obj/structure/table/reinforced, -/obj/machinery/reagentgrinder, /obj/machinery/light/directional/east, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -10; + pixel_y = 2 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/stack/sheet/mineral/plasma{ + pixel_x = -4 + }, /turf/simulated/floor/engine, /area/station/science/misc_lab) "tVq" = ( @@ -91839,8 +92731,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "tXE" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 8 @@ -91962,20 +92859,20 @@ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/door_control/shutter/west{ desc = "A remote control-switch for the engineering security doors."; id = "Engineering"; name = "Engineering Lockdown"; pixel_y = 10; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/door_control/shutter/west{ id = "atmos"; name = "Atmospherics Lockdown"; pixel_y = -10; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/computer/monitor{ dir = 4; @@ -91992,6 +92889,12 @@ /obj/structure/sign/poster/official/random/east, /obj/structure/table, /obj/item/clothing/gloves/color/latex, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 18 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whitepurple" @@ -92060,7 +92963,7 @@ /obj/machinery/turretid/stun{ name = "AI Satellite Atmospherics Turret Control"; pixel_x = 4; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/wall/r_wall, /area/station/aisat/atmos) @@ -92093,24 +92996,26 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "ubo" = ( -/obj/structure/rack, +/obj/structure/shelf/command, /obj/item/circuitboard/robotics{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/circuitboard/mecha_control{ - pixel_x = -2; - pixel_y = 2 + pixel_x = -6; + pixel_y = 8 }, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/item/circuitboard/rnd_backup_console, +/obj/item/circuitboard/rnd_backup_console{ + pixel_x = -6; + pixel_y = -4 + }, /obj/item/circuitboard/rnd_network_controller{ - pixel_y = -2; - pixel_x = 2 + pixel_y = -4 + }, +/obj/item/circuitboard/mecha_control{ + pixel_x = 5; + pixel_y = -4 }, /turf/simulated/floor/plasteel{ icon_state = "darkyellow" @@ -92140,6 +93045,18 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) +"ubX" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light_switch/east, +/turf/simulated/floor/wood/fancy/cherry, +/area/station/legal/courtroom/gallery) "ucB" = ( /obj/structure/cable{ d1 = 1; @@ -92313,6 +93230,7 @@ dir = 4 }, /obj/machinery/firealarm/directional/south, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ icon_state = "yellow" }, @@ -92399,7 +93317,7 @@ }, /area/station/hallway/primary/central/nw) "ugC" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "ugT" = ( @@ -92426,6 +93344,22 @@ anchored = 1 }, /obj/structure/disposalpipe/segment/corner, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -92539,7 +93473,7 @@ }, /area/station/engineering/ai_transit_tube) "ujX" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 }, @@ -92562,7 +93496,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/abandonedbar) "uki" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/fsmaint) @@ -93020,7 +93954,7 @@ int_button_link_id = "fssolar_btn_int"; int_door_link_id = "fssolar_door_int"; pixel_x = 25; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "fssolar_vent" }, /turf/simulated/floor/plating, @@ -93075,6 +94009,7 @@ /area/station/supply/qm) "uuo" = ( /obj/item/kirbyplants, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purplecorner" @@ -93218,7 +94153,7 @@ /area/station/turret_protected/aisat/interior) "uwi" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/sign/xenobio{ pixel_x = -31 }, @@ -93328,8 +94263,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "uxB" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/cable_coil, @@ -93568,7 +94508,7 @@ /turf/simulated/floor/plating, /area/station/command/office/cmo) "uBz" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -93658,7 +94598,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/security/court, /turf/simulated/floor/wood/fancy, -/area/station/legal/courtroom) +/area/station/legal/courtroom/gallery) "uCU" = ( /obj/structure/closet, /obj/item/book/random/triple, @@ -93717,7 +94657,7 @@ /obj/machinery/access_button/south{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Prison Gate"; @@ -93747,8 +94687,10 @@ /area/station/medical/surgery/primary) "uFr" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -93874,7 +94816,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "uIf" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/asmaint2) "uIg" = ( @@ -93902,7 +94844,7 @@ /area/station/maintenance/apmaint) "uJq" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -93921,7 +94863,7 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /obj/machinery/access_button{ autolink_id = "evamaint_btn_int"; - req_one_access_txt = "13"; + req_access = list(13); pixel_x = 24 }, /turf/simulated/floor/plating, @@ -94034,19 +94976,23 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, /area/station/maintenance/fore) +"uLD" = ( +/obj/effect/mapping_helpers/airlock/access/any/service/hydroponics, +/obj/machinery/door/airlock/public/glass, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/service/hydroponics) "uLN" = ( /obj/structure/window/reinforced{ dir = 1 }, /obj/structure/table, -/obj/item/reagent_containers/glass/bucket{ - pixel_x = -5; - pixel_y = 2 - }, -/obj/item/reagent_containers/glass/bucket{ - pixel_x = 6; - pixel_y = 2 - }, /obj/machinery/camera{ c_tag = "Hydroponics Pasture"; dir = 9 @@ -94055,6 +95001,14 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/item/eftpos{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/eftpos{ + pixel_x = -6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, @@ -94085,7 +95039,9 @@ /area/station/engineering/atmos) "uMr" = ( /obj/structure/table, -/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -94177,6 +95133,7 @@ "uOT" = ( /obj/structure/closet/radiation, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light_switch/west, /turf/simulated/floor/plating, /area/station/engineering/secure_storage) "uPe" = ( @@ -94191,7 +95148,7 @@ autolink_id = "xeno_btn_int"; name = "Xenobiology Access Button"; pixel_y = 24; - req_one_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/stripes, /obj/structure/disposalpipe/segment{ @@ -94796,7 +95753,7 @@ /obj/machinery/access_button/west{ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; - req_one_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/stripes, /obj/machinery/door/poddoor/preopen{ @@ -94926,7 +95883,7 @@ dir = 1 }, /turf/simulated/floor/plasteel/freezer, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "vcb" = ( /obj/structure/cable{ d1 = 4; @@ -95007,7 +95964,7 @@ /turf/simulated/floor/bluegrid, /area/station/aisat/hall) "vdx" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/disposal) "vdL" = ( @@ -95049,6 +96006,7 @@ }, /area/station/service/kitchen) "veF" = ( +/obj/item/radio/intercom/directional/west, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "rampbottom" @@ -95060,26 +96018,8 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "veP" = ( -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutralcorner" - }, -/area/station/public/dorms) +/turf/simulated/wall, +/area/station/legal/courtroom/gallery) "veR" = ( /obj/structure/cable{ d1 = 2; @@ -95176,9 +96116,9 @@ /obj/machinery/turretid/lethal{ check_synth = 1; name = "AI Chamber Turret Control"; - req_one_access_txt = "75"; pixel_y = 26; - pixel_x = -7 + pixel_x = -7; + req_access = list(75) }, /turf/simulated/floor/bluegrid, /area/station/turret_protected/ai) @@ -95196,6 +96136,7 @@ icon_state = "4-8" }, /obj/machinery/light/small/directional/south, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/wood/oak, /area/station/command/office/blueshield) "vfJ" = ( @@ -95252,8 +96193,8 @@ int_button_link_id = "eng_n_tesla_btn_int"; int_door_link_id = "eng_n_tesla_door_int"; pixel_y = -25; - req_access_txt = "10;13"; - vent_link_id = "eng_n_tesla_vent" + vent_link_id = "eng_n_tesla_vent"; + req_access = list(10,13) }, /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 @@ -95437,6 +96378,18 @@ /obj/item/stack/sheet/metal, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) +"vlj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/station/supply/lobby) "vlF" = ( /obj/machinery/light_construct/small/east, /obj/structure/table/wood, @@ -95544,6 +96497,12 @@ icon_state = "darkyellowcorners" }, /area/station/engineering/equipmentstorage) +"vmZ" = ( +/obj/machinery/light_switch/east, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/construction) "vnc" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ @@ -95557,7 +96516,7 @@ dir = 9; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "vnO" = ( /obj/structure/disposalpipe/segment/corner{ dir = 1 @@ -95821,6 +96780,9 @@ faction = list("plants","neutral","hostile"); name = "Витамин" }, +/obj/machinery/hologram/holopad{ + pixel_x = -16 + }, /turf/simulated/floor/plasteel{ icon_state = "green" }, @@ -95936,7 +96898,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "vve" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/vacant_store) "vvq" = ( @@ -96030,23 +96992,14 @@ }, /area/station/science/robotics/chargebay) "vwU" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -96353,7 +97306,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "vBG" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -96473,7 +97426,7 @@ /obj/machinery/access_button{ autolink_id = "eng_n_tesla_btn_ext"; pixel_y = -24; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -96519,7 +97472,9 @@ /area/station/maintenance/fpmaint2) "vEr" = ( /obj/structure/rack, -/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags{ + pixel_y = 3 + }, /obj/item/radio/intercom/directional/west, /turf/simulated/floor/plasteel{ dir = 10; @@ -96673,7 +97628,10 @@ /obj/item/stack/sheet/cardboard{ amount = 10 }, -/obj/machinery/alarm/directional/south, +/obj/machinery/camera{ + c_tag = "Departure Lounge South-West"; + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "bluecorner" @@ -96689,6 +97647,23 @@ /obj/machinery/alarm/directional/west, /turf/simulated/floor/carpet, /area/station/command/office/captain/bedroom) +"vGE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/station/supply/sorting) "vHd" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -96721,6 +97696,7 @@ /obj/structure/sign/poster/official/high_class_martini{ pixel_y = 32 }, +/obj/machinery/firealarm/directional/east, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -97017,7 +97993,7 @@ dir = 4 }, /turf/simulated/floor/plasteel/freezer, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "vNj" = ( /obj/structure/cable{ d1 = 4; @@ -97212,7 +98188,7 @@ int_door_link_id = "fpmaint_door_int"; pixel_x = 24; pixel_y = 6; - req_one_access_txt = "13"; + req_access = list(13); vent_link_id = "fpmaint_vent" }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -97428,7 +98404,7 @@ /turf/simulated/floor/wood/fancy/cherry, /area/station/command/office/captain) "vUq" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -97841,6 +98817,7 @@ /area/station/medical/medbay2) "wbM" = ( /obj/machinery/cryopod, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitegreencorner" @@ -97900,7 +98877,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "wcA" = ( /obj/machinery/computer/operating, /turf/simulated/floor/plasteel{ @@ -97915,9 +98892,9 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/station/security/execution) +/area/station/legal/courtroom/gallery) "wcG" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/apmaint) "wcS" = ( @@ -98047,7 +99024,7 @@ "wgA" = ( /obj/effect/landmark/burnturf, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) "wgG" = ( @@ -98292,36 +99269,28 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "wna" = ( -/obj/structure/table, -/obj/item/storage/box/syringes{ - layer = 3.9; - pixel_x = -4; - pixel_y = -8 - }, -/obj/item/storage/box/syringes{ - layer = 3.9; - pixel_x = 8; - pixel_y = -8 +/obj/structure/shelf/medbay, +/obj/item/storage/box/gloves{ + pixel_y = -4; + pixel_x = -8 }, -/obj/item/storage/box/autoinjectors{ - layer = 3.8; - pixel_x = -4; - pixel_y = 2 +/obj/item/storage/box/bodybags{ + pixel_y = -4 }, -/obj/item/storage/box/autoinjectors{ - layer = 3.8; - pixel_x = 8; - pixel_y = 2 +/obj/item/storage/box/masks{ + pixel_y = -4; + pixel_x = 8 }, /obj/item/storage/box/gloves{ - layer = 3.7; - pixel_x = -4; - pixel_y = 12 + pixel_y = 8; + pixel_x = -8 }, -/obj/item/storage/box/gloves{ - layer = 3.7; - pixel_x = 8; - pixel_y = 12 +/obj/item/storage/box/bodybags{ + pixel_y = 8 + }, +/obj/item/storage/box/masks{ + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ icon_state = "whitebluefull" @@ -98491,19 +99460,10 @@ }, /area/station/engineering/hallway) "wpN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/disposalpipe/segment/corner{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/service/hydroponics) +/obj/machinery/light/small/directional/north, +/obj/effect/spawner/random/storage, +/turf/simulated/floor/plating, +/area/station/maintenance/apmaint) "wpW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -98838,19 +99798,28 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/table, -/obj/item/storage/box/donkpockets{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/reagent_containers/glass/beaker{ - pixel_x = 6; - pixel_y = 4 - }, +/obj/structure/shelf/service, /obj/structure/sign/poster/official/fruit_bowl{ pixel_y = 32 }, -/obj/machinery/light/directional/north, +/obj/item/reagent_containers/condiment/milk{ + pixel_y = 12; + pixel_x = -8 + }, +/obj/item/reagent_containers/condiment/milk{ + pixel_y = 12 + }, +/obj/item/reagent_containers/condiment/milk{ + pixel_y = 12; + pixel_x = 8 + }, +/obj/item/reagent_containers/condiment/milk{ + pixel_x = -8 + }, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk{ + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -98880,6 +99849,7 @@ /obj/item/stack/packageWrap{ pixel_y = 1 }, +/obj/item/book/manual/wiki/sop_service, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -98906,7 +99876,7 @@ int_door_link_id = "evamaint_door_int"; name = "EVA Airlock Console"; pixel_x = 25; - req_one_access_txt = "1;5;11;18;24"; + req_access = list(1,5,11,18,24); vent_link_id = "evamaint_vent" }, /obj/machinery/atmospherics/pipe/manifold/hidden{ @@ -99100,12 +100070,16 @@ /obj/structure/railing/cap{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 }, /turf/simulated/floor/plasteel/stairs/left, /area/station/public/dorms) @@ -99161,6 +100135,7 @@ "wBy" = ( /obj/machinery/light/directional/east, /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -99176,6 +100151,7 @@ /area/station/medical/cloning) "wBH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plating, /area/station/maintenance/port) "wBM" = ( @@ -99221,11 +100197,7 @@ /area/station/science/xenobiology) "wCk" = ( /obj/machinery/light/directional/west, -/obj/machinery/porta_turret{ - dir = 4; - installation = /obj/item/gun/energy/gun; - name = "hallway turret" - }, +/obj/machinery/porta_turret/ai_turret/disable, /turf/simulated/floor/bluegrid, /area/station/aisat/hall) "wCq" = ( @@ -99292,7 +100264,7 @@ }, /obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel/freezer, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "wDe" = ( /obj/structure/sign/poster/contraband/random/west, /obj/effect/decal/cleanable/dirt, @@ -99579,17 +100551,20 @@ }, /area/station/security/permabrig) "wJf" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/office) "wJg" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/storage) "wJn" = ( @@ -99618,6 +100593,7 @@ dir = 5 }, /obj/machinery/atmospherics/portable/scrubber, +/obj/machinery/light_switch/south, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "wKx" = ( @@ -99720,7 +100696,7 @@ /obj/machinery/door/window/classic/reversed{ dir = 4; name = "Do Not Revive"; - req_one_access_txt = "6" + req_access = list(6) }, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/airlock/windoor/access/any/medical/morgue{ @@ -99832,7 +100808,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "wNT" = ( /obj/structure/sign/bobross{ pixel_y = 32 @@ -99901,7 +100877,7 @@ /turf/simulated/floor/bluegrid, /area/station/maintenance/asmaint) "wPx" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall/r_wall, /area/station/maintenance/fore) "wPF" = ( @@ -99947,7 +100923,6 @@ /obj/machinery/atmospherics/pipe/manifold/visible/cyan{ dir = 8 }, -/obj/machinery/light/directional/west, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 8; @@ -100118,7 +101093,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "wTp" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/fpmaint2) "wTE" = ( @@ -100173,7 +101148,7 @@ /area/station/maintenance/asmaint) "wVH" = ( /obj/machinery/door/airlock/security/glass{ - req_one_access_txt = "1" + req_access = list(1) }, /obj/effect/mapping_helpers/airlock/autoname, /obj/structure/cable{ @@ -100434,19 +101409,25 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "xaU" = ( -/obj/structure/table, -/obj/item/eftpos{ - pixel_x = 5; - pixel_y = 2 - }, -/obj/item/eftpos{ - pixel_x = -6; - pixel_y = 2 - }, +/obj/structure/shelf/service, /obj/structure/cable{ - d1 = 1; d2 = 4; - icon_state = "1-4" + icon_state = "0-4" + }, +/obj/machinery/power/apc/directional/west, +/obj/item/clothing/glasses/hud/hydroponic{ + pixel_y = -4; + pixel_x = -6 + }, +/obj/item/clothing/glasses/hud/hydroponic{ + pixel_y = -4 + }, +/obj/item/clothing/glasses/hud/hydroponic{ + pixel_y = -4; + pixel_x = 6 + }, +/obj/item/watertank{ + pixel_y = 8 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -100578,18 +101559,30 @@ }, /area/station/public/dorms) "xdo" = ( -/obj/structure/table, +/obj/structure/shelf/engineering, /obj/machinery/requests_console/directional/east, -/obj/item/stack/sheet/glass{ - amount = 50 +/obj/item/stack/sheet/glass/fifty{ + pixel_x = -6; + pixel_y = -4 }, -/obj/item/stack/sheet/glass{ - amount = 50 +/obj/item/stack/sheet/glass/fifty{ + pixel_y = -4 }, -/obj/item/stack/sheet/glass{ - amount = 50 +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/stack/sheet/plasteel/fifteen{ + pixel_y = 4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = 6; + pixel_y = 4 }, -/obj/item/crowbar/large, /turf/simulated/floor/plasteel{ icon_state = "darkyellowfull" }, @@ -100800,7 +101793,7 @@ }, /area/station/security/interrogation) "xfQ" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -100849,6 +101842,20 @@ icon_state = "whitebluefull" }, /area/station/medical/reception) +"xgI" = ( +/obj/structure/rack, +/obj/item/clothing/head/welding{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/clothing/head/welding{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/engineering/hallway) "xgO" = ( /obj/structure/cable{ d1 = 1; @@ -101794,11 +102801,12 @@ dir = 5 }, /obj/structure/railing/cap/reversed, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "caution" }, -/area/station/public/dorms) +/area/station/public/fitness) "xyr" = ( /obj/machinery/light/directional/west, /obj/effect/turf_decal/stripes/line{ @@ -102032,17 +103040,15 @@ /area/station/maintenance/storage) "xCH" = ( /obj/structure/table, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 +/obj/item/radio/intercom/directional/west, +/obj/item/flash{ + pixel_x = 8; + pixel_y = 4 }, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 +/obj/item/flash{ + pixel_x = -4; + pixel_y = 4 }, -/obj/item/flash, -/obj/item/flash, -/obj/item/radio/intercom/directional/west, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "xDc" = ( @@ -102360,9 +103366,6 @@ /turf/simulated/floor/plating, /area/station/supply/qm) "xJk" = ( -/obj/item/storage/box/monkeycubes{ - pixel_y = 3 - }, /obj/structure/table/glass, /obj/machinery/airlock_controller/access_controller{ ext_button_link_id = "viro_btn_ext"; @@ -102378,6 +103381,10 @@ icon_state = "4-8" }, /obj/machinery/light/directional/south, +/obj/item/storage/belt/medical, +/obj/item/clothing/glasses/hud/health{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "whitegreen" }, @@ -102525,7 +103532,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "xLs" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) @@ -102701,7 +103708,7 @@ /area/station/engineering/break_room) "xOA" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "xOH" = ( @@ -102845,10 +103852,13 @@ /area/station/service/bar) "xPO" = ( /obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 4 }, -/obj/item/pen, /obj/structure/table, /obj/machinery/newscaster/directional/north, /turf/simulated/floor/plasteel, @@ -103337,8 +104347,9 @@ /area/station/public/arcade) "xXO" = ( /obj/structure/table, -/obj/item/storage/belt/utility, -/obj/item/storage/toolbox/mechanical, +/obj/item/storage/belt/utility{ + pixel_y = 6 + }, /obj/item/clothing/glasses/welding, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -103496,15 +104507,15 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "yaa" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "yab" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -103520,6 +104531,10 @@ /obj/effect/mapping_helpers/airlock/access/any/medical/psychology, /turf/simulated/floor/wood/oak, /area/station/medical/psych) +"yac" = ( +/obj/effect/spawner/random/storage, +/turf/simulated/floor/plating, +/area/station/maintenance/apmaint) "yad" = ( /obj/machinery/door/window/classic/reversed{ dir = 4; @@ -103595,8 +104610,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel, -/area/station/supply/office) +/area/station/supply/lobby) "ybX" = ( /obj/machinery/camera{ c_tag = "Toilet"; @@ -103608,7 +104628,7 @@ /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, -/area/station/public/toilet) +/area/station/public/toilet/unisex) "ycf" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/machinery/door/poddoor/shutters{ @@ -103701,19 +104721,15 @@ "yfb" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/rack, -/obj/item/stack/sheet/metal{ - amount = 50; +/obj/item/stack/sheet/metal/fifty{ pixel_x = 2; pixel_y = 2 }, -/obj/item/stack/sheet/metal{ - amount = 50; +/obj/item/stack/sheet/metal/fifty{ pixel_x = 2; pixel_y = 2 }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, +/obj/item/stack/sheet/glass/fifty, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -103927,7 +104943,9 @@ /area/station/hallway/secondary/exit) "yiu" = ( /obj/structure/table, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -104053,7 +105071,7 @@ /obj/machinery/access_button/east{ autolink_id = "scibomb_btn_int"; pixel_y = 24; - req_one_access_txt = "13"; + req_access = list(13); pixel_x = 0 }, /turf/simulated/floor/plating, @@ -104105,17 +105123,30 @@ }, /area/station/legal/courtroom) "ykA" = ( -/obj/structure/table, -/obj/item/t_scanner, +/obj/structure/shelf/engineering, +/obj/machinery/light/directional/north, /obj/item/multitool{ - pixel_x = 5 + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/cartridge/atmos{ + pixel_y = -6 + }, +/obj/item/t_scanner{ + pixel_x = 8; + pixel_y = -6 + }, +/obj/item/multitool{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/cartridge/atmos{ + pixel_y = 6 + }, +/obj/item/t_scanner{ + pixel_x = 8; + pixel_y = 6 }, -/obj/item/radio/headset/headset_eng, -/obj/item/cartridge/atmos, -/obj/item/cartridge/atmos, -/obj/item/t_scanner, -/obj/item/wrench, -/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -115360,7 +116391,7 @@ aXy aYZ aYZ aYZ -beG +aXs aVV aSd aSd @@ -118739,7 +119770,7 @@ aaa cng uQV lNb -coL +yac cgQ cdG cdG @@ -120024,7 +121055,7 @@ aaa gzN cgQ gYs -qov +wpN rgR coL cgQ @@ -124112,7 +125143,7 @@ blM bvq blQ mBl -cRC +bUR xUg mBl blQ @@ -124846,7 +125877,7 @@ ayx gMl kkv aEO -fMM +koT avi aEO sFE @@ -125914,7 +126945,7 @@ ulv bBj bCz ulv -ulv +kOt wAO bIW crC @@ -126175,7 +127206,7 @@ bKQ wAO bJi bUa -jox +rXY pHG sHs sEO @@ -126685,9 +127716,9 @@ byy qnq osB bDU -bzJ +qJg bHc -bzJ +qJg cjq bMx bTv @@ -126940,19 +127971,19 @@ bxd byk byz bzG -bzJ -bzJ -bzJ +qJg +qJg +qJg bAF -bDX -sBS -bDX +lfW +vGE +lfW bSK bPV bRN bBn itH -bBn +pUQ bYJ bzJ cbJ @@ -127195,15 +128226,15 @@ iMe efW bxd bDN -bBn +aVN lWU bIG bJE -hTA +kMj odl qXB bNW -bzJ +qJg bzJ bQe bDX @@ -127452,20 +128483,20 @@ sTU efW iwe bDN -bBn +aVN lWU nPG -lFv +tVb lFv oJF pCW qpw -bzJ +qJg bOt bHi bUU bUU -itH +vlj iLP tjc cao @@ -127702,21 +128733,21 @@ vJv bgz blW ycf -bsR +feC eJY bqJ bwA vve bxf -bzJ +qJg bzI nHx -lmq -lmq -lmq +qjZ +qjZ +qjZ ekd -lmq -lmq +qjZ +qjZ bVk lmq lmq @@ -127965,22 +128996,22 @@ lPT sZe efW bxd -bzJ +qJg bzH -bBo -bBn +lzR +aVN qus box -bBn +aVN bKC -bFA +hiL bMA bFA yaa dvC bBo -xgn -bBn +gMB +nvw tjc lzN uNj @@ -128222,20 +129253,20 @@ gly bwz efW bxg -bzJ +qJg bzK bBp bCE bEf bFy bHn -bzJ +qJg ccY -bzJ +qJg bSQ bUp dyA -bBn +nFw bVt bWU tjc @@ -128479,22 +129510,22 @@ wwM efW efW suR -bzJ -bzJ -bzJ -bzJ -bDX -bDX -bDX -bzJ +qJg +qJg +qJg +qJg +lfW +lfW +lfW +qJg ccZ -bzJ -bDX -bDX +qJg +dUw +dUw uxt bPW -bDX -bDX +dUw +dUw tjc tjc tjc @@ -128706,7 +129737,7 @@ aDJ aqI aGr aHx -aOB +aLx pBh aNJ aKr @@ -128967,7 +129998,7 @@ aOB nUh aLN nUh -uXd +oEp aOz aHC aEl @@ -129224,7 +130255,7 @@ aOB eNs aLQ aKl -uXd +aOB aOB aRP aEl @@ -129481,7 +130512,7 @@ aOB nUh nUh nUh -uXd +aOB aOB aRM aEl @@ -129738,7 +130769,7 @@ nUh nUh xTH nUh -qJg +nUh nUh aRR aEl @@ -129996,7 +131027,7 @@ fda aLR pYd aOw -fFz +aPA aRQ aEl xOQ @@ -130511,8 +131542,8 @@ uCT aHA aHA aHA -aEl -lQx +veP +nJo tkb aRw bah @@ -130763,19 +131794,19 @@ aFo aIl aJc aPC -aOB +hag aLY -aOB -aJc -aPC -aEl +gEZ +iUh +jZo +veP gZn gEH aRw baj bbP bdA -bdA +ecg bit vgd bdX @@ -131025,7 +132056,7 @@ aLT rWy aJc aPB -aEl +veP aGb gEH aRw @@ -131279,10 +132310,10 @@ lKL aJb qlA tXD -aOB +hag aJc aPE -aEl +veP aQl gEH aRw @@ -131338,7 +132369,7 @@ cgW cyD cyD cyD -cyD +vmZ czn cyD cyD @@ -131535,11 +132566,11 @@ aDe aHF aJd aKu -aLY -aOB -aOB -aOB -bCq +ron +hag +hag +hag +roK aPi xJn aYa @@ -131796,7 +132827,7 @@ gDS cWl cWl aPG -aEl +veP bag gEH aQl @@ -132046,14 +133077,14 @@ aCf inu jBe aKx -aNb +ubX aNb kbv pfE -aOB -aOB +hag +hag aPF -aEl +veP aPi wpW aYb @@ -132144,8 +133175,8 @@ jgS cRf xfI xuG -qjZ -vmA +jAM +qzV piF yfb aOS @@ -132303,14 +133334,14 @@ aDi aEg aFt aIl -aEl +veP aPx aPx aMa aNP aPx aPx -aEl +veP aad lwj aYh @@ -132334,10 +133365,10 @@ tKk bxA beE beE -mtR +oGA tEu lXe -mtR +oGA bIL beE paO @@ -132662,8 +133693,8 @@ cvy xcg lrJ lZV -aOS -gei +deO +rOu cSd fXt cRh @@ -133043,7 +134074,7 @@ aaa aab aaa aiv -ahG +afe aor acj acH @@ -133176,7 +134207,7 @@ cSA cJp dcH mgb -aOS +deO rwb dkA fXt @@ -133304,7 +134335,7 @@ adP ajj acj aif -adh +abP ajj vET vBJ @@ -133411,7 +134442,7 @@ tAk lBg dYQ lbb -cvB +csD cUw cHb cHk @@ -133817,7 +134848,7 @@ akl pEE ahV aiq -aiN +aiB ajr guL kAr @@ -133876,7 +134907,7 @@ bvC bxY beE beE -mtR +oGA hHp qZw oGA @@ -134074,9 +135105,9 @@ aeR agS jUf aip -aiB +aiN ajq -afe +ahG dCA alX amI @@ -135098,7 +136129,7 @@ akB aca aqd aco -alB +mkx lrF iIQ atY @@ -135195,7 +136226,7 @@ pxz cAu ctZ cmR -cDa +dvX cmG cBU cvx @@ -135367,7 +136398,7 @@ aek oUf inP inP -apI +dsy anA ahk npc @@ -135401,7 +136432,7 @@ aYI aRx oWF bea -aVN +aZs aZs aZs kiu @@ -135460,7 +136491,7 @@ lVk cwO fvi sJX -cwO +sms cwO cLJ kZv @@ -135612,7 +136643,7 @@ akB acb aqd act -aqd +cgv hyO bOV adi @@ -135755,7 +136786,7 @@ dop gru oWM dfF -dfD +cUM cSd ctJ dgQ @@ -135915,7 +136946,7 @@ aLA bbi shN wAj -fUQ +buU buU buU buU @@ -136126,7 +137157,7 @@ akB aca alB acu -aqd +cgv hyO knX yhS @@ -136230,7 +137261,7 @@ cvx cSb cwO eKz -cwO +dUW cEe cEe cBk @@ -136269,7 +137300,7 @@ dop gru oWM dfF -sms +qpq dkA ctJ cDS @@ -136640,7 +137671,7 @@ akB acb alB acv -aqd +cgv afx adm aij @@ -137438,7 +138469,7 @@ axU xZH otY aBp -aAC +aHU aBs ogL sqc @@ -137795,10 +138826,10 @@ daR cOi ykA tsL -wIO jhj +xgI qss -uqH +eiZ sRJ uqH uqH @@ -138052,7 +139083,7 @@ cZU oYb dfG uUy -kfu +wIO cJg cOi cZS @@ -141304,8 +142335,8 @@ aFJ aFJ bsx aaZ -aQG aZs +aQG aVq uCQ aZs @@ -141648,7 +142679,7 @@ nvN cqJ ehT dmz -dfN +nSv cXX dms cRj @@ -141811,10 +142842,10 @@ aFI aFI aFI aFI -aOI -aOI -aOI -aOI +fUQ +fUQ +fUQ +fUQ ewV aGP kiu @@ -142071,9 +143102,9 @@ aFI ggd qno eeW -aOI -aOI -aOI +fUQ +fUQ +fUQ xCf ePV iGP @@ -142081,7 +143112,7 @@ wsC ftc pmG wwL -veP +kvJ aOI acW bjz @@ -142581,7 +143612,7 @@ aZE ykv ngV aTJ -aOb +aFI bbv hBo klz @@ -143109,7 +144140,7 @@ vNh wCZ aUQ xZQ -kua +lwn aUQ aGJ aOF @@ -143378,7 +144409,7 @@ uxk uxk vep kqK -bof +fmk jTo rqa hOf @@ -144520,8 +145551,8 @@ drf drf dry drG -drI -dry +drM +fBi drE dry drR @@ -144659,8 +145690,8 @@ obX kjL bUO esC -cgv -beb +lcB +uLD ePE bfH wXC @@ -144915,10 +145946,10 @@ aGY vbB beb iYn -dUW -lcB +etb fNk -wpN +beb +etb djh wHl bef @@ -145182,7 +146213,7 @@ bef bef bef bef -fmk +bxM bef pou bAr @@ -146063,7 +147094,7 @@ drf dry drO drM -dry +qyu drE dry rxK @@ -148534,7 +149565,7 @@ bGw syf pOl bSJ -bRs +bNi bSJ pOl hfD @@ -151633,7 +152664,7 @@ ngB bNp bNp hLu -dsy +cbq cKT nXo cbq @@ -151653,7 +152684,7 @@ wsm cLa gVu cNx -cKT +fFz rKV cQB hhn @@ -152156,7 +153187,7 @@ oIJ uMa ctI spl -spl +iLb aac ufq spl @@ -152395,7 +153426,7 @@ bTb bTb bTb bTb -uMa +mUh awK spl cdk @@ -153193,7 +154224,7 @@ vdL cID cAP cLj -cLe +oIg nTm cOu cLb @@ -154981,7 +156012,7 @@ qQO fUW cgs cgs -eNn +bRs csL nSH rSS @@ -155729,7 +156760,7 @@ bEF cXs crw vvK -iIB +jNd ciY csL cga @@ -156243,7 +157274,7 @@ xho cXp yha bmm -qzV +gOd ciY cga hZN @@ -158299,7 +159330,7 @@ bjR iek byl bmm -iIB +rnx bEF aaa aaa @@ -158556,7 +159587,7 @@ bmm bmm byl bmm -rnx +aAC bEF aaa aaa @@ -164223,7 +165254,7 @@ aaa aaa aab cie -cic +cid clH ckb ckb @@ -164237,7 +165268,7 @@ ckb ckb ckb cDN -cic +cid cie aaa aaa diff --git a/_maps/map_files220/stations/deltastation.dmm b/_maps/map_files220/stations/deltastation.dmm index 400c0a37af91..58b635ff21c7 100644 --- a/_maps/map_files220/stations/deltastation.dmm +++ b/_maps/map_files220/stations/deltastation.dmm @@ -34,7 +34,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "aaZ" = ( /obj/effect/landmark/spawner/carp, /turf/space, @@ -61,7 +61,10 @@ /area/station/maintenance/starboard2) "abV" = ( /obj/structure/table/reinforced, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_y = 2 + }, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" @@ -136,11 +139,12 @@ "acn" = ( /obj/machinery/constructable_frame/machine_frame, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/economy/vending/wallmed/directional/east, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "aco" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -222,18 +226,18 @@ /turf/simulated/floor/plating, /area/station/maintenance/abandonedbar) "acU" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/automatic/sslr{ - pixel_x = -4 + pixel_y = 8 }, -/obj/item/gun/projectile/automatic/sslr, +/obj/effect/turf_decal/delivery/red/hollow, /obj/item/gun/projectile/automatic/sslr{ - pixel_x = 4 + pixel_y = 4 }, +/obj/item/gun/projectile/automatic/sslr, /obj/item/gun/projectile/automatic/sslr{ - pixel_x = 8 + pixel_y = -4 }, -/obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "acX" = ( @@ -280,8 +284,13 @@ /area/station/hallway/primary/central/north) "adr" = ( /obj/structure/table/reinforced, -/obj/item/kitchen/knife, -/obj/item/kitchen/rollingpin, +/obj/item/kitchen/knife{ + pixel_x = 8 + }, +/obj/item/kitchen/rollingpin{ + pixel_x = -8; + pixel_y = 2 + }, /turf/simulated/floor/plasteel/white, /area/station/service/kitchen) "adt" = ( @@ -631,7 +640,7 @@ desc = "A remote control switch for the IAA shutters."; id = "mechbayshutters"; name = "Mechanic's Desk Privacy Shutter Control"; - req_one_access_txt = "32" + req_access = list(32) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -642,6 +651,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/north, /obj/structure/closet/toolcloset, +/obj/structure/extinguisher_cabinet/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" @@ -699,7 +709,7 @@ /obj/machinery/door/window{ dir = 8; name = "Mechanic's Desk"; - req_one_access_txt = "32" + req_access = list(32) }, /obj/machinery/door/poddoor/shutters{ id_tag = "mechbayshutters"; @@ -911,7 +921,7 @@ icon_state = "0-8" }, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "agJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -946,17 +956,24 @@ /area/shuttle/arrival/station) "agV" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency{ + pixel_y = 2 + }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "agW" = ( /obj/structure/table/reinforced, -/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/regular{ + pixel_y = 2 + }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "agX" = ( /obj/structure/table/reinforced, -/obj/machinery/cell_charger, +/obj/machinery/cell_charger{ + pixel_x = 2; + pixel_y = 4 + }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "aha" = ( @@ -1175,7 +1192,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry) "aiL" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall/r_wall, /area/station/maintenance/apmaint) "aiQ" = ( @@ -1227,14 +1244,26 @@ /area/station/hallway/secondary/entry) "ajD" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/toy/figure/crew/assistant, +/obj/item/clipboard{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/toy/figure/crew/assistant{ + pixel_x = 4; + pixel_y = 4 + }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "ajF" = ( /obj/structure/table/reinforced, -/obj/item/folder, -/obj/item/storage/bag/dice, +/obj/item/storage/bag/dice{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/folder{ + pixel_x = -6; + pixel_y = 2 + }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "ajK" = ( @@ -1255,9 +1284,7 @@ /obj/structure/closet/crate, /obj/item/shard, /obj/effect/decal/cleanable/cobweb2, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 5; @@ -1279,7 +1306,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "ajN" = ( /obj/effect/landmark/damageturf, /obj/machinery/constructable_frame/machine_frame, @@ -1317,8 +1344,14 @@ /area/station/legal/courtroom) "akw" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -4; + pixel_y = 4 + }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "akx" = ( @@ -1335,7 +1368,9 @@ /area/shuttle/arrival/station) "akA" = ( /obj/structure/table/reinforced, -/obj/item/storage/secure/briefcase, +/obj/item/storage/secure/briefcase{ + pixel_y = 2 + }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "akB" = ( @@ -1371,29 +1406,17 @@ /turf/simulated/wall/mineral/titanium, /area/shuttle/arrival/station) "ali" = ( -/obj/structure/table/reinforced, /obj/effect/turf_decal/delivery/hollow, -/obj/item/healthanalyzer, -/obj/item/healthanalyzer, -/obj/item/healthanalyzer, -/obj/item/healthanalyzer, -/obj/item/multitool, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/circuitboard/mecha/ripley/peripherals, -/obj/item/flash, -/obj/item/flash, -/obj/item/flash, -/obj/item/flash, -/obj/item/mod/core/standard, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/machinery/button/windowtint/north{ id = "robotics" }, +/obj/structure/table/reinforced, +/obj/item/paicard{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "alk" = ( @@ -1761,8 +1784,7 @@ /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/crate, /obj/effect/spawner/random/maintenance, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, @@ -1795,8 +1817,7 @@ "amT" = ( /obj/effect/turf_decal/delivery/hollow, /obj/item/stack/rods, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, @@ -1805,7 +1826,7 @@ /area/station/supply/warehouse) "amU" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -1821,7 +1842,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "anl" = ( @@ -1913,9 +1934,7 @@ "anC" = ( /obj/effect/turf_decal/delivery/hollow, /obj/item/stack/rods, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/supply/warehouse) @@ -2023,13 +2042,15 @@ /area/station/supply/warehouse) "aoe" = ( /obj/structure/table, -/obj/random/toolbox, +/obj/random/toolbox{ + pixel_y = 2 + }, /obj/machinery/newscaster/directional/east, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry) "aof" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/supply/warehouse) "aog" = ( @@ -2271,7 +2292,9 @@ /area/station/public/vacant_office) "ape" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/ids, +/obj/item/storage/box/ids{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "blue" @@ -2294,9 +2317,24 @@ }, /area/station/command/customs) "aph" = ( -/obj/machinery/light/directional/east, -/turf/simulated/floor/plasteel, -/area/station/supply/storage) +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Kitchen Dinner Windows"; + name = "Kitchen Shutters" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/classic/normal{ + dir = 8; + name = "Kitchen Desk" + }, +/obj/effect/mapping_helpers/airlock/windoor/access/any/service/kitchen{ + dir = 8 + }, +/obj/item/clothing/head/cakehat{ + pixel_y = 2 + }, +/turf/simulated/floor/plating, +/area/station/service/kitchen) "api" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/delivery, @@ -2320,7 +2358,9 @@ /area/station/security/checkpoint/secondary) "apm" = ( /obj/structure/table/reinforced, -/obj/item/crowbar, +/obj/item/crowbar{ + pixel_y = 2 + }, /obj/item/restraints/handcuffs, /turf/simulated/floor/plasteel{ dir = 1; @@ -2329,8 +2369,14 @@ /area/station/security/checkpoint/secondary) "apn" = ( /obj/structure/table/reinforced, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/radio/security, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/radio/security{ + pixel_x = -6; + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "red" @@ -2494,7 +2540,7 @@ dir = 5; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "apR" = ( /obj/structure/table/wood, /obj/item/folder/blue{ @@ -2662,14 +2708,24 @@ /turf/simulated/floor/plasteel, /area/station/security/checkpoint/secondary) "aqv" = ( -/obj/structure/table/wood, +/obj/effect/spawner/random/storage, /obj/machinery/barsign{ pixel_y = 32 }, -/obj/item/wrench, -/obj/item/wirerod, -/obj/item/clothing/under/misc/waiter, -/obj/item/clothing/accessory/waistcoat, +/obj/item/stack/cable_coil/random{ + pixel_y = -6; + pixel_x = -6 + }, +/obj/item/stack/sheet/glass{ + pixel_y = -6 + }, +/obj/item/stack/sheet/glass{ + pixel_y = -6 + }, +/obj/item/stack/cable_coil/random{ + pixel_y = -6; + pixel_x = 6 + }, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) "aqw" = ( @@ -2677,8 +2733,11 @@ /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) "aqx" = ( +/obj/item/storage/fancy/matches{ + pixel_y = 6 + }, /obj/structure/table/wood, -/obj/item/storage/fancy/matches, +/obj/item/clothing/accessory/waistcoat, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) "aqy" = ( @@ -2692,14 +2751,23 @@ /area/station/maintenance/electrical_shop) "aqA" = ( /obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/taperecorder{ + pixel_x = 12; + pixel_y = 4 + }, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) "aqB" = ( /obj/structure/table/wood, /obj/item/storage/briefcase, -/obj/item/taperecorder, /obj/effect/landmark/damageturf, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) @@ -2716,14 +2784,11 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) "aqD" = ( -/obj/item/kirbyplants, -/obj/machinery/light/small/directional/north, -/obj/machinery/status_display/directional/north, -/turf/simulated/floor/wood/oak, -/area/station/maintenance/electrical_shop) +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/port) "aqE" = ( /obj/structure/table/wood, -/obj/item/clipboard, /obj/item/apc_electronics, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) @@ -2807,8 +2872,12 @@ /area/station/command/customs) "aqT" = ( /obj/structure/table/reinforced, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, +/obj/item/stack/packageWrap{ + pixel_y = 6 + }, +/obj/item/hand_labeler{ + pixel_y = -2 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "blue" @@ -2986,8 +3055,12 @@ /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) "arq" = ( +/obj/item/clothing/under/misc/waiter, /obj/structure/table/wood, -/obj/item/clothing/head/that, +/obj/item/clothing/head/that{ + pixel_x = -1; + pixel_y = 12 + }, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) "arr" = ( @@ -3006,18 +3079,7 @@ /area/station/maintenance/electrical_shop) "aru" = ( /obj/structure/table/wood, -/obj/item/poster/random_contraband{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/poster/random_contraband{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/poster/random_contraband{ - pixel_x = 2; - pixel_y = 2 - }, +/obj/item/clipboard, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) "arv" = ( @@ -3025,8 +3087,8 @@ dir = 8 }, /obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/landmark/damageturf, /obj/random/hampter, +/obj/effect/landmark/damageturf, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) "arw" = ( @@ -3044,7 +3106,9 @@ /turf/simulated/floor/plasteel/grimy, /area/station/public/vacant_office) "ary" = ( -/obj/structure/computerframe, +/obj/structure/computerframe{ + dir = 8 + }, /obj/item/stack/cable_coil/random, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) @@ -3140,8 +3204,6 @@ /area/station/command/customs) "arL" = ( /obj/structure/table/reinforced, -/obj/item/folder/blue, -/obj/item/pen, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -3198,14 +3260,12 @@ /turf/simulated/floor/plasteel, /area/station/command/customs) "arR" = ( -/obj/item/pen, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/item/folder/red, /obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ dir = 8; @@ -3312,7 +3372,6 @@ /area/station/maintenance/solar_maintenance/fore_port) "asl" = ( /obj/structure/table/wood, -/obj/item/clipboard, /obj/item/airalarm_electronics, /obj/item/airlock_electronics, /turf/simulated/floor/wood/oak, @@ -3323,7 +3382,9 @@ /turf/simulated/floor/plating, /area/station/command/customs) "aso" = ( -/obj/structure/computerframe, +/obj/structure/computerframe{ + dir = 8 + }, /obj/item/circuitboard/secure_data, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) @@ -3369,8 +3430,18 @@ /area/station/command/customs) "asy" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/folder/blue{ + pixel_x = -6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "blue" @@ -3424,8 +3495,18 @@ /area/station/security/checkpoint/secondary) "asG" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/folder/red{ + pixel_x = 6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -3746,6 +3827,9 @@ /area/station/engineering/controlroom) "ate" = ( /obj/structure/table/wood, +/obj/item/circuitboard/microwave{ + pixel_y = 6 + }, /obj/item/circuitboard/med_data, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) @@ -3755,7 +3839,9 @@ /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) "atg" = ( -/obj/structure/chair/stool, +/obj/structure/chair/stool{ + dir = 8 + }, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) "ath" = ( @@ -3789,7 +3875,9 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) "atn" = ( -/obj/structure/computerframe, +/obj/structure/computerframe{ + dir = 8 + }, /obj/machinery/status_display/directional/east, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) @@ -3847,13 +3935,13 @@ /area/station/maintenance/fore) "atz" = ( /obj/structure/closet/secure_closet, -/obj/item/storage/secure/briefcase, /obj/machinery/alarm/directional/south, /obj/structure/cable{ d2 = 4; icon_state = "0-4" }, /obj/machinery/power/apc/directional/west, +/obj/item/storage/secure/briefcase, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "blue" @@ -4059,59 +4147,61 @@ }, /area/station/security/warden) "auh" = ( -/obj/structure/table/wood, +/obj/effect/spawner/random/storage, /obj/machinery/alarm/directional/west, -/obj/item/circuitboard/microwave, -/obj/item/stack/sheet/glass{ - pixel_x = 5; - pixel_y = 5 +/obj/item/poster/random_contraband{ + pixel_x = -8; + pixel_y = -4 }, -/obj/item/stack/sheet/glass, -/obj/item/stack/cable_coil/random{ - pixel_x = 5; - pixel_y = 5 +/obj/item/poster/random_contraband{ + pixel_y = -4 + }, +/obj/item/poster/random_contraband{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/poster/random_contraband{ + pixel_x = -8; + pixel_y = 10 + }, +/obj/item/poster/random_contraband{ + pixel_y = 10 + }, +/obj/item/poster/random_contraband{ + pixel_y = 10; + pixel_x = 8 }, -/obj/item/stack/cable_coil/random, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) "aui" = ( -/obj/machinery/light/small/directional/south, /obj/machinery/newscaster/directional/south, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) "auj" = ( /obj/structure/table/wood, -/obj/item/poster/random_contraband{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/poster/random_contraband{ - pixel_x = -2; - pixel_y = -2 +/obj/item/wrench{ + pixel_y = 4 }, -/obj/item/poster/random_contraband{ - pixel_x = 2; +/obj/item/wirerod{ pixel_y = 2 }, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical_shop) "auk" = ( -/obj/item/radio/intercom/directional/south, -/obj/structure/chair/stool, +/obj/structure/chair/stool{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) "aum" = ( -/obj/machinery/light/small/directional/south, +/obj/item/radio/intercom/directional/south, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) "auo" = ( /obj/item/kirbyplants, -/obj/machinery/power/apc/directional/south, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/wood/oak, /area/station/maintenance/electrical_shop) "aup" = ( @@ -4455,7 +4545,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/qm) "avs" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/disposal/east) "avu" = ( @@ -4488,7 +4578,6 @@ "avx" = ( /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/black, -/obj/item/clothing/glasses/meson, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) @@ -4499,7 +4588,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "avE" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -4540,6 +4629,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/effect/landmark/damageturf, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -4607,7 +4697,7 @@ pixel_y = 7 }, /obj/item/reagent_containers/condiment/peppermill, -/obj/item/radio/intercom/directional/west, +/obj/machinery/light/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -4756,6 +4846,14 @@ icon_state = "neutralfull" }, /area/station/engineering/controlroom) +"awL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "neutral" + }, +/area/station/maintenance/port) "awM" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, @@ -4784,7 +4882,7 @@ }, /area/station/engineering/atmos/control) "awW" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/station/maintenance/fore) @@ -5199,6 +5297,7 @@ /obj/structure/closet/secure_closet/clown, /obj/item/clothing/suit/soldiercoat, /obj/item/clothing/under/costume/soldieruniform, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "bar" }, @@ -5259,6 +5358,7 @@ /obj/effect/turf_decal/delivery/hollow, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/north, +/obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -5439,17 +5539,14 @@ /turf/simulated/floor/plating, /area/station/maintenance/old_kitchen) "azq" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal, /obj/item/radio/intercom/directional/south, +/obj/structure/closet/jcloset, /turf/simulated/floor/plasteel{ icon_state = "purple" }, /area/station/service/janitor) "azr" = ( -/obj/structure/closet/jcloset, +/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "purplecorner" @@ -5457,9 +5554,7 @@ /area/station/service/janitor) "azs" = ( /obj/structure/sink/directional/north, -/obj/item/mop, /obj/item/reagent_containers/glass/bucket, -/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purple" @@ -5468,13 +5563,15 @@ "azt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, /obj/machinery/alarm/directional/east, +/obj/structure/disposalpipe/segment/corner{ + dir = 8 + }, /turf/simulated/floor/plasteel, /area/station/service/janitor) "azw" = ( @@ -5505,15 +5602,12 @@ id = "qmshutters"; name = "QM Privacy Shutter Control"; pixel_x = -6; - req_one_access_txt = "19" - }, -/obj/machinery/light_switch/north{ - pixel_y = 34 + req_access = list(19) }, /obj/machinery/button/windowtint/north{ id = "qm"; - req_one_access_txt = "19"; - pixel_x = 6 + pixel_x = 6; + req_access = list(19) }, /obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ @@ -5601,10 +5695,11 @@ dir = 8 }, /obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, /obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -4; + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/maintenance/disposal/west) "azJ" = ( @@ -5619,7 +5714,9 @@ /obj/item/storage/toolbox/mechanical{ pixel_y = 10 }, -/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency{ + pixel_y = 2 + }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -5641,7 +5738,7 @@ dir = 1; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "azN" = ( /obj/structure/chair/office/dark{ dir = 4 @@ -5672,7 +5769,7 @@ /obj/machinery/atmospherics/binary/valve{ dir = 4 }, -/obj/item/radio/intercom/directional/north, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/security/execution) "azQ" = ( @@ -5822,9 +5919,6 @@ /area/station/service/janitor) "aAB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/structure/disposalpipe/segment/corner{ dir = 4 }, /turf/simulated/floor/plasteel, @@ -5836,9 +5930,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /turf/simulated/floor/plasteel, /area/station/service/janitor) "aAE" = ( @@ -5848,9 +5939,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, -/obj/structure/disposalpipe/segment/corner{ - dir = 8 - }, /obj/machinery/power/apc/directional/east, /obj/structure/cable, /turf/simulated/floor/plasteel{ @@ -5937,7 +6025,7 @@ /area/station/maintenance/fsmaint) "aAV" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ icon_state = "black" }, @@ -5977,7 +6065,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "brown" @@ -5985,10 +6073,20 @@ /area/station/maintenance/disposal/west) "aBb" = ( /obj/structure/table/reinforced, -/obj/item/crowbar, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, /obj/machinery/firealarm/directional/west, +/obj/item/stack/packageWrap{ + pixel_y = 20 + }, +/obj/item/hand_labeler{ + pixel_y = 12 + }, +/obj/item/crowbar{ + pixel_y = 6 + }, +/obj/item/storage/box/lights/mixed{ + pixel_x = 4; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purple" @@ -6009,7 +6107,7 @@ /turf/simulated/floor/plating, /area/station/engineering/engine/supermatter) "aBg" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fore) "aBn" = ( @@ -6027,6 +6125,7 @@ d2 = 8; icon_state = "1-8" }, +/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel, /area/station/security/permabrig) "aBo" = ( @@ -6096,13 +6195,13 @@ pixel_x = 6; id = "psychocell2"; name = "Cell 2 Shutters Control"; - req_one_access_txt = "64" + req_access = list(64) }, /obj/machinery/door_control/shutter/south{ pixel_x = -6; id = "psychocell1"; name = "Cell 1 Shutters Control"; - req_one_access_txt = "64" + req_access = list(64) }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -6110,32 +6209,37 @@ /area/station/medical/patients_rooms) "aBG" = ( /obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/stamp/granted{ +/obj/item/clipboard{ pixel_x = -4; - pixel_y = 4 + pixel_y = 2 }, -/obj/item/stamp/qm, -/obj/item/stamp/denied{ - pixel_x = 4; - pixel_y = -4 +/obj/item/paper_bin{ + pixel_y = 2; + pixel_x = 12 + }, +/obj/item/pen/multi{ + pixel_y = 2; + pixel_x = 12 }, /turf/simulated/floor/plasteel, /area/station/supply/qm) "aBH" = ( -/obj/item/flashlight/lamp/green/off{ - pixel_y = 4; - pixel_x = -16 +/obj/structure/table/wood, +/obj/item/stamp/granted{ + pixel_x = -8; + pixel_y = 8 }, -/obj/item/paper_bin{ - pixel_y = 4; - pixel_x = 6 +/obj/item/stamp/denied{ + pixel_x = -8 }, -/obj/item/pen/multi{ - pixel_y = 6; +/obj/item/stamp/qm{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/item/flashlight/lamp/green/off{ + pixel_y = 4; pixel_x = 6 }, -/obj/structure/table/wood, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "purple" @@ -6213,7 +6317,6 @@ "aBO" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/effect/turf_decal/delivery/hollow, -/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 1; @@ -6257,7 +6360,9 @@ /area/station/supply/storage) "aBS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -6381,11 +6486,9 @@ "aCD" = ( /obj/machinery/atmospherics/portable/scrubber/huge/stationary, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel, /area/station/security/permabrig) "aCE" = ( -/obj/item/flag/cargo, /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ dir = 8; @@ -6393,10 +6496,10 @@ }, /area/station/supply/storage) "aCF" = ( -/obj/machinery/firealarm/directional/east, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -6488,10 +6591,11 @@ }, /area/station/hallway/primary/central/north) "aCP" = ( -/mob/living/simple_animal/bot/cleanbot{ - name = "D.E.N." - }, /obj/machinery/light_switch/north, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purple" @@ -6661,7 +6765,7 @@ }, /area/station/security/permabrig) "aDG" = ( -/obj/structure/rack, +/obj/effect/spawner/random/storage, /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; @@ -6708,10 +6812,16 @@ }, /area/station/supply/storage) "aDQ" = ( -/obj/effect/turf_decal/delivery/hollow, -/obj/effect/spawner/random/maintenance, -/turf/simulated/floor/plasteel, -/area/station/supply/storage) +/obj/structure/table/wood, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = -8 + }, +/turf/simulated/floor/carpet/orange, +/area/station/service/bar/atrium) "aDR" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -6859,7 +6969,7 @@ dir = 10; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "aEl" = ( /obj/machinery/atmospherics/binary/pump{ dir = 8; @@ -6905,7 +7015,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -6985,30 +7095,34 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/oil_maybe, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aEI" = ( /obj/item/cartridge/qm{ - pixel_x = -3 - }, -/obj/item/cartridge/qm{ - pixel_x = 5; - pixel_y = 3 + pixel_x = 10; + pixel_y = 8 }, /obj/item/cartridge/qm{ - pixel_x = -1; - pixel_y = 7 + pixel_x = 10; + pixel_y = 4 }, -/obj/item/gps/mining, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, /obj/machinery/power/apc/directional/south, /obj/structure/cable, /obj/structure/table, -/obj/item/destTagger{ - pixel_x = -4 - }, /obj/machinery/light/directional/south, +/obj/item/cartridge/qm{ + pixel_x = 10 + }, +/obj/item/gps/mining{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/stack/packageWrap{ + pixel_y = 6 + }, +/obj/item/hand_labeler, /turf/simulated/floor/plasteel{ icon_state = "brown" }, @@ -7040,11 +7154,9 @@ }, /obj/machinery/button/windowtint/north{ id = "qmroom"; - req_one_access_txt = "19"; - pixel_x = -8 + pixel_x = -8; + req_access = list(19) }, -/obj/item/clothing/under/towel/long/alt/brown, -/obj/item/clothing/head/towel/brown, /turf/simulated/floor/carpet/orange, /area/station/supply/qm) "aEM" = ( @@ -7063,10 +7175,13 @@ /obj/structure/table/wood, /obj/item/radio/intercom/directional/south, /obj/item/book/manual/wiki/sop_supply{ - pixel_x = 12; + pixel_x = 14; pixel_y = 4 }, -/obj/item/storage/secure/briefcase, +/obj/item/storage/secure/briefcase{ + pixel_x = -2; + pixel_y = 2 + }, /obj/machinery/light/directional/south, /turf/simulated/floor/carpet/orange, /area/station/supply/qm) @@ -7255,7 +7370,8 @@ /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "aFp" = ( -/obj/machinery/light/directional/west, +/obj/structure/shelf/supply, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/supply/storage) "aFt" = ( @@ -7268,6 +7384,9 @@ /turf/simulated/wall, /area/station/public/sleep) "aFy" = ( +/mob/living/simple_animal/bot/cleanbot{ + name = "D.E.N." + }, /turf/simulated/floor/plasteel{ icon_state = "purple" }, @@ -7336,6 +7455,7 @@ c_tag = "Cargo Dock West"; dir = 4 }, +/obj/machinery/light/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -7347,11 +7467,11 @@ }, /area/station/supply/sorting) "aFL" = ( -/obj/effect/turf_decal/delivery/hollow, -/obj/effect/spawner/random/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel, -/area/station/supply/storage) +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/station/engineering/hallway) "aFM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -7431,13 +7551,16 @@ icon_state = "1-8" }, /obj/effect/turf_decal/delivery, +/obj/item/kirbyplants, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "aGd" = ( /obj/structure/table/reinforced, /obj/structure/extinguisher_cabinet/directional/west, -/obj/item/tank/internals/plasma, /obj/effect/turf_decal/delivery/hollow, +/obj/item/storage/toolbox/electrical{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "aGe" = ( @@ -7609,11 +7732,17 @@ /area/station/supply/storage) "aGQ" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/zipties, -/obj/item/flash, +/obj/item/storage/box/zipties{ + pixel_x = 5; + pixel_y = 4 + }, /obj/item/flash{ - pixel_x = 8; - pixel_y = 3 + pixel_x = -6; + pixel_y = 12 + }, +/obj/item/flash{ + pixel_x = -6; + pixel_y = 4 }, /obj/machinery/status_display/directional/south, /turf/simulated/floor/plasteel{ @@ -7736,12 +7865,27 @@ /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "aHr" = ( -/obj/item/kirbyplants, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutral" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/area/station/hallway/primary/starboard) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/station/security/brig) "aHz" = ( /obj/structure/railing{ dir = 4 @@ -7823,7 +7967,6 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/light_switch/west, /obj/effect/turf_decal/siding/wood{ dir = 8 }, @@ -7857,7 +8000,7 @@ /obj/structure/table, /obj/item/storage/box/donkpockets{ pixel_x = -4; - pixel_y = 6 + pixel_y = 4 }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery/hollow, @@ -8104,10 +8247,10 @@ /turf/simulated/floor/plasteel/dark, /area/station/maintenance/turbine) "aIB" = ( -/obj/item/kirbyplants, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/item/kirbyplants, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "aID" = ( @@ -8115,14 +8258,38 @@ /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "aIE" = ( -/obj/machinery/light/directional/south, +/obj/structure/shelf/engineering, +/obj/item/clothing/suit/radiation{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/clothing/glasses/meson{ + pixel_y = -4 + }, +/obj/item/clothing/suit/radiation{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/clothing/head/radiation{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/clothing/glasses/meson{ + pixel_y = 6 + }, +/obj/item/clothing/head/radiation{ + pixel_x = 6; + pixel_y = 6 + }, /obj/machinery/status_display/directional/south, /obj/effect/turf_decal/stripes/line, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "aIF" = ( -/obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/stripes/line, +/obj/machinery/light_switch/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "aIG" = ( @@ -8355,12 +8522,11 @@ /turf/space, /area/space/nearstation) "aJD" = ( -/obj/item/kirbyplants, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel, -/area/station/engineering/controlroom) +/area/station/hallway/secondary/exit) "aJE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -8377,7 +8543,6 @@ /turf/simulated/floor/plasteel, /area/station/security/permabrig) "aJF" = ( -/obj/item/kirbyplants, /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -8386,14 +8551,18 @@ /area/station/engineering/controlroom) "aJG" = ( /obj/structure/table/reinforced, -/obj/item/multitool, /obj/item/multitool{ - pixel_x = 4; - pixel_y = -4 + pixel_x = 6; + pixel_y = 8 }, /obj/effect/turf_decal/delivery/hollow, +/obj/item/multitool{ + pixel_x = 6; + pixel_y = 3 + }, /obj/item/clothing/head/welding/flamedecal/blue{ - pixel_y = 5 + pixel_y = 8; + pixel_x = -6 }, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) @@ -8485,8 +8654,8 @@ /obj/structure/sign/nosmoking_2{ pixel_y = 32 }, -/obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) "aJV" = ( @@ -8546,19 +8715,17 @@ }, /area/station/maintenance/disposal/west) "aKh" = ( -/obj/machinery/washing_machine, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ - icon_state = "cmo" + dir = 1; + icon_state = "neutral" }, -/area/station/security/permabrig) +/area/station/public/locker) "aKi" = ( /obj/structure/extinguisher_cabinet/directional/south, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "aKk" = ( /obj/machinery/economy/vending/coffee, /turf/simulated/floor/plasteel{ @@ -8695,7 +8862,7 @@ dir = 1 }, /obj/structure/closet/emcloset, -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, /obj/structure/extinguisher_cabinet/directional/south, /turf/simulated/floor/plasteel, /area/station/medical/virology/lab) @@ -8748,11 +8915,13 @@ /turf/simulated/floor/plating, /area/station/engineering/mechanic) "aKL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" }, -/turf/simulated/floor/plasteel, -/area/station/supply/storage) +/obj/effect/spawner/window/reinforced/grilled, +/turf/simulated/floor/plating, +/area/station/maintenance/apmaint) "aKM" = ( /obj/machinery/door/poddoor/preopen{ id_tag = "xenosecure"; @@ -8788,9 +8957,12 @@ /area/station/maintenance/solar_maintenance/fore_port) "aLb" = ( /obj/structure/rack, -/obj/item/storage/toolbox/emergency, -/obj/item/wrench, -/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/storage/toolbox/emergency{ + pixel_y = 2 + }, +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "caution" @@ -8919,6 +9091,7 @@ /obj/effect/turf_decal/siding/blue{ dir = 9 }, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "aLM" = ( @@ -8969,7 +9142,7 @@ id = "deliveryshutters"; name = "Delivery Privacy Shutter Control"; pixel_x = -6; - req_one_access_txt = "50" + req_access = list(50) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -9124,6 +9297,7 @@ "aMK" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) "aML" = ( @@ -9180,18 +9354,23 @@ }, /obj/effect/mapping_helpers/airlock/autoname, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "aNb" = ( /obj/structure/chair/office{ dir = 4 }, /obj/structure/cable{ - d1 = 4; + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; d2 = 8; - icon_state = "4-8" + icon_state = "1-8" }, /turf/simulated/floor/plasteel/dark, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "aNe" = ( /obj/structure/closet/emcloset, /turf/simulated/floor/plating, @@ -9235,7 +9414,7 @@ dir = 1; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "aNl" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -9262,7 +9441,7 @@ icon_state = "1-2" }, /obj/item/megaphone{ - pixel_y = 9 + pixel_y = 4 }, /turf/simulated/floor/plasteel/dark, /area/station/security/main) @@ -9332,7 +9511,7 @@ }, /obj/item/storage/toolbox/emergency, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/north, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -9475,7 +9654,7 @@ "aOA" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "aOE" = ( /obj/structure/disposalpipe/segment, /obj/structure/railing/corner{ @@ -9526,14 +9705,11 @@ "aOJ" = ( /obj/structure/table, /obj/item/stack/packageWrap{ - pixel_y = 2 + pixel_y = 8 }, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap{ +/obj/item/hand_labeler{ pixel_y = -2 }, -/obj/item/hand_labeler, -/obj/item/rcs, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -9565,7 +9741,6 @@ /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "aON" = ( -/obj/machinery/firealarm/directional/east, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 4; @@ -9636,6 +9811,9 @@ }, /turf/space, /area/space/nearstation) +"aOX" = ( +/turf/simulated/wall/indestructible/riveted, +/area/station/science/toxins/test) "aPk" = ( /obj/machinery/door/poddoor{ id_tag = "turbinevent"; @@ -9730,7 +9908,6 @@ /area/station/maintenance/turbine) "aPy" = ( /obj/machinery/light/directional/north, -/obj/structure/extinguisher_cabinet/directional/north, /obj/item/kirbyplants, /turf/simulated/floor/plasteel{ dir = 8; @@ -9738,11 +9915,30 @@ }, /area/station/engineering/atmos) "aPz" = ( -/obj/structure/table/reinforced, -/obj/item/clothing/suit/storage/hazardvest, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/mask/gas, -/obj/item/radio/intercom/directional/north, +/obj/structure/shelf/engineering, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/item/clothing/mask/gas{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/clothing/mask/gas{ + pixel_y = -4 + }, +/obj/item/clothing/mask/gas{ + pixel_y = -4; + pixel_x = 6 + }, +/obj/item/clothing/gloves/color/black{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_y = 8 + }, +/obj/item/clothing/gloves/color/black{ + pixel_x = 6; + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -9752,12 +9948,11 @@ /obj/machinery/status_display/directional/north, /obj/machinery/light/small/directional/north, /obj/structure/table/reinforced, -/obj/item/wrench, -/obj/item/crowbar, -/obj/item/clothing/mask/gas, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +/obj/item/wrench{ + pixel_y = 2 + }, +/obj/item/crowbar{ + pixel_y = 2 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -9765,18 +9960,29 @@ }, /area/station/engineering/atmos) "aPG" = ( -/obj/structure/table/reinforced, -/obj/item/airalarm_electronics, -/obj/item/airalarm_electronics, -/obj/item/firealarm_electronics, -/obj/item/firealarm_electronics, +/obj/structure/shelf/engineering, /obj/machinery/light/directional/north, -/obj/structure/window/reinforced{ - dir = 8 +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_x = -8; + pixel_y = -6 }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_y = -6 + }, +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/clothing/mask/breath{ + pixel_y = 6; + pixel_x = -8 + }, +/obj/item/clothing/mask/breath{ + pixel_y = 6 + }, +/obj/item/clothing/mask/breath{ + pixel_y = 6; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -9826,33 +10032,44 @@ dir = 1 }, /turf/simulated/floor/carpet/orange, -/area/station/service/theatre) +/area/station/service/bar/atrium) "aPU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "aPW" = ( /obj/machinery/light/small/directional/north, /obj/machinery/status_display/directional/north, /turf/simulated/floor/carpet, -/area/station/service/theatre) +/area/station/service/bar/atrium) "aQb" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" }, /area/station/service/bar) "aQd" = ( -/obj/machinery/firealarm/directional/east, /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light/small/directional/east, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel/dark, /area/station/security/execution) "aQe" = ( /obj/structure/table, /obj/machinery/alarm/directional/south, -/obj/item/clipboard, -/obj/item/folder, +/obj/item/clipboard{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/folder{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/rcs{ + pixel_y = 14 + }, /obj/item/destTagger{ - pixel_x = -4 + pixel_x = 4; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ dir = 10; @@ -9873,6 +10090,7 @@ dir = 1 }, /obj/machinery/telepad_cargo, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "brown" @@ -9995,9 +10213,17 @@ /area/station/maintenance/turbine) "aQQ" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/folder/yellow, -/obj/item/reagent_containers/patch/silver_sulf, +/obj/item/clipboard{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/folder/yellow{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/reagent_containers/patch/silver_sulf{ + pixel_x = 8 + }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -10009,8 +10235,14 @@ /area/station/maintenance/turbine) "aQR" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/paper_bin{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, /obj/machinery/newscaster/directional/south, /obj/machinery/atmospherics/pipe/simple/visible{ dir = 9 @@ -10084,7 +10316,7 @@ dir = 9 }, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "aRz" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -10263,7 +10495,6 @@ "aSb" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/west, -/obj/machinery/alarm/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -10315,9 +10546,10 @@ /area/station/security/permabrig) "aSw" = ( /obj/machinery/conveyor/west{ - id = "QMLoad2" + id = "QMLoad2"; + dir = 9 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/plasteel, /area/station/supply/storage) "aSx" = ( /obj/machinery/atmospherics/unary/outlet_injector/on, @@ -10868,8 +11100,8 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/west, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purple" @@ -10907,7 +11139,7 @@ /obj/machinery/access_button/west{ autolink_id = "atmostanks_btn_ext"; name = "exterior access button"; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plasteel, @@ -11103,7 +11335,7 @@ }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel/dark, -/area/station/service/theatre) +/area/station/service/bar/atrium) "aWf" = ( /obj/effect/spawner/random_spawners/oil_maybe, /obj/effect/decal/cleanable/dirt, @@ -11357,7 +11589,6 @@ }, /area/station/engineering/atmos) "aXq" = ( -/obj/machinery/light_switch/south, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, @@ -11434,14 +11665,14 @@ id = "privateroom" }, /turf/simulated/floor/plating, -/area/station/service/theatre) +/area/station/service/bar/atrium) "aXE" = ( /obj/machinery/camera{ c_tag = "Theatre South"; dir = 1 }, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "aXG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -11518,7 +11749,6 @@ /area/station/public/locker) "aXV" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/alarm/directional/west, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "brown" @@ -11646,11 +11876,17 @@ /area/station/maintenance/fsmaint) "aYD" = ( /obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/lightreplacer, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/item/folder/yellow{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/lightreplacer{ + pixel_x = -4; + pixel_y = 6 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/atmos) "aYF" = ( @@ -11805,8 +12041,6 @@ /area/station/supply/office) "aZl" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/folder, /obj/machinery/status_display/supply_display/east, /turf/simulated/floor/plasteel{ dir = 4; @@ -11959,7 +12193,7 @@ /turf/space, /area/space/nearstation) "bac" = ( -/obj/machinery/light/directional/west, +/obj/machinery/light/small/directional/west, /obj/structure/disposalpipe/segment, /obj/structure/cable{ d1 = 1; @@ -12133,7 +12367,9 @@ "baQ" = ( /obj/structure/table/reinforced, /obj/machinery/processor{ - pixel_y = 5 + pixel_y = 7; + layer = 3.1; + pixel_x = 1 }, /turf/simulated/floor/plasteel{ icon_state = "redfull" @@ -12159,11 +12395,23 @@ /area/station/hallway/primary/fore) "baV" = ( /obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/multitool, -/obj/item/pen/red, -/obj/item/screwdriver/cargo, +/obj/item/folder/yellow{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/multitool{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/pen/red{ + pixel_x = -6; + pixel_y = 4 + }, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light_switch/west, +/obj/item/screwdriver/cargo{ + pixel_y = -4 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "brown" @@ -12203,10 +12451,12 @@ /obj/effect/turf_decal/delivery/hollow, /obj/structure/table/reinforced, /obj/item/eftpos{ - pixel_x = 6 + pixel_x = 6; + pixel_y = 2 }, /obj/item/eftpos{ - pixel_x = -6 + pixel_x = -6; + pixel_y = 2 }, /obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ @@ -12240,18 +12490,25 @@ /area/station/supply/office) "bbd" = ( /obj/structure/table/reinforced, -/obj/item/stamp/granted{ - pixel_x = 3; - pixel_y = -4 - }, /obj/item/stamp/denied{ - pixel_x = -4; - pixel_y = 4 + pixel_x = -6; + pixel_y = 10 }, /obj/machinery/door_control/shutter/east{ id = "cargodesk"; name = "Cargo Desk Privacy Shutter Control"; - req_one_access_txt = "31" + req_access = list(31) + }, +/obj/item/stamp/granted{ + pixel_x = -6 + }, +/obj/item/clipboard{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/folder{ + pixel_x = 6; + pixel_y = 2 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -12265,6 +12522,7 @@ /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/secure_closet/personal, /obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purple" @@ -12286,31 +12544,15 @@ "bbk" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, -/obj/machinery/light/directional/north, +/obj/machinery/light_switch/north, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/carpet, /area/station/legal/lawoffice) "bbl" = ( /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_one_access_txt = "4" - }, -/obj/item/folder/red{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/folder/red{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/folder/red{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/folder/red, -/obj/item/folder/red{ - pixel_x = 2; - pixel_y = -2 + req_access = list(4) }, /obj/structure/window/reinforced, /turf/simulated/floor/plasteel{ @@ -12324,9 +12566,9 @@ dir = 1; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bbE" = ( -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/east, /obj/structure/disposalpipe/segment, /obj/structure/cable{ d1 = 1; @@ -12375,6 +12617,18 @@ dir = 4 }, /obj/structure/table/reinforced, +/obj/item/stack/sheet/metal/ten{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/stack/sheet/metal/ten{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 4; + pixel_y = 2 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/atmos) "bbS" = ( @@ -12475,9 +12729,13 @@ /area/station/service/kitchen) "bci" = ( /obj/structure/table/reinforced, -/obj/item/book/manual/wiki/sop_legal, +/obj/item/book/manual/wiki/sop_legal{ + pixel_x = -6; + pixel_y = 2 + }, /obj/item/book/manual/wiki/security_space_law{ - pixel_y = 3 + pixel_y = 5; + pixel_x = -6 }, /obj/structure/cable{ d1 = 2; @@ -12486,7 +12744,10 @@ }, /obj/machinery/light/directional/north, /obj/machinery/economy/vending/wallmed/directional/north, -/obj/item/eftpos, +/obj/item/eftpos{ + pixel_x = 6; + pixel_y = 3 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" @@ -12622,13 +12883,13 @@ dir = 1; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bcC" = ( /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bcD" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/secure_closet/personal, @@ -12674,7 +12935,7 @@ dir = 5; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bcP" = ( /turf/simulated/wall, /area/station/hallway/primary/port) @@ -12862,12 +13123,12 @@ "bdQ" = ( /obj/structure/table/wood, /obj/item/reagent_containers/condiment/peppermill{ - pixel_x = -4; - pixel_y = 2 + pixel_x = 8; + pixel_y = 8 }, /obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -7; - pixel_y = 7 + pixel_x = -8; + pixel_y = 8 }, /turf/simulated/floor/carpet/orange, /area/station/service/bar/atrium) @@ -12891,18 +13152,24 @@ /area/station/service/bar/atrium) "bdU" = ( /turf/simulated/wall, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bdV" = ( /obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -4; + pixel_y = 4 + }, /obj/machinery/light/directional/west, /obj/item/radio/intercom/directional/west, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bdW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -12931,13 +13198,13 @@ dir = 1; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bdY" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bdZ" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -12954,7 +13221,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "beb" = ( /obj/structure/cable{ d1 = 1; @@ -12975,7 +13242,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_access_txt = "4" + req_access = list(4) }, /obj/item/restraints/handcuffs/pinkcuffs, /obj/item/book/manual/wiki/security_space_law, @@ -13028,7 +13295,10 @@ /obj/structure/table, /obj/effect/turf_decal/delivery/hollow, /obj/effect/decal/cleanable/dirt, -/obj/item/gps/mining, +/obj/item/gps/mining{ + pixel_x = 10; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -13044,12 +13314,15 @@ pixel_x = -5; pixel_y = 6 }, -/obj/item/megaphone, +/obj/item/megaphone{ + pixel_x = 12; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "bep" = ( /obj/machinery/computer/secure_data{ dir = 1 @@ -13202,7 +13475,7 @@ /obj/structure/disposalpipe/trunk, /obj/machinery/disposal, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "bfd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -13214,12 +13487,17 @@ dir = 8 }, /obj/structure/cable{ - d1 = 4; + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; d2 = 8; - icon_state = "4-8" + icon_state = "2-8" }, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "bfe" = ( /obj/machinery/kitchen_machine/candy_maker, /turf/simulated/floor/plasteel{ @@ -13248,7 +13526,7 @@ "bfq" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bfr" = ( /obj/structure/chair{ dir = 4 @@ -13258,12 +13536,12 @@ dir = 8; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bfu" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bfw" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, @@ -13285,6 +13563,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/miningdock) "bfB" = ( +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -13353,10 +13632,11 @@ dir = 1 }, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/alarm/directional/south, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "bfO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -13549,13 +13829,13 @@ dir = 8; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bgD" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bgE" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/disposalpipe/segment{ @@ -13575,13 +13855,13 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bgG" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bgK" = ( /obj/effect/turf_decal/delivery, /obj/machinery/mineral/equipment_vendor, @@ -13860,6 +14140,7 @@ /obj/item/reagent_containers/glass/bucket, /obj/structure/sink/kitchen/east, /obj/effect/decal/cleanable/dust, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/security/interrogation) "bhC" = ( @@ -13872,12 +14153,14 @@ /area/station/medical/storage/secondary) "bhH" = ( /obj/structure/table/reinforced, -/obj/item/food/dough, /obj/item/food/dough{ - pixel_x = 2; - pixel_y = 2 + pixel_x = 8; + pixel_y = 6 + }, +/obj/item/food/dough{ + pixel_x = -2; + pixel_y = -4 }, -/obj/item/reagent_containers/condiment/enzyme, /turf/simulated/floor/plasteel/white, /area/station/service/kitchen) "bhK" = ( @@ -13907,7 +14190,7 @@ /obj/machinery/door/firedoor, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bhV" = ( /obj/structure/cable{ d1 = 4; @@ -14098,6 +14381,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -14113,6 +14401,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -14129,6 +14422,11 @@ d2 = 4; icon_state = "1-4" }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -14153,16 +14451,10 @@ }, /area/station/engineering/atmos) "biT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/station/engineering/atmos) +/obj/item/kirbyplants, +/obj/machinery/light_switch/west, +/turf/simulated/floor/wood/oak, +/area/station/service/bar/atrium) "biU" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -14356,10 +14648,14 @@ /area/station/hallway/primary/port) "bjq" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/storage/box/donkpockets, +/obj/item/food/meat{ + pixel_x = -2; + pixel_y = 12 + }, +/obj/item/food/meat{ + pixel_x = 6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel/white, /area/station/service/kitchen) "bjy" = ( @@ -14387,11 +14683,16 @@ /obj/structure/chair{ dir = 4 }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bjE" = ( /obj/machinery/bluespace_beacon, /turf/simulated/floor/plasteel{ @@ -14403,7 +14704,7 @@ dir = 4; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bjG" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/rack, @@ -14452,7 +14753,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "bjL" = ( /turf/simulated/floor/plasteel{ icon_state = "purple" @@ -14478,7 +14779,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredfull" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "bjO" = ( /obj/machinery/door/airlock/security/glass, /obj/effect/mapping_helpers/airlock/autoname, @@ -14546,12 +14847,8 @@ }, /area/station/hallway/primary/port) "bjZ" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/siding/blue{ - dir = 4 - }, -/turf/simulated/floor/carpet/arcade, -/area/station/public/arcade) +/turf/simulated/wall, +/area/station/medical/virology/test_room) "bka" = ( /turf/simulated/floor/wood/fancy/cherry, /area/station/legal/lawoffice) @@ -14793,17 +15090,21 @@ /turf/simulated/floor/plasteel{ icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bls" = ( /obj/structure/table, -/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap{ + pixel_y = 8 + }, /obj/item/hand_labeler, /obj/machinery/firealarm/directional/south, +/obj/machinery/power/apc/directional/west, +/obj/structure/cable, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "blt" = ( /obj/structure/chair{ dir = 1 @@ -14811,12 +15112,12 @@ /turf/simulated/floor/plasteel{ icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "blu" = ( /turf/simulated/floor/plasteel{ icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "blv" = ( /obj/structure/window/reinforced{ dir = 8 @@ -14832,10 +15133,11 @@ "blw" = ( /obj/item/kirbyplants, /obj/machinery/light/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "blx" = ( /obj/structure/cable{ d1 = 4; @@ -14856,7 +15158,7 @@ dir = 4; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bly" = ( /obj/structure/chair{ dir = 1 @@ -14865,15 +15167,17 @@ /turf/simulated/floor/plasteel{ icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "blB" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/delivery/hollow, /obj/item/storage/toolbox/mechanical{ pixel_y = 10 }, -/obj/item/storage/toolbox/emergency, -/obj/machinery/firealarm/directional/west, +/obj/item/storage/toolbox/emergency{ + pixel_y = 2 + }, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "brown" @@ -15017,7 +15321,6 @@ /turf/space, /area/space/nearstation) "bmu" = ( -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 8 }, @@ -15055,6 +15358,11 @@ "bmy" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow, /obj/effect/turf_decal/delivery, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "bmz" = ( @@ -15144,18 +15452,33 @@ /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "bmI" = ( -/obj/structure/table/reinforced, -/obj/item/stack/rods{ - amount = 8 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, +/obj/structure/shelf/engineering, /obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 4 }, /obj/effect/turf_decal/delivery/hollow, /obj/effect/turf_decal/delivery/hollow, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = -6; + pixel_y = 12 + }, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = 2; + pixel_y = 12 + }, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = 10; + pixel_y = 12 + }, +/obj/item/grenade/gas/oxygen{ + pixel_x = -6 + }, +/obj/item/grenade/gas/oxygen{ + pixel_x = 2 + }, +/obj/item/grenade/gas/oxygen{ + pixel_x = 10 + }, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "bmL" = ( @@ -15288,7 +15611,7 @@ pixel_y = 8 }, /turf/simulated/wall, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "bnf" = ( /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -15325,6 +15648,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutralcorner" @@ -15383,7 +15707,7 @@ }, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bnT" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 4 @@ -15391,7 +15715,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/green, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bnU" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 4 @@ -15399,7 +15723,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/yellow, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bnV" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/atmos/glass, @@ -15410,20 +15734,29 @@ /obj/machinery/atmospherics/pipe/simple/visible/yellow, /obj/effect/turf_decal/delivery, /obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bnW" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 9 }, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bnX" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight, /obj/effect/turf_decal/delivery/hollow, +/obj/item/flashlight{ + pixel_y = 12 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 1 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "caution" @@ -15439,13 +15772,14 @@ /area/station/engineering/atmos) "bnZ" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/toy/figure/crew/atmos, /obj/machinery/atmospherics/pipe/simple/visible/cyan, /obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 4 }, /obj/effect/turf_decal/delivery/hollow, +/obj/item/storage/belt/utility{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "caution" @@ -15676,6 +16010,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/status_display/directional/east, /obj/structure/disposalpipe/segment, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, @@ -15754,7 +16089,7 @@ dir = 9; icon_state = "green" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bpz" = ( /obj/machinery/atmospherics/binary/pump{ dir = 8; @@ -15766,7 +16101,7 @@ dir = 1; icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bpA" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 10 @@ -15775,7 +16110,7 @@ dir = 1; icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bpB" = ( /obj/machinery/atmospherics/binary/pump{ name = "Pure to Mix" @@ -15784,7 +16119,7 @@ dir = 1; icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bpC" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 6 @@ -15793,32 +16128,42 @@ dir = 1; icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bpD" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 9 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bpE" = ( /obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 6 }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bpF" = ( /obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 4 }, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bpH" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan, /obj/machinery/atmospherics/pipe/simple/visible/purple{ @@ -15839,12 +16184,13 @@ /area/station/engineering/atmos) "bpJ" = ( /obj/structure/table/reinforced, -/obj/item/weldingtool, -/obj/item/clothing/head/welding, /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 5 }, /obj/effect/turf_decal/delivery/hollow, +/obj/item/clothing/head/welding{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "caution" @@ -16103,7 +16449,6 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/light/small/directional/east, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" @@ -16204,7 +16549,7 @@ dir = 9 }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "brB" = ( /obj/machinery/atmospherics/meter, /obj/machinery/atmospherics/pipe/manifold/visible/green, @@ -16212,7 +16557,7 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "brC" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 9 @@ -16221,7 +16566,7 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "brD" = ( /obj/machinery/atmospherics/pipe/manifold/visible/yellow{ dir = 8 @@ -16230,7 +16575,7 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "brE" = ( /obj/machinery/atmospherics/binary/pump{ dir = 4; @@ -16241,7 +16586,7 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "brF" = ( /obj/machinery/atmospherics/pipe/manifold/visible/purple{ dir = 4 @@ -16249,18 +16594,25 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "brG" = ( /obj/structure/table/reinforced, /obj/item/wrench, /obj/item/crowbar, -/obj/item/clothing/mask/gas, /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 6; initialize_directions = 6 }, /obj/effect/turf_decal/delivery/hollow, +/obj/item/clothing/mask/gas{ + pixel_y = 10 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "caution" @@ -16285,12 +16637,18 @@ /area/station/engineering/atmos) "brJ" = ( /obj/structure/table/reinforced, -/obj/item/storage/belt/utility, -/obj/item/t_scanner, /obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 4 }, /obj/effect/turf_decal/delivery/hollow, +/obj/item/weldingtool{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/t_scanner{ + pixel_x = 8; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "caution" @@ -16310,15 +16668,38 @@ /area/station/maintenance/starboard2) "brP" = ( /obj/effect/landmark/start/security_officer, +/obj/machinery/camera{ + c_tag = "Brig Security Equipment Lockers" + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" }, /area/station/security/storage) "brR" = ( -/obj/structure/reagent_dispensers/fueltank, /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/south, +/obj/structure/shelf/engineering, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30; + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/stack/rods{ + amount = 50; + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/stack/cable_coil{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 7; icon_state = "yellow" @@ -16527,7 +16908,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" }, -/area/station/security/brig) +/area/station/security/lobby) "bsH" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 1"; @@ -16606,7 +16987,7 @@ dir = 10; icon_state = "green" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bth" = ( /obj/machinery/atmospherics/binary/pump{ dir = 1 @@ -16618,7 +16999,7 @@ dir = 8 }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bti" = ( /obj/machinery/atmospherics/pipe/manifold/visible/yellow{ dir = 1 @@ -16627,7 +17008,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "btj" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 9 @@ -16635,7 +17016,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "btk" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -16650,11 +17031,17 @@ on = 1 }, /obj/machinery/light/directional/east, +/obj/machinery/light_switch/east, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "btm" = ( /obj/machinery/light/directional/west, /obj/machinery/alarm/directional/west, @@ -16760,7 +17147,9 @@ "btT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/reinforced, -/obj/item/book/manual/wiki/security_space_law, +/obj/item/book/manual/wiki/security_space_law{ + pixel_y = 2 + }, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -16796,7 +17185,7 @@ dir = 9; icon_state = "arrival" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bup" = ( /obj/machinery/atmospherics/meter, /obj/machinery/atmospherics/pipe/manifold/visible/cyan{ @@ -16807,7 +17196,7 @@ dir = 8 }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "buq" = ( /obj/machinery/atmospherics/binary/pump{ name = "Mix to Distro" @@ -16815,14 +17204,14 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bur" = ( /obj/machinery/atmospherics/unary/thermomachine/heater, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bus" = ( /obj/machinery/atmospherics/unary/thermomachine/freezer{ dir = 4 @@ -16837,11 +17226,16 @@ dir = 4 }, /obj/item/radio/intercom/directional/east, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "buu" = ( /obj/machinery/atmospherics/unary/portables_connector{ dir = 1 @@ -16963,11 +17357,25 @@ "bvd" = ( /obj/machinery/light/small/directional/north, /obj/structure/closet/crate, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, +/obj/item/coin/silver{ + pixel_y = 1 + }, +/obj/item/coin/silver{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/coin/silver{ + pixel_x = 7; + pixel_y = -6 + }, +/obj/item/coin/silver{ + pixel_x = 9; + pixel_y = 7 + }, +/obj/item/coin/silver{ + pixel_x = -7; + pixel_y = 5 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "vault" @@ -16984,7 +17392,29 @@ /obj/structure/closet/fireaxecabinet{ pixel_y = 32 }, -/obj/structure/table/reinforced, +/obj/structure/shelf/supply, +/obj/item/stack/sheet/mineral/gold/fifty{ + pixel_x = -8; + pixel_y = -2 + }, +/obj/item/stack/sheet/mineral/gold/fifty{ + pixel_y = -2 + }, +/obj/item/stack/sheet/mineral/gold/fifty{ + pixel_y = -2; + pixel_x = 8 + }, +/obj/item/coin/gold{ + pixel_y = 6; + pixel_x = -8 + }, +/obj/item/storage/belt/champion/wrestling{ + pixel_y = 8 + }, +/obj/item/coin/gold{ + pixel_y = 6; + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "vault" @@ -17049,7 +17479,7 @@ dir = 10; icon_state = "arrival" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bvE" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 5 @@ -17058,7 +17488,7 @@ dir = 10 }, /turf/simulated/floor/plasteel, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bvF" = ( /obj/machinery/atmospherics/binary/pump{ dir = 4; @@ -17069,7 +17499,7 @@ /turf/simulated/floor/plasteel{ icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bvG" = ( /obj/machinery/alarm/directional/south, /obj/machinery/camera{ @@ -17081,7 +17511,7 @@ /turf/simulated/floor/plasteel{ icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bvH" = ( /obj/machinery/atmospherics/meter{ autolink_id = "dloop_atm_meter"; @@ -17091,7 +17521,7 @@ /turf/simulated/floor/plasteel{ icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bvI" = ( /obj/machinery/atmospherics/binary/pump{ dir = 4; @@ -17101,7 +17531,7 @@ /turf/simulated/floor/plasteel{ icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bvJ" = ( /obj/machinery/atmospherics/meter{ autolink_id = "wloop_atm_meter"; @@ -17110,11 +17540,13 @@ /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4 }, +/obj/machinery/power/apc/important/directional/east, +/obj/structure/cable, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "caution" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "bvK" = ( /obj/machinery/status_display, /turf/simulated/wall/r_wall, @@ -17178,14 +17610,10 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/sw) "bvW" = ( -/obj/structure/rack, +/obj/structure/shelf/command, /obj/item/circuitboard/robotics{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/circuitboard/mecha_control{ - pixel_x = -2; - pixel_y = 2 + pixel_x = -6; + pixel_y = -4 }, /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -17195,20 +17623,21 @@ d2 = 8; icon_state = "4-8" }, -/obj/item/circuitboard/rnd_backup_console, /obj/item/circuitboard/rnd_network_controller{ - pixel_x = 2; - pixel_y = -2 + pixel_y = -4 + }, +/obj/item/circuitboard/rnd_backup_console{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/circuitboard/mecha_control{ + pixel_x = -6; + pixel_y = 8 }, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "bvX" = ( -/obj/structure/rack, -/obj/item/circuitboard/communications{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/card, +/obj/structure/shelf/command, /obj/effect/turf_decal/stripes/line, /obj/structure/cable{ d1 = 2; @@ -17225,19 +17654,17 @@ d2 = 2; icon_state = "1-2" }, +/obj/item/circuitboard/card{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/circuitboard/communications{ + pixel_y = -4 + }, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "bvY" = ( -/obj/structure/rack, -/obj/item/circuitboard/aicore{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/aiupload, -/obj/item/circuitboard/borgupload{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/structure/shelf/command, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -17246,6 +17673,17 @@ d2 = 8; icon_state = "4-8" }, +/obj/item/circuitboard/aiupload{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/circuitboard/aicore{ + pixel_y = -4 + }, +/obj/item/circuitboard/borgupload{ + pixel_x = 6; + pixel_y = -4 + }, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "bwf" = ( @@ -17307,7 +17745,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/turret_protected/ai) "bwG" = ( -/obj/machinery/porta_turret, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -17347,7 +17785,7 @@ "bwQ" = ( /obj/machinery/ai_status_display, /turf/simulated/wall/r_wall, -/area/station/engineering/break_room) +/area/station/engineering/atmos/distribution) "bwS" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -17368,7 +17806,7 @@ /obj/effect/turf_decal/delivery/hollow, /obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bwZ" = ( /obj/structure/cable{ d1 = 1; @@ -17380,7 +17818,7 @@ /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bxc" = ( /obj/structure/cable{ d1 = 1; @@ -17487,10 +17925,19 @@ /area/station/command/bridge) "bxp" = ( /obj/structure/table/reinforced, -/obj/item/restraints/handcuffs, -/obj/item/flash, /obj/machinery/ai_status_display/north, /obj/machinery/light/directional/north, +/obj/item/restraints/handcuffs{ + pixel_y = 8 + }, +/obj/item/flash{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/flash{ + pixel_x = 6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) "bxq" = ( @@ -17524,9 +17971,23 @@ /obj/machinery/status_display/directional/north, /obj/machinery/door_control/shutter{ id = "bridge blast north"; - name = "North Bridge Blast Door Control" + name = "North Bridge Blast Door Control"; + pixel_y = 8 }, /obj/machinery/light/directional/north, +/obj/machinery/door_control/shutter/north{ + id = "bridge blast west"; + name = "West Bridge Blast Door Control"; + pixel_x = -6; + pixel_y = 0; + req_access = list(19) + }, +/obj/machinery/door_control/shutter/east{ + id = "bridge blast east"; + name = "East Bridge Blast Door Control"; + pixel_x = 6; + req_access = list(19) + }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) "bxu" = ( @@ -17598,9 +18059,14 @@ dir = 1 }, /obj/structure/cable{ - d1 = 4; + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; d2 = 8; - icon_state = "4-8" + icon_state = "2-8" }, /turf/simulated/floor/plasteel, /area/station/security/brig) @@ -17741,10 +18207,12 @@ /area/station/engineering/break_room) "byn" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/electrical{ + pixel_y = 2 + }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "byr" = ( /turf/simulated/wall, /area/station/engineering/hardsuitstorage) @@ -17764,7 +18232,7 @@ dir = 4; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "byw" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -17789,7 +18257,7 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/atmos, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "byy" = ( /obj/structure/window/reinforced, /turf/simulated/floor/plasteel/airless, @@ -17886,6 +18354,21 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/station/maintenance/fore) +"byK" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_y = 4; + pixel_x = 6 + }, +/obj/item/pen/multi{ + pixel_y = 6; + pixel_x = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutral" + }, +/area/station/hallway/primary/starboard) "byN" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass, @@ -17908,8 +18391,8 @@ /area/station/hallway/primary/central/nw) "byR" = ( /obj/structure/table/reinforced, -/obj/item/storage/firstaid/regular, /obj/item/radio/intercom/directional/west, +/obj/item/storage/firstaid/regular, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) "byS" = ( @@ -17931,21 +18414,13 @@ /obj/structure/chair/office/dark{ dir = 4 }, -/obj/machinery/door_control/shutter/east{ - id = "bridge blast east"; - name = "East Bridge Blast Door Control"; - req_access_txt = "19" - }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) "byY" = ( /obj/structure/table/reinforced, /obj/item/radio/intercom/directional/east, -/obj/item/flash, -/obj/item/storage/box/ids, -/obj/item/storage/box/PDAs{ - pixel_x = 4; - pixel_y = 4 +/obj/item/aicard{ + pixel_y = 5 }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) @@ -18067,6 +18542,7 @@ "bzC" = ( /obj/structure/closet/wardrobe/black, /obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -18138,15 +18614,22 @@ /area/station/engineering/gravitygenerator) "bzN" = ( /obj/effect/turf_decal/delivery, +/obj/machinery/power/apc/directional/west, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bzO" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/delivery/hollow, /obj/item/radio/intercom/directional/north, -/obj/item/crowbar/engineering, +/obj/item/stack/cable_coil/random{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bzU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -18167,7 +18650,7 @@ /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bAe" = ( /obj/structure/cable{ d1 = 1; @@ -18194,15 +18677,26 @@ /area/station/hallway/primary/port) "bAg" = ( /obj/structure/table/reinforced, -/obj/item/plant_analyzer, -/obj/item/plant_analyzer, +/obj/item/analyzer{ + pixel_x = 2; + pixel_y = 2 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bAh" = ( /obj/structure/table/reinforced, -/obj/item/analyzer, -/obj/item/assembly/signaler, /obj/effect/turf_decal/delivery, +/obj/item/folder/yellow{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/assembly/signaler{ + pixel_x = -12; + pixel_y = 8 + }, +/obj/item/folder/white{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "bAi" = ( @@ -18212,21 +18706,30 @@ /area/station/engineering/tech_storage) "bAk" = ( /obj/structure/table/reinforced, -/obj/item/mmi, /obj/structure/extinguisher_cabinet/directional/north, +/obj/item/mmi, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bAm" = ( -/obj/machinery/firealarm/directional/north, /obj/machinery/light/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/carpet, /area/station/security/detective) "bAp" = ( /obj/structure/table/reinforced, -/obj/item/aiModule/reset, -/obj/item/flash, -/obj/item/flash, /obj/effect/turf_decal/delivery, +/obj/item/aiModule/reset{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/flash{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/flash{ + pixel_x = -6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "bAr" = ( @@ -18305,10 +18808,7 @@ "bAI" = ( /obj/machinery/alarm/directional/south, /obj/machinery/light/small/directional/south, -/obj/structure/closet/crate, -/obj/item/storage/belt/champion, -/obj/item/stack/sheet/mineral/gold, -/obj/item/stack/sheet/mineral/gold, +/obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "vault" @@ -18392,9 +18892,9 @@ "bBq" = ( /obj/machinery/recharge_station, /obj/effect/turf_decal/delivery/hollow, -/obj/machinery/firealarm/directional/south, /obj/machinery/light/directional/east, /obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whitepurple" @@ -18429,33 +18929,34 @@ /area/station/engineering/gravitygenerator) "bBy" = ( /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bBz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bBA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bBE" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "cautioncorner" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bBG" = ( /turf/simulated/floor/plasteel{ dir = 1; icon_state = "caution" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bBH" = ( /obj/structure/cable{ d1 = 1; @@ -18469,14 +18970,13 @@ dir = 1; icon_state = "caution" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bBI" = ( -/obj/machinery/alarm/directional/east, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "caution" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bBO" = ( /obj/structure/cable{ d1 = 1; @@ -18497,10 +18997,18 @@ "bBP" = ( /obj/structure/table/reinforced, /obj/machinery/light/directional/west, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, -/obj/item/healthanalyzer, -/obj/item/healthanalyzer, +/obj/item/stack/cable_coil/random{ + pixel_y = 14 + }, +/obj/item/stack/cable_coil/random{ + pixel_y = 10 + }, +/obj/item/stack/cable_coil/random{ + pixel_y = 6 + }, +/obj/item/stack/cable_coil/random{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bBQ" = ( @@ -18524,7 +19032,9 @@ "bBU" = ( /obj/structure/table/reinforced, /obj/machinery/light/directional/east, -/obj/item/aicard, +/obj/item/aicard{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bBW" = ( @@ -18537,16 +19047,19 @@ "bBX" = ( /obj/structure/table/reinforced, /obj/machinery/light/directional/west, -/obj/item/analyzer, -/obj/item/analyzer, -/obj/item/assembly/signaler, -/obj/item/assembly/signaler, /obj/effect/turf_decal/delivery/hollow, +/obj/item/stack/packageWrap{ + pixel_y = 6 + }, +/obj/item/hand_labeler{ + pixel_y = -2 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bBY" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/delivery, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bBZ" = ( @@ -18614,21 +19127,16 @@ /area/station/public/storage/tools) "bCg" = ( /obj/structure/table/reinforced, -/obj/item/assembly/igniter, -/obj/item/assembly/igniter, -/obj/item/assembly/igniter, -/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/light/directional/east, +/obj/item/weldingtool, +/obj/item/clothing/head/welding{ + pixel_x = 6; + pixel_y = -8 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bCn" = ( -/obj/machinery/door_control/shutter/north{ - id = "bridge blast west"; - name = "West Bridge Blast Door Control"; - pixel_x = null; - req_access_txt = "19" - }, /obj/structure/cable{ d1 = 2; d2 = 8; @@ -18730,7 +19238,7 @@ id = "bridge blast east"; name = "East Bridge Blast Door Control"; pixel_x = null; - req_access_txt = "19" + req_access = list(19) }, /obj/structure/disposalpipe/segment/corner{ dir = 4 @@ -18796,8 +19304,13 @@ /area/station/security/permabrig) "bCP" = ( /obj/effect/spawner/window/reinforced/grilled, +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id_tag = "shooting_range1"; + name = "Shooting Range Shutters" + }, /turf/simulated/floor/plating, -/area/station/security/storage) +/area/station/security/restroom) "bCT" = ( /obj/item/radio/intercom/directional/south, /obj/item/radio/intercom/private{ @@ -18900,7 +19413,9 @@ /turf/simulated/floor/greengrid, /area/station/turret_protected/ai) "bDc" = ( -/turf/simulated/floor/greengrid, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, /area/station/engineering/gravitygenerator) "bDd" = ( /obj/machinery/door/firedoor, @@ -19032,9 +19547,9 @@ /area/station/engineering/gravitygenerator) "bDm" = ( /obj/structure/cable{ - d1 = 4; + d1 = 1; d2 = 8; - icon_state = "4-8" + icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -19045,8 +19560,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bDo" = ( /obj/structure/cable{ d1 = 4; @@ -19061,7 +19581,7 @@ }, /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bDp" = ( /turf/simulated/wall, /area/station/maintenance/port2) @@ -19079,7 +19599,7 @@ dir = 6 }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bDr" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering, @@ -19098,7 +19618,7 @@ /obj/effect/turf_decal/delivery, /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bDu" = ( /obj/structure/cable{ d1 = 4; @@ -19117,7 +19637,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bDx" = ( /obj/structure/cable{ d1 = 1; @@ -19139,14 +19659,14 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bDy" = ( /obj/machinery/status_display/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "caution" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bDC" = ( /obj/structure/cable{ d1 = 1; @@ -19172,24 +19692,26 @@ }, /area/station/engineering/tech_storage) "bDH" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/cyborgrecharger{ - pixel_x = -3; - pixel_y = 3 +/obj/structure/shelf/engineering, +/obj/effect/turf_decal/delivery/hollow, +/obj/item/circuitboard/mechfab{ + pixel_x = -6; + pixel_y = -4 }, -/obj/item/circuitboard/mech_bay_power_console, /obj/item/circuitboard/mech_recharger{ - pixel_x = 3; - pixel_y = -3 + pixel_y = -4 }, -/obj/item/circuitboard/mechfab{ +/obj/item/circuitboard/mech_bay_power_console{ pixel_x = 6; - pixel_y = -6 + pixel_y = -4 + }, +/obj/item/circuitboard/cyborgrecharger{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/circuitboard/aifixer{ + pixel_y = 8 }, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -19200,28 +19722,26 @@ /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bDJ" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/rdconsole{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/circuitboard/rdserver{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/destructive_analyzer, +/obj/structure/shelf/engineering, +/obj/effect/turf_decal/delivery/hollow, /obj/item/circuitboard/protolathe{ - pixel_x = 3; - pixel_y = -3 + pixel_x = -6; + pixel_y = -4 }, /obj/item/circuitboard/circuit_imprinter{ + pixel_y = -4 + }, +/obj/item/circuitboard/destructive_analyzer{ pixel_x = 6; - pixel_y = -6 + pixel_y = -4 + }, +/obj/item/circuitboard/rdserver{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/circuitboard/rdconsole{ + pixel_y = 8 }, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -19271,10 +19791,13 @@ /area/station/public/storage/tools) "bDP" = ( /obj/structure/table/reinforced, -/obj/item/stack/rods, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, /obj/effect/turf_decal/delivery/hollow, +/obj/item/storage/box/lights/mixed{ + pixel_y = 14 + }, +/obj/item/storage/belt/utility{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bDQ" = ( @@ -19289,10 +19812,10 @@ /area/station/hallway/primary/central/nw) "bDS" = ( /obj/structure/table/reinforced, -/obj/item/crowbar, -/obj/item/wrench, -/obj/item/gps, /obj/effect/turf_decal/delivery/hollow, +/obj/item/painter{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bDT" = ( @@ -19342,8 +19865,13 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/restraints/handcuffs, -/obj/item/flash, +/obj/item/restraints/handcuffs{ + pixel_y = 6 + }, +/obj/item/flash{ + pixel_x = 6; + pixel_y = -2 + }, /turf/simulated/floor/carpet, /area/station/command/bridge) "bEg" = ( @@ -19490,7 +20018,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/engineering/general, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bEK" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -19536,18 +20064,41 @@ /turf/simulated/floor/plasteel{ icon_state = "caution" }, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bER" = ( /obj/machinery/light/directional/south, +/obj/structure/shelf/engineering, +/obj/item/storage/box{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/storage/box{ + pixel_y = -4 + }, +/obj/item/storage/box{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/storage/box{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/box{ + pixel_y = 8 + }, +/obj/item/storage/box{ + pixel_y = 8; + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "caution" }, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bES" = ( /turf/simulated/floor/plasteel{ icon_state = "caution" }, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bET" = ( /obj/item/kirbyplants, /obj/machinery/firealarm/directional/west, @@ -19556,7 +20107,7 @@ dir = 10; icon_state = "caution" }, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bEU" = ( /obj/item/kirbyplants, /obj/machinery/firealarm/directional/east, @@ -19566,7 +20117,7 @@ dir = 6; icon_state = "caution" }, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "bEW" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -19574,13 +20125,13 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bEX" = ( /obj/structure/chair/stool, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bEY" = ( /obj/structure/flora/junglebush, /obj/structure/flora/ausbushes/fernybush, @@ -19598,14 +20149,14 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bFb" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bFd" = ( /obj/structure/closet/emcloset, /obj/machinery/camera{ @@ -19618,7 +20169,7 @@ dir = 9 }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bFe" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/stripes/line{ @@ -19626,14 +20177,14 @@ }, /obj/structure/extinguisher_cabinet/directional/north, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bFf" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/turf_decal/stripes/line{ dir = 5 }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bFg" = ( /obj/structure/cable{ d2 = 2; @@ -19641,83 +20192,115 @@ }, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bFi" = ( /obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/machinery/cell_charger{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/stock_parts/cell/high{ + pixel_x = 2; + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bFj" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, +/obj/structure/shelf/engineering, +/obj/effect/turf_decal/delivery/hollow, /obj/item/circuitboard/cloning{ - pixel_x = -8; - pixel_y = 8 + pixel_x = -6; + pixel_y = -4 }, -/obj/item/circuitboard/clonescanner{ - pixel_x = -5; - pixel_y = 5 +/obj/item/circuitboard/sleeper{ + pixel_y = -4 }, -/obj/item/circuitboard/clonepod{ - pixel_x = -2; - pixel_y = 2 +/obj/item/circuitboard/bodyscanner{ + pixel_x = 6; + pixel_y = -4 }, /obj/item/circuitboard/cryo_tube{ - pixel_x = 1; - pixel_y = -1 + pixel_x = -6; + pixel_y = 8 }, -/obj/item/circuitboard/pandemic{ - pixel_x = 3; - pixel_y = -3 +/obj/item/circuitboard/clonepod{ + pixel_y = 8 }, -/obj/item/circuitboard/bodyscanner{ +/obj/item/circuitboard/clonescanner{ pixel_x = 6; - pixel_y = -6 - }, -/obj/item/circuitboard/sleeper{ - pixel_x = 9; - pixel_y = -9 + pixel_y = 8 }, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, /area/station/engineering/tech_storage) "bFk" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, +/obj/structure/shelf/engineering, +/obj/effect/turf_decal/delivery/hollow, /obj/item/circuitboard/autolathe{ - pixel_x = -1; - pixel_y = 1 + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/circuitboard/pandemic{ + pixel_y = -4 }, /obj/item/circuitboard/ore_redemption{ - pixel_x = 3; - pixel_y = -3 + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/circuitboard/sleeper{ + pixel_x = -6; + pixel_y = 8 }, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, /area/station/engineering/tech_storage) "bFl" = ( /obj/structure/table/reinforced, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/micro_laser, /obj/item/radio/intercom/directional/east, +/obj/item/stock_parts/matter_bin{ + pixel_x = 8; + pixel_y = 10 + }, +/obj/item/stock_parts/matter_bin{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/stock_parts/micro_laser{ + pixel_y = -4 + }, +/obj/item/stock_parts/capacitor{ + pixel_y = -8 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bFm" = ( -/obj/structure/rack, -/obj/item/painter, -/obj/item/toner, +/obj/structure/shelf, /obj/machinery/status_display/directional/west, /obj/effect/turf_decal/delivery/hollow, +/obj/item/assembly/igniter{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/assembly/igniter{ + pixel_y = -4 + }, +/obj/item/assembly/igniter{ + pixel_y = -4; + pixel_x = 6 + }, +/obj/item/assembly/signaler{ + pixel_y = 12; + pixel_x = -8 + }, +/obj/item/assembly/signaler{ + pixel_y = 12 + }, +/obj/item/assembly/signaler{ + pixel_y = 12; + pixel_x = 8 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bFn" = ( @@ -19732,12 +20315,10 @@ }, /area/station/public/storage/tools) "bFp" = ( -/obj/machinery/hologram/holopad, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/storage/tools) +/area/station/engineering/hallway) "bFq" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -19823,10 +20404,26 @@ /turf/simulated/floor/plating, /area/station/command/bridge) "bFF" = ( -/obj/structure/rack, -/obj/item/aicard, -/obj/item/storage/secure/briefcase, /obj/machinery/light/small/directional/south, +/obj/structure/shelf/command, +/obj/item/storage/secure/briefcase{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/storage/secure/briefcase{ + pixel_y = -4 + }, +/obj/item/storage/secure/briefcase{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/storage/box/PDAs{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/storage/box/ids{ + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkblue" @@ -19837,7 +20434,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/taperecorder, +/obj/item/taperecorder{ + pixel_y = 4 + }, /turf/simulated/floor/carpet, /area/station/command/bridge) "bFH" = ( @@ -19867,14 +20466,19 @@ /turf/simulated/floor/carpet, /area/station/command/bridge) "bFL" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/emergency, -/obj/item/wrench, +/obj/machinery/light/small/directional/south, +/obj/structure/shelf/command, +/obj/item/storage/toolbox/emergency{ + pixel_x = -6; + pixel_y = -4 + }, /obj/item/storage/toolbox/mechanical{ - pixel_y = -3 + pixel_y = -4 + }, +/obj/item/storage/toolbox/electrical{ + pixel_x = 6; + pixel_y = -4 }, -/obj/item/multitool/command, -/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkblue" @@ -19990,7 +20594,7 @@ "bGA" = ( /obj/machinery/status_display, /turf/simulated/wall, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGB" = ( /obj/machinery/camera{ c_tag = "Gravity Generation"; @@ -20001,30 +20605,45 @@ /area/station/engineering/gravitygenerator) "bGD" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/drinks/cans/starkist, +/obj/item/reagent_containers/drinks/cans/starkist{ + pixel_x = -6; + pixel_y = 4 + }, /obj/effect/turf_decal/delivery/hollow, +/obj/item/reagent_containers/drinks/cans/beer{ + pixel_x = 16; + pixel_y = 7 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGE" = ( /obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/pen, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGF" = ( /obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/lightreplacer, +/obj/item/folder/yellow{ + pixel_x = 6; + pixel_y = 2 + }, /obj/effect/turf_decal/delivery/hollow, +/obj/item/folder/yellow{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/pen{ + pixel_x = 2; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGG" = ( /obj/structure/cable{ d1 = 1; @@ -20046,7 +20665,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGH" = ( /obj/structure/cable{ d1 = 4; @@ -20065,7 +20684,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGI" = ( /obj/structure/cable{ d1 = 4; @@ -20082,7 +20701,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGK" = ( /obj/structure/cable{ d1 = 4; @@ -20104,7 +20723,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGL" = ( /obj/structure/cable{ d1 = 4; @@ -20124,7 +20743,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGM" = ( /obj/structure/cable{ d1 = 4; @@ -20144,7 +20763,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGN" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering/glass, @@ -20177,7 +20796,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bGO" = ( /obj/structure/cable{ d1 = 4; @@ -20248,7 +20867,10 @@ /area/station/hallway/primary/port) "bGS" = ( /obj/structure/table/reinforced, -/obj/item/folder/yellow, +/obj/item/healthanalyzer{ + pixel_y = 8 + }, +/obj/item/healthanalyzer, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bGT" = ( @@ -20272,18 +20894,25 @@ "bGY" = ( /obj/structure/table/reinforced, /obj/machinery/alarm/directional/east, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, +/obj/item/stock_parts/manipulator{ + pixel_x = 2; + pixel_y = 14 + }, +/obj/item/stock_parts/manipulator{ + pixel_x = 2; + pixel_y = 8 + }, /obj/item/stock_parts/scanning_module, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/capacitor, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bGZ" = ( /obj/structure/table/reinforced, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_y = -2 + }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) @@ -20295,9 +20924,19 @@ /area/station/public/storage/tools) "bHb" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight, /obj/effect/turf_decal/delivery/hollow, +/obj/item/book/manual/wiki/engineering_construction{ + pixel_x = 9; + pixel_y = 4 + }, +/obj/item/book/manual/wiki/hacking{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/book/manual/wiki/engineering_guide{ + pixel_x = -4; + pixel_y = 7 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bHc" = ( @@ -20325,7 +20964,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bHj" = ( /turf/simulated/wall/r_wall, /area/station/command/meeting_room) @@ -20348,16 +20987,28 @@ /area/station/command/meeting_room) "bHn" = ( /obj/structure/table/reinforced, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_x = -4; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, /area/station/command/bridge) "bHo" = ( /obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/megaphone, +/obj/machinery/cell_charger{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/stock_parts/cell/high{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/megaphone{ + pixel_x = -18; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, @@ -20390,13 +21041,13 @@ id = "stationawaygate"; name = "Expedition Shutters Access Control"; pixel_x = 7; - req_access_txt = "62" + req_access = list(62) }, /obj/machinery/door_control/shutter/south{ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; pixel_x = -7; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/keycard_auth/south{ pixel_y = -32 @@ -20408,8 +21059,14 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/paper_bin/nanotrasen, -/obj/item/pen/multi, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/pen/multi{ + pixel_x = 2; + pixel_y = 4 + }, /turf/simulated/floor/carpet, /area/station/command/bridge) "bHv" = ( @@ -20418,8 +21075,14 @@ /area/station/command/bridge) "bHw" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -4; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, @@ -20474,9 +21137,14 @@ /area/station/public/vacant_store) "bHK" = ( /obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/folder/red, -/obj/item/hand_labeler, +/obj/item/folder/red{ + pixel_x = -10; + pixel_y = 6 + }, +/obj/item/hand_labeler{ + pixel_x = 2; + pixel_y = 1 + }, /turf/simulated/floor/carpet, /area/station/security/detective) "bHM" = ( @@ -20612,7 +21280,7 @@ name = "AI Chamber Turret Control"; pixel_x = -6; pixel_y = 24; - req_one_access_txt = "75" + req_access = list(75) }, /obj/effect/mapping_helpers/airlock/windoor/access/any/command/ai_upload{ dir = 4 @@ -20666,21 +21334,29 @@ /area/station/command/office/ce) "bIs" = ( /obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/machinery/cell_charger{ + pixel_y = 2 + }, +/obj/item/stock_parts/cell/high{ + pixel_y = 2 + }, /obj/machinery/ai_status_display/north, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) "bIu" = ( /obj/structure/rack, -/obj/item/crowbar, -/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 2 + }, /obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/item/crowbar{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) "bIv" = ( /obj/item/kirbyplants, -/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) "bIx" = ( @@ -20688,14 +21364,14 @@ dir = 8 }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bIy" = ( /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bIA" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -20713,7 +21389,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bID" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -20722,7 +21398,7 @@ dir = 10 }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bIG" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -20734,25 +21410,21 @@ dir = 6 }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bIJ" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, +/obj/structure/shelf/engineering, +/obj/effect/turf_decal/delivery/hollow, /obj/item/circuitboard/secure_data{ - pixel_x = -1; - pixel_y = 1 + pixel_x = -6; + pixel_y = -4 }, /obj/item/circuitboard/camera{ - pixel_x = 2; - pixel_y = -2 + pixel_y = -4 }, /obj/item/circuitboard/prisoner{ - pixel_x = 5; - pixel_y = -5 + pixel_x = 6; + pixel_y = -4 }, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -20761,43 +21433,41 @@ /obj/structure/cable, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bIN" = ( /obj/structure/table/reinforced, /obj/machinery/camera{ c_tag = "Technical Storage"; dir = 4 }, -/obj/item/paicard, +/obj/item/plant_analyzer{ + pixel_y = 8 + }, +/obj/item/plant_analyzer, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bIO" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 +/obj/structure/shelf/engineering, +/obj/effect/turf_decal/delivery/hollow, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, /obj/item/circuitboard/message_monitor{ pixel_x = -6; - pixel_y = 6 - }, -/obj/item/circuitboard/aifixer{ - pixel_x = -3; - pixel_y = 3 + pixel_y = -4 }, -/obj/item/circuitboard/teleporter, -/obj/item/circuitboard/teleporter_hub{ - pixel_x = 3; - pixel_y = -3 +/obj/item/circuitboard/teleporter{ + pixel_y = -4 }, /obj/item/circuitboard/teleporter_station{ pixel_x = 6; - pixel_y = -6 + pixel_y = -4 }, -/obj/effect/turf_decal/delivery/hollow, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/item/circuitboard/teleporter_hub{ + pixel_x = -6; + pixel_y = 8 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -20805,24 +21475,26 @@ /area/station/engineering/tech_storage) "bIR" = ( /obj/structure/table/reinforced, -/obj/item/folder/white, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, /obj/machinery/power/apc/directional/east, /obj/structure/cable{ d2 = 8; icon_state = "0-8" }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bIS" = ( /obj/structure/table/reinforced, -/obj/item/clothing/gloves/color/fyellow, -/obj/item/storage/box/lights/mixed, -/obj/effect/turf_decal/delivery/hollow, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/flashlight{ + pixel_y = 18 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 2 + }, +/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bIT" = ( @@ -20905,7 +21577,9 @@ /area/station/command/office/captain) "bJg" = ( /obj/structure/table/wood, -/obj/item/paicard, +/obj/item/paicard{ + pixel_y = 2 + }, /obj/effect/turf_decal/siding/wood/oak{ dir = 5 }, @@ -20926,8 +21600,14 @@ /area/station/turret_protected/ai_upload) "bJj" = ( /obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/toy/figure/crew/captain, +/obj/item/clipboard{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/toy/figure/crew/captain{ + pixel_x = -4; + pixel_y = 3 + }, /obj/effect/turf_decal/siding/wood/oak{ dir = 9 }, @@ -20952,7 +21632,7 @@ dir = 1; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "bJm" = ( /obj/effect/turf_decal/siding/wood/oak{ dir = 1 @@ -21106,7 +21786,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, -/obj/machinery/porta_turret, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -21311,7 +21991,7 @@ dir = 8; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bKn" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -21338,32 +22018,31 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bKr" = ( /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bKu" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, +/obj/structure/shelf/engineering, +/obj/effect/turf_decal/delivery/hollow, /obj/item/circuitboard/powermonitor{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/stationalert, -/obj/item/circuitboard/atmos_alert{ - pixel_x = 3; - pixel_y = -3 + pixel_x = -6; + pixel_y = -4 }, /obj/item/circuitboard/smes{ + pixel_y = -4 + }, +/obj/item/circuitboard/atmos_alert{ pixel_x = 6; - pixel_y = -6 + pixel_y = -4 + }, +/obj/item/circuitboard/stationalert{ + pixel_x = -6; + pixel_y = 8 }, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -21380,12 +22059,27 @@ }, /area/station/hallway/secondary/entry) "bKA" = ( -/obj/structure/rack, -/obj/item/book/manual/wiki/hacking, -/obj/item/book/manual/wiki/engineering_guide, -/obj/item/book/manual/wiki/engineering_construction, +/obj/structure/shelf, /obj/machinery/status_display/directional/west, /obj/effect/turf_decal/delivery/hollow, +/obj/item/radio{ + pixel_x = -8 + }, +/obj/item/radio, +/obj/item/radio{ + pixel_x = 8 + }, +/obj/item/assembly/timer{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/assembly/timer{ + pixel_y = 8 + }, +/obj/item/assembly/timer{ + pixel_y = 8; + pixel_x = 8 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bKB" = ( @@ -21412,7 +22106,7 @@ dir = 8 }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bKD" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 9; @@ -21439,23 +22133,20 @@ "bKF" = ( /obj/structure/table/wood, /obj/item/clothing/mask/cigarette/cigar{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = -2; - pixel_y = 3 + pixel_y = 10 }, /obj/machinery/door_control/shutter{ id = "meetroomshutters"; name = "Privacy Shutters"; - pixel_x = 5; - pixel_y = -4; - req_one_access_txt = "18" + pixel_y = -2; + req_access = list(18) }, /obj/effect/turf_decal/siding/wood/oak{ dir = 8 }, +/obj/item/clothing/mask/cigarette/cigar{ + pixel_y = 16 + }, /turf/simulated/floor/wood/oak, /area/station/command/meeting_room) "bKH" = ( @@ -21491,10 +22182,6 @@ }, /turf/simulated/floor/wood/oak, /area/station/command/meeting_room) -"bKP" = ( -/obj/machinery/porta_turret, -/turf/simulated/floor/plasteel/dark, -/area/station/turret_protected/ai_upload) "bKS" = ( /obj/machinery/light_switch/north, /turf/simulated/floor/bluegrid, @@ -21574,9 +22261,18 @@ /area/station/legal/lawoffice) "bLi" = ( /obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/book/manual/wiki/security_space_law/black, -/obj/item/stamp/law, +/obj/item/clipboard{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/book/manual/wiki/security_space_law/black{ + pixel_x = -6; + pixel_y = 1 + }, +/obj/item/stamp/law{ + pixel_x = 6; + pixel_y = 4 + }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 8 }, @@ -21591,7 +22287,7 @@ dir = 4; icon_state = "redcorner" }, -/area/station/security/storage) +/area/station/security/restroom) "bLk" = ( /obj/structure/toilet{ dir = 4 @@ -21603,7 +22299,7 @@ /obj/effect/landmark/start/assistant, /obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "bLl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -21660,11 +22356,16 @@ /turf/simulated/floor/plasteel/dark, /area/station/security/detective) "bLt" = ( -/obj/machinery/status_display/directional/south, +/obj/machinery/power/apc/directional/north, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/plasteel{ - icon_state = "neutral" + dir = 1; + icon_state = "red" }, -/area/station/public/fitness) +/area/station/security/brig) "bLx" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -21724,7 +22425,7 @@ /obj/machinery/access_button/east{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/security/brig, @@ -21748,7 +22449,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -21845,13 +22546,19 @@ /area/station/aisat) "bLZ" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/metal/fifty{ - pixel_x = -2; - pixel_y = 3 - }, /obj/machinery/alarm/directional/west, /obj/effect/turf_decal/delivery/hollow, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/stack/rods{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bMa" = ( @@ -21897,19 +22604,16 @@ "bMi" = ( /obj/structure/table/reinforced, /obj/item/paper_bin/nanotrasen{ - pixel_x = -7 - }, -/obj/item/pen/multi{ - pixel_y = 10; - pixel_x = -7 - }, -/obj/item/stamp/ce{ - pixel_x = 7; - pixel_y = 7 + pixel_x = -6; + pixel_y = 2 }, /obj/item/folder/blue{ - pixel_x = 7; - pixel_y = -2 + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/pen/multi{ + pixel_y = 2; + pixel_x = -6 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -21918,11 +22622,20 @@ "bMj" = ( /obj/structure/table/reinforced, /obj/item/flashlight/lamp{ - pixel_x = -7; - pixel_y = 4 + pixel_x = -8; + pixel_y = 6 }, /obj/item/paper/tcommskey{ - pixel_x = 7 + pixel_x = 8; + pixel_y = -8 + }, +/obj/item/paper/sm_paper{ + pixel_y = -6; + pixel_x = 6 + }, +/obj/item/stamp/ce{ + pixel_x = 7; + pixel_y = 7 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -21960,18 +22673,18 @@ /turf/simulated/floor/plasteel{ icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bMu" = ( /turf/simulated/floor/plasteel{ icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bMv" = ( /obj/machinery/status_display/directional/south, /turf/simulated/floor/plasteel{ icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bMA" = ( /obj/structure/sign/poster/official/random/north, /obj/item/radio/intercom/directional/east, @@ -21985,15 +22698,35 @@ /obj/structure/table/reinforced, /obj/machinery/light/directional/west, /obj/structure/extinguisher_cabinet/directional/west, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/toolbox/electrical, -/obj/item/multitool, +/obj/item/assembly/timer{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/assembly/timer{ + pixel_x = -4 + }, +/obj/item/assembly/voice{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/item/assembly/voice{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/flashlight{ + pixel_y = -2 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bME" = ( /obj/structure/table/reinforced, /obj/machinery/light/directional/east, -/obj/item/circuitboard/sleeper, +/obj/item/flashlight{ + pixel_y = 10 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = -4 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bMF" = ( @@ -22010,8 +22743,15 @@ /area/station/engineering/atmos) "bMG" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/electrical, /obj/effect/turf_decal/delivery/hollow, +/obj/item/multitool{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/multitool{ + pixel_x = 6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bMH" = ( @@ -22026,6 +22766,12 @@ }, /area/station/public/storage/tools) "bMJ" = ( +/obj/machinery/hologram/holopad{ + pixel_x = 16 + }, +/obj/effect/turf_decal/delivery/hollow{ + pixel_x = 16 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "cautioncorner" @@ -22077,6 +22823,7 @@ "bMQ" = ( /obj/structure/table/wood, /obj/item/folder/yellow, +/obj/effect/spawner/random_spawners/id_skins, /turf/simulated/floor/carpet, /area/station/command/meeting_room) "bMR" = ( @@ -22159,8 +22906,12 @@ /area/station/command/office/captain) "bNg" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar, -/obj/item/clothing/mask/cigarette/cigar, +/obj/item/clothing/mask/cigarette/cigar{ + pixel_y = 2 + }, +/obj/item/clothing/mask/cigarette/cigar{ + pixel_y = 8 + }, /turf/simulated/floor/wood/oak, /area/station/command/office/captain) "bNh" = ( @@ -22224,7 +22975,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "bNr" = ( /obj/structure/cable{ d1 = 2; @@ -22269,7 +23020,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredfull" }, -/area/station/security/brig) +/area/station/security/lobby) "bNx" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -22343,7 +23094,6 @@ dir = 10 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel, /area/station/security/permabrig) "bNI" = ( @@ -22432,7 +23182,7 @@ /obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bNZ" = ( /obj/machinery/camera{ c_tag = "Chief Engineer's Office"; @@ -22508,7 +23258,7 @@ "bOg" = ( /obj/structure/sign/nosmoking_2, /turf/simulated/wall, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bOh" = ( /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ @@ -22519,14 +23269,28 @@ "bOi" = ( /obj/structure/sign/securearea, /turf/simulated/wall, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bOj" = ( /obj/structure/table/reinforced, -/obj/item/assembly/timer, -/obj/item/assembly/timer, -/obj/item/assembly/voice, -/obj/item/assembly/voice, /obj/effect/turf_decal/delivery, +/obj/item/stock_parts/cell{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/stock_parts/cell{ + pixel_x = 4 + }, +/obj/item/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000; + pixel_x = -10; + pixel_y = 6 + }, +/obj/item/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000; + pixel_x = -10 + }, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "bOl" = ( @@ -22542,10 +23306,15 @@ /area/station/security/podpilot) "bOn" = ( /obj/structure/table, -/obj/machinery/kitchen_machine/microwave{ - pixel_y = 6 - }, /obj/machinery/light_switch/west, +/obj/machinery/power/apc/directional/north, +/obj/machinery/recharger{ + pixel_y = 2 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "yellow" @@ -22553,9 +23322,10 @@ /area/station/engineering/break_room) "bOq" = ( /obj/structure/table/reinforced, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/toolbox/electrical, -/obj/item/multitool, +/obj/item/t_scanner{ + pixel_x = 2; + pixel_y = 8 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bOr" = ( @@ -22581,8 +23351,12 @@ /area/station/engineering/tech_storage) "bOu" = ( /obj/structure/table/reinforced, -/obj/item/wrench, -/obj/item/crowbar, +/obj/item/wrench{ + pixel_y = 2 + }, +/obj/item/crowbar{ + pixel_y = 2 + }, /obj/machinery/newscaster/directional/south, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, @@ -22603,18 +23377,24 @@ /area/station/maintenance/fore) "bOw" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight, +/obj/item/paicard{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/engineering/tech_storage) "bOx" = ( /obj/structure/table/reinforced, /obj/machinery/light/directional/west, -/obj/item/assembly/timer, -/obj/item/assembly/timer, -/obj/item/multitool, -/obj/item/multitool, /obj/effect/turf_decal/delivery/hollow, +/obj/item/stack/cable_coil/random{ + pixel_y = 16 + }, +/obj/item/stack/cable_coil/random{ + pixel_y = 12 + }, +/obj/item/analyzer{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bOy" = ( @@ -22801,18 +23581,24 @@ dir = 8; icon_state = "darkredcorners" }, -/area/station/security/brig) +/area/station/security/lobby) "bPd" = ( /obj/structure/table/wood, -/obj/item/flashlight/lamp{ - pixel_y = 4; - pixel_x = -4 +/obj/item/camera{ + pixel_x = -2; + pixel_y = 12 }, -/obj/item/camera, -/obj/item/taperecorder, /obj/effect/turf_decal/siding/wood/cherry{ dir = 10 }, +/obj/item/taperecorder{ + pixel_x = 18; + pixel_y = 3 + }, +/obj/item/flashlight/lamp{ + pixel_y = 4; + pixel_x = -4 + }, /turf/simulated/floor/wood/fancy/cherry, /area/station/legal/lawoffice) "bPe" = ( @@ -22907,6 +23693,10 @@ pixel_y = 6 }, /obj/item/toy/figure/crew/detective, +/obj/item/reagent_containers/drinks/bottle/whiskey{ + pixel_x = -10; + pixel_y = 10 + }, /turf/simulated/floor/plasteel/dark, /area/station/security/detective) "bPp" = ( @@ -23006,7 +23796,7 @@ /turf/simulated/floor/plating, /area/station/turret_protected/aisat) "bPI" = ( -/obj/machinery/porta_turret, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -23106,19 +23896,29 @@ /area/space/nearstation) "bPY" = ( /obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/machinery/cell_charger{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stock_parts/cell/high{ + pixel_x = 3; + pixel_y = 3 + }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bPZ" = ( /obj/structure/table/reinforced, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, /obj/machinery/firealarm/directional/south, /obj/machinery/light_switch/east, /obj/effect/turf_decal/delivery/hollow, +/obj/item/storage/toolbox/electrical{ + pixel_y = 2 + }, +/obj/item/analyzer{ + pixel_x = 2; + pixel_y = 18 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "bQa" = ( @@ -23196,10 +23996,14 @@ id = "ceofficedoor"; name = "Office Door"; pixel_x = -5; - req_access_txt = "56" + req_access = list(56) }, -/obj/item/paper/sm_paper{ - pixel_y = 3 +/obj/item/circuitboard/autolathe{ + pixel_y = 11 + }, +/obj/item/toy/figure/crew/ce{ + pixel_x = 6; + pixel_y = -2 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -23231,7 +24035,9 @@ /area/station/command/office/ce) "bQk" = ( /obj/structure/table/wood, -/obj/item/flashlight/lamp, +/obj/item/flashlight/lamp{ + pixel_y = 2 + }, /obj/machinery/ai_status_display/north, /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel/grimy, @@ -23259,7 +24065,6 @@ }, /area/station/security/storage) "bQp" = ( -/obj/item/kirbyplants, /obj/machinery/light/directional/west, /obj/machinery/camera{ c_tag = "Engineering Lobby"; @@ -23271,7 +24076,7 @@ dir = 8; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "bQq" = ( /obj/structure/closet/radiation, /obj/structure/extinguisher_cabinet/directional/west, @@ -23293,6 +24098,11 @@ }, /area/station/hallway/primary/fore) "bQt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "yellow" @@ -23396,9 +24206,7 @@ /area/station/command/office/blueshield) "bQK" = ( /obj/machinery/alarm/directional/west, -/obj/machinery/porta_turret{ - dir = 4 - }, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/plasteel/dark, /area/station/turret_protected/ai_upload) "bQL" = ( @@ -23417,9 +24225,7 @@ /turf/simulated/floor/bluegrid, /area/station/turret_protected/ai_upload) "bQN" = ( -/obj/machinery/porta_turret{ - dir = 8 - }, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/plasteel/dark, /area/station/turret_protected/ai_upload) "bQO" = ( @@ -23439,9 +24245,15 @@ dir = 1; layer = 2.9 }, -/obj/item/paper_bin/nanotrasen, -/obj/item/melee/chainofcommand, -/obj/item/pen/multi, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 6 + }, +/obj/item/pen/multi{ + pixel_x = 6 + }, +/obj/item/stamp/captain{ + pixel_x = -6 + }, /turf/simulated/floor/carpet/black, /area/station/command/office/captain) "bQQ" = ( @@ -23452,8 +24264,6 @@ icon_state = "right"; name = "Captain's Desk Door" }, -/obj/item/folder/blue, -/obj/item/stamp/captain, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -23467,6 +24277,10 @@ /obj/effect/mapping_helpers/airlock/windoor/access/any/command/blueshield{ dir = 1 }, +/obj/item/folder/blue{ + pixel_x = -16 + }, +/obj/item/melee/chainofcommand, /turf/simulated/floor/carpet/black, /area/station/command/office/captain) "bQR" = ( @@ -23490,14 +24304,14 @@ dir = 1; layer = 2.9 }, -/obj/item/storage/secure/briefcase, /obj/item/storage/lockbox/medal, /turf/simulated/floor/carpet/black, /area/station/command/office/captain) "bQT" = ( /obj/structure/table/wood, /obj/machinery/photocopier/faxmachine/longrange{ - department = "Captain's Office" + department = "Captain's Office"; + pixel_y = 4 }, /obj/effect/turf_decal/siding/wood/oak{ dir = 10 @@ -23553,7 +24367,6 @@ "bQX" = ( /obj/structure/flora/grass/jungle, /obj/structure/flora/junglebush/large, -/obj/machinery/light/directional/west, /turf/simulated/floor/grass/no_creep, /area/station/public/locker) "bRa" = ( @@ -23719,14 +24532,14 @@ /area/station/command/office/ce) "bRW" = ( /obj/structure/table/reinforced, +/obj/item/clothing/mask/cigarette/cigar{ + pixel_x = 12; + pixel_y = 12 + }, /obj/item/phone{ pixel_x = -3; pixel_y = 3 }, -/obj/item/clothing/mask/cigarette/cigar{ - pixel_x = 5 - }, -/obj/item/lighter/zippo/ce, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -23742,7 +24555,6 @@ /obj/item/cartridge/engineering{ pixel_y = 6 }, -/obj/item/reagent_containers/patch/silver_sulf, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -24014,7 +24826,9 @@ /area/station/command/office/captain) "bSP" = ( /obj/structure/table/wood, -/obj/machinery/computer/security/wooden_tv, +/obj/machinery/computer/security/wooden_tv{ + pixel_y = 6 + }, /turf/simulated/floor/carpet/black, /area/station/command/office/captain) "bSQ" = ( @@ -24036,8 +24850,14 @@ /area/station/command/office/captain) "bSS" = ( /obj/structure/table/wood, -/obj/item/hand_tele, -/obj/item/coin/plasma, +/obj/item/hand_tele{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/coin/plasma{ + pixel_x = -8; + pixel_y = 4 + }, /obj/machinery/status_display/directional/east, /turf/simulated/floor/carpet/black, /area/station/command/office/captain) @@ -24654,22 +25474,23 @@ /area/station/hallway/primary/central/west) "bUQ" = ( /obj/structure/table/wood, -/obj/item/paper_bin/nanotrasen, -/obj/item/stamp/hop, /obj/machinery/requests_console/directional/north, /obj/effect/turf_decal/siding/wood/oak{ dir = 9 }, /obj/effect/turf_decal/siding/wood/oak/corner, +/obj/item/storage/box/ids{ + pixel_y = 1 + }, /turf/simulated/floor/wood/oak, /area/station/command/office/hop) "bUR" = ( /obj/item/kirbyplants, -/obj/machinery/keycard_auth/north, /obj/effect/turf_decal/siding/wood/oak{ dir = 1 }, /obj/effect/turf_decal/siding/wood/oak, +/obj/item/radio/intercom/directional/north, /turf/simulated/floor/wood/oak, /area/station/command/office/hop) "bUU" = ( @@ -24796,7 +25617,7 @@ /obj/machinery/turretid/stun{ name = "AI Antechamber Turret Control"; pixel_x = -28; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -25046,13 +25867,13 @@ /obj/machinery/door_control/shutter/west{ id = "engstorage"; name = "Engineering Secure Storage Control"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/door_control/shutter/west{ id = "transitlock"; name = "Transit Tube Lockdown Control"; pixel_y = -8; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/computer/security/engineering{ dir = 4 @@ -25061,13 +25882,12 @@ id = "CE"; pixel_y = 8; range = 12; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) "bWn" = ( /obj/machinery/photocopier, -/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) "bWo" = ( @@ -25114,7 +25934,7 @@ "bWt" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/engineering/control) +/area/station/engineering/break_room) "bWu" = ( /turf/simulated/floor/plasteel{ dir = 10; @@ -25287,6 +26107,10 @@ /area/station/command/office/captain/bedroom) "bWZ" = ( /obj/structure/sink/directional/west, +/obj/item/clothing/under/towel/long/alt/blue, +/obj/item/clothing/head/towel/blue{ + pixel_y = 7 + }, /turf/simulated/floor/plasteel/white, /area/station/command/office/captain/bedroom) "bXc" = ( @@ -25398,7 +26222,7 @@ }, /area/station/turret_protected/aisat) "bXL" = ( -/obj/machinery/porta_turret, +/obj/machinery/porta_turret/ai_turret, /obj/machinery/firealarm/directional/east, /turf/simulated/floor/plasteel{ dir = 8; @@ -25472,7 +26296,7 @@ name = "Brig Foyer Left Doors"; pixel_x = -5; pixel_y = 6; - req_one_access_txt = "63" + req_access = list(63) }, /obj/machinery/door_control/normal{ desc = "A remote control switch for the brig foyer."; @@ -25480,13 +26304,13 @@ name = "Brig Foyer Right Doors"; pixel_x = 5; pixel_y = 6; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "bXW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -25495,15 +26319,17 @@ dir = 8; icon_state = "darkredcorners" }, -/area/station/security/brig) +/area/station/security/lobby) "bXX" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/starboard2) "bXY" = ( /obj/structure/table/reinforced, -/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/fire{ + pixel_y = 2 + }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, /area/station/engineering/control) @@ -25752,11 +26578,15 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/light/directional/south, +/obj/machinery/camera{ + c_tag = "Brig Labor Camp Airlock"; + dir = 1 + }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "bZf" = ( /obj/structure/window/reinforced{ dir = 4 @@ -26037,7 +26867,8 @@ /obj/structure/table/wood, /obj/machinery/light/directional/south, /obj/machinery/photocopier/faxmachine/longrange{ - department = "Head of Personnel's Office" + department = "Head of Personnel's Office"; + pixel_y = 4 }, /obj/machinery/keycard_auth/east, /obj/effect/turf_decal/siding/wood/oak/end, @@ -26097,7 +26928,10 @@ /area/station/command/office/blueshield) "caj" = ( /obj/structure/table/wood, -/obj/item/flashlight/lamp, +/obj/item/flashlight/lamp{ + pixel_x = -4; + pixel_y = 4 + }, /obj/item/radio/intercom/directional/north, /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) @@ -26117,14 +26951,19 @@ /area/station/command/office/blueshield) "cam" = ( /obj/structure/table/wood, -/obj/item/pinpointer, -/obj/item/disk/nuclear, /obj/item/radio/intercom/directional/west, +/obj/machinery/computer/security/wooden_tv{ + pixel_y = 6; + layer = 3 + }, /turf/simulated/floor/carpet/black, /area/station/command/office/captain/bedroom) "car" = ( /obj/structure/table/wood, -/obj/item/flashlight/lamp/green, +/obj/item/flashlight/lamp/green{ + pixel_x = 4; + pixel_y = 14 + }, /obj/item/card/id/captains_spare, /obj/structure/window/reinforced{ dir = 8 @@ -26200,12 +27039,11 @@ /turf/simulated/floor/carpet/royalblack, /area/station/legal/magistrate) "caH" = ( -/obj/structure/flora/grass/jungle, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/south, -/obj/structure/flora/rock/jungle, -/turf/simulated/floor/grass, -/area/station/security/permabrig) +/obj/effect/turf_decal/stripes/line, +/obj/item/kirbyplants, +/obj/machinery/alarm/directional/east, +/turf/simulated/floor/plasteel, +/area/station/engineering/hallway) "caK" = ( /obj/structure/bookcase, /obj/item/book/manual/wiki/sop_security{ @@ -26243,28 +27081,41 @@ /area/station/supply/storage) "caQ" = ( /obj/structure/table/wood, -/obj/item/radio/intercom/directional/north, /obj/machinery/flasher_button{ id = "hopflash"; - pixel_x = -38; - pixel_y = -6 + pixel_x = -34; + pixel_y = -8 }, /obj/machinery/door_control/shutter/west{ id = "hop"; name = "Privacy Shutters"; pixel_y = -8; - req_one_access_txt = "18" + req_access = list(18) + }, +/obj/machinery/door_control/ticket_machine_button{ + pixel_x = -24; + pixel_y = 8 + }, +/obj/machinery/computer/guestpass/hop{ + pixel_y = 28 + }, +/obj/machinery/keycard_auth/west{ + pixel_x = -34; + pixel_y = 4 }, /obj/machinery/door_control/shutter/west{ id = "hopqueueshutters"; name = "Queue Shutters"; - req_one_access_txt = "18" + req_access = list(18) }, -/obj/machinery/door_control/ticket_machine_button{ - pixel_x = -24; +/obj/item/paper_bin/nanotrasen{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/stamp/hop{ + pixel_x = 8; pixel_y = 8 }, -/obj/machinery/computer/guestpass/hop, /turf/simulated/floor/plasteel/dark, /area/station/command/office/hop) "caT" = ( @@ -26536,7 +27387,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "cbK" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -26617,7 +27468,7 @@ id = "ntrepofficedoor"; name = "Office Door"; pixel_y = -8; - req_access_txt = "73" + req_access = list(73) }, /obj/machinery/light_switch/west{ pixel_y = 32 @@ -26632,8 +27483,6 @@ /area/station/command/office/ntrep) "cbX" = ( /obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/paper_bin/nanotrasen, /turf/simulated/floor/carpet/royalblack, /area/station/command/office/ntrep) "cbY" = ( @@ -26659,19 +27508,27 @@ /area/station/command/office/ntrep) "cca" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/drinks/bottle/whiskey, -/obj/item/reagent_containers/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/drinks/drinkingglass/shotglass{ + pixel_x = -2; + pixel_y = 10 + }, /turf/simulated/floor/wood/oak, /area/station/command/office/ntrep) "ccb" = ( /obj/structure/table/wood, /obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 3; - pixel_y = -3 + pixel_y = 4 }, /obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = -3; - pixel_y = 3 + pixel_y = 12 + }, +/obj/item/reagent_containers/drinks/drinkingglass/shotglass{ + pixel_x = 8; + pixel_y = -8 + }, +/obj/item/reagent_containers/drinks/bottle/whiskey{ + pixel_x = -4; + pixel_y = -2 }, /turf/simulated/floor/wood/oak, /area/station/command/office/ntrep) @@ -26700,6 +27557,18 @@ /area/station/command/office/blueshield) "cce" = ( /obj/structure/table/wood, +/obj/item/book/manual/wiki/sop_command{ + pixel_x = -6; + pixel_y = 14 + }, +/obj/item/folder/blue{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/item/paper/blueshield{ + pixel_x = -4; + pixel_y = -2 + }, /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) "ccf" = ( @@ -26714,7 +27583,7 @@ id = "blueshieldofficedoor"; name = "Office Door"; pixel_x = 24; - req_access_txt = "67" + req_access = list(67) }, /obj/effect/turf_decal/siding/wood/oak{ dir = 4 @@ -26729,10 +27598,14 @@ /obj/item/folder/blue, /obj/item/pen/multi/fountain, /obj/item/paper/safe_code{ - owner = "captain" + owner = "captain"; + pixel_x = 6; + pixel_y = 14 + }, +/obj/item/lighter/zippo/cap{ + pixel_x = -4; + pixel_y = 16 }, -/obj/item/lighter/zippo/cap, -/obj/effect/spawner/random_spawners/id_skins, /turf/simulated/floor/carpet/black, /area/station/command/office/captain/bedroom) "cci" = ( @@ -26944,7 +27817,6 @@ /area/station/engineering/control) "cde" = ( /obj/machinery/light/directional/west, -/obj/machinery/status_display/directional/west, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -27110,15 +27982,21 @@ /area/station/service/library) "cdH" = ( /obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/toy/figure/crew/hop, -/obj/item/megaphone, -/obj/item/storage/box/PDAs, -/obj/item/storage/box/ids, -/obj/effect/spawner/random_spawners/id_skins, /obj/effect/turf_decal/siding/wood/oak/end{ dir = 1 }, +/obj/item/storage/box/PDAs{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/clipboard{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/toy/figure/crew/hop{ + pixel_x = 6; + pixel_y = 2 + }, /turf/simulated/floor/wood/oak, /area/station/command/office/hop) "cdI" = ( @@ -27137,26 +28015,40 @@ /area/station/command/office/ntrep) "cdJ" = ( /obj/structure/table/wood, -/obj/item/folder, -/obj/item/pen/multi/fountain, +/obj/item/folder{ + pixel_x = -10; + pixel_y = 4 + }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /obj/item/flashlight/lamp/green/off{ - pixel_x = -16; + pixel_x = 6; pixel_y = 6 }, /turf/simulated/floor/carpet/royalblack, /area/station/command/office/ntrep) "cdK" = ( /obj/structure/table/wood, -/obj/item/stamp/rep, +/obj/item/stamp/rep{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/paper_bin/nanotrasen{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen/multi/fountain{ + pixel_x = -4; + pixel_y = 4 + }, /turf/simulated/floor/carpet/royalblack, /area/station/command/office/ntrep) "cdN" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/drinks/drinkingglass/shotglass, -/obj/item/storage/fancy/donut_box, +/obj/item/storage/fancy/donut_box{ + pixel_y = 2 + }, /turf/simulated/floor/wood/oak, /area/station/command/office/ntrep) "cdO" = ( @@ -27188,12 +28080,6 @@ /area/station/command/office/blueshield) "cdQ" = ( /obj/structure/table/wood, -/obj/item/folder/blue{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/book/manual/wiki/sop_command, -/obj/item/paper/blueshield, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -27202,8 +28088,7 @@ "cdR" = ( /obj/structure/table/wood, /obj/item/ashtray/glass{ - pixel_x = -4; - pixel_y = -4 + pixel_x = -8 }, /obj/item/lighter/zippo/blue{ pixel_x = 7; @@ -27229,14 +28114,25 @@ /area/station/command/office/blueshield) "cdT" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/drinks/flask/gold, -/obj/item/razor, +/obj/item/reagent_containers/drinks/flask/gold{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/razor{ + pixel_x = 8; + pixel_y = 4 + }, /turf/simulated/floor/carpet/black, /area/station/command/office/captain/bedroom) "cdU" = ( /obj/structure/table/wood, /obj/machinery/light/small/directional/south, -/obj/machinery/computer/security/wooden_tv, +/obj/item/pinpointer{ + pixel_y = 2 + }, +/obj/item/disk/nuclear{ + pixel_y = 2 + }, /turf/simulated/floor/carpet/black, /area/station/command/office/captain/bedroom) "cdV" = ( @@ -27270,9 +28166,11 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/recharger, -/obj/item/megaphone, +/obj/machinery/recharger{ + pixel_y = 2 + }, /obj/structure/cable, +/obj/effect/spawner/random_spawners/id_skins, /turf/simulated/floor/carpet/black, /area/station/command/office/captain/bedroom) "cdZ" = ( @@ -27281,9 +28179,8 @@ /area/station/command/office/captain/bedroom) "cea" = ( /obj/structure/dresser, -/obj/item/clothing/under/towel/long/alt/blue, -/obj/item/clothing/head/towel/blue{ - pixel_y = 7 +/obj/item/megaphone{ + pixel_y = 8 }, /turf/simulated/floor/carpet/black, /area/station/command/office/captain/bedroom) @@ -27385,10 +28282,12 @@ /area/station/maintenance/library) "cex" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/folder/yellow, -/obj/item/gps, -/obj/item/gps, +/obj/item/wrench{ + pixel_y = 4 + }, +/obj/item/crowbar{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "ceF" = ( @@ -27428,7 +28327,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "ceP" = ( -/obj/machinery/porta_turret, +/obj/machinery/porta_turret/ai_turret, /turf/simulated/floor/bluegrid, /area/station/telecomms/chamber) "ceU" = ( @@ -27436,6 +28335,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/machinery/status_display/directional/west, /turf/simulated/floor/plating, /area/station/engineering/control) "ceV" = ( @@ -27503,6 +28403,7 @@ /obj/effect/turf_decal/siding/wood/oak{ dir = 5 }, +/obj/item/storage/secure/briefcase, /turf/simulated/floor/wood/oak, /area/station/command/office/captain/bedroom) "cfb" = ( @@ -27621,7 +28522,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/engineering/smes) "cfn" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/port) "cfo" = ( @@ -27674,13 +28575,18 @@ /area/station/engineering/control) "cfE" = ( /obj/structure/table/wood, -/obj/machinery/recharger, /obj/effect/turf_decal/siding/wood/oak{ dir = 4 }, /obj/effect/turf_decal/siding/wood/oak{ dir = 8 }, +/obj/item/megaphone{ + pixel_y = 16 + }, +/obj/machinery/recharger{ + pixel_y = 2 + }, /turf/simulated/floor/wood/oak, /area/station/command/office/hop) "cfF" = ( @@ -27794,15 +28700,8 @@ }, /area/station/hallway/primary/starboard) "cgh" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_y = 4; - pixel_x = 6 - }, -/obj/item/pen/multi{ - pixel_y = 6; - pixel_x = 6 - }, +/obj/item/kirbyplants, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "neutral" @@ -27811,23 +28710,23 @@ "cgi" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/security/brig) +/area/station/security/lobby) "cgk" = ( /obj/machinery/computer/security{ dir = 1 }, /obj/effect/turf_decal/delivery/hollow, -/obj/machinery/alarm/directional/south, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "cgr" = ( /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "cgu" = ( /obj/machinery/tcomms/core/station, /obj/structure/cable{ @@ -28027,7 +28926,7 @@ /obj/machinery/button/windowtint/west{ id = "BS"; pixel_y = -8; - req_access_txt = "67" + req_access = list(67) }, /obj/structure/cable{ d1 = 1; @@ -28085,12 +28984,12 @@ protected = 0 }, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "chy" = ( /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_access_txt = "4" + req_access = list(4) }, /obj/item/storage/box/evidence, /obj/effect/decal/cleanable/dirt, @@ -28276,27 +29175,37 @@ "cig" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/engineering_guide{ - pixel_x = 4; - pixel_y = 4 + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/book/manual/engineering_particle_accelerator{ + pixel_x = -6; + pixel_y = 5 }, -/obj/item/book/manual/engineering_particle_accelerator, /obj/effect/turf_decal/delivery, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +/obj/item/book/manual/engineering_singularity_safety{ + pixel_x = -6; + pixel_y = 8 }, -/area/station/engineering/control) -"cih" = ( -/obj/structure/table/reinforced, /obj/item/book/manual/wiki/hacking{ pixel_x = 6; - pixel_y = 6 + pixel_y = 2 }, /obj/item/book/manual/wiki/engineering_construction{ - pixel_x = 3; - pixel_y = 3 + pixel_x = 6; + pixel_y = 5 }, -/obj/item/book/manual/engineering_singularity_safety, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/engineering/control) +"cih" = ( +/obj/structure/table/reinforced, /obj/effect/turf_decal/delivery, +/obj/item/clothing/glasses/meson/engine{ + pixel_y = 8 + }, +/obj/item/clothing/gloves/color/black, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -28363,10 +29272,11 @@ /obj/structure/disposalpipe/segment/corner{ dir = 8 }, +/obj/machinery/economy/vending/wallmed/directional/south, /turf/simulated/floor/plasteel{ icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "ciu" = ( /obj/structure/table/wood, /obj/item/newspaper, @@ -28559,6 +29469,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, +/obj/structure/disposalpipe/segment/corner{ + dir = 1 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -28692,10 +29605,10 @@ /area/station/hallway/primary/port) "cjC" = ( /obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 4 +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 4 }, -/obj/item/paper_bin, /obj/structure/sign/poster/official/do_not_question{ pixel_y = -32 }, @@ -28704,10 +29617,14 @@ }, /obj/effect/turf_decal/delivery/hollow, /obj/effect/turf_decal/delivery/hollow, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/gas/oxygen, -/obj/item/grenade/gas/oxygen, +/obj/item/clipboard{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/toy/figure/crew/atmos{ + pixel_x = -8; + pixel_y = 4 + }, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "cjI" = ( @@ -28815,10 +29732,13 @@ /area/station/engineering/control) "cjQ" = ( /obj/structure/rack, -/obj/item/crowbar, -/obj/item/stack/cable_coil/yellow, -/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/stack/cable_coil/yellow{ + pixel_y = 8 + }, /obj/effect/turf_decal/delivery/hollow, +/obj/item/tank/internals/emergency_oxygen/engi{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/engineering/control) "cjR" = ( @@ -28832,10 +29752,9 @@ /area/station/engineering/control) "cjS" = ( /obj/structure/rack, -/obj/item/clothing/gloves/color/black, /obj/item/wrench, -/obj/item/clothing/glasses/meson/engine, /obj/effect/turf_decal/delivery/hollow, +/obj/item/crowbar, /turf/simulated/floor/plasteel, /area/station/engineering/control) "cjT" = ( @@ -29014,7 +29933,9 @@ /area/station/command/teleporter) "ckA" = ( /obj/structure/table, -/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap{ + pixel_y = 8 + }, /obj/item/hand_labeler, /obj/structure/extinguisher_cabinet/directional/north, /turf/simulated/floor/plasteel, @@ -29030,8 +29951,14 @@ /area/station/command/teleporter) "ckC" = ( /obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/machinery/cell_charger{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/stock_parts/cell/high{ + pixel_x = 2; + pixel_y = 4 + }, /turf/simulated/floor/plasteel, /area/station/command/teleporter) "ckD" = ( @@ -29039,7 +29966,7 @@ /obj/machinery/door_control/shutter/north{ id = "teleaccessshutter"; name = "Teleporter Shutters Access Control"; - req_access_txt = "17" + req_access = list(17) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -29074,13 +30001,19 @@ "ckN" = ( /obj/structure/table/wood/fancy/black, /obj/machinery/button/windowtint{ - pixel_x = 5; - pixel_y = 8; + pixel_x = 16; + pixel_y = 2; id = "court"; range = 9 }, -/obj/item/taperecorder, -/obj/item/megaphone, +/obj/item/taperecorder{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/megaphone{ + pixel_x = -1; + pixel_y = 19 + }, /turf/simulated/floor/carpet/royalblack, /area/station/legal/courtroom) "ckP" = ( @@ -29096,6 +30029,7 @@ /obj/item/stack/cable_coil/random, /obj/item/assembly/igniter, /obj/effect/spawner/random_spawners/cobweb_right_rare, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "brown" @@ -29161,7 +30095,7 @@ /obj/machinery/door_control/shutter/east{ id = "Singularity"; name = "Containment Blast Doors"; - req_one_access_txt = "32" + req_access = list(32) }, /obj/structure/cable/yellow{ d1 = 1; @@ -29183,6 +30117,7 @@ /area/station/engineering/equipmentstorage) "clx" = ( /obj/machinery/light/small/directional/west, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -29193,6 +30128,7 @@ dir = 4 }, /obj/machinery/light/directional/west, +/obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purplecorner" @@ -29204,8 +30140,14 @@ /area/station/service/library) "clP" = ( /obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/toy/figure/crew/ian, +/obj/item/clipboard{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/toy/figure/crew/ian{ + pixel_x = -6; + pixel_y = 4 + }, /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/siding/wood/oak{ dir = 4 @@ -29249,6 +30191,13 @@ /obj/machinery/light/directional/east, /turf/simulated/floor/plating, /area/station/command/teleporter) +"cme" = ( +/obj/machinery/light_switch/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/station/science/research) "cmf" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/machinery/door/poddoor/preopen{ @@ -29383,9 +30332,16 @@ /area/station/engineering/control) "cmO" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/toy/figure/crew/engineer, +/obj/item/clipboard{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/toy/figure/crew/engineer{ + pixel_x = -6; + pixel_y = 4 + }, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "yellow" @@ -29394,10 +30350,15 @@ "cmP" = ( /obj/structure/table/reinforced, /obj/machinery/light/directional/west, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight, /obj/item/radio/intercom/directional/west, /obj/effect/turf_decal/delivery/hollow, +/obj/item/flashlight{ + pixel_y = 12 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/electrical{ + pixel_y = -10 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" @@ -29474,6 +30435,7 @@ pixel_y = 32 }, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "cmZ" = ( @@ -29487,7 +30449,6 @@ /area/station/engineering/equipmentstorage) "cnc" = ( /obj/machinery/shieldwallgen, -/obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plating, /area/station/engineering/equipmentstorage) "cnd" = ( @@ -29504,6 +30465,7 @@ "cnf" = ( /obj/machinery/atmospherics/portable/canister/oxygen, /obj/effect/turf_decal/delivery/hollow, +/obj/effect/decal/cleanable/cobweb2, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "cnl" = ( @@ -29512,6 +30474,10 @@ "cno" = ( /obj/item/radio/intercom/directional/west, /obj/structure/closet/secure_closet/hop, +/obj/item/clothing/under/towel/short/alt/blue, +/obj/item/clothing/head/towel/blue{ + pixel_y = 7 + }, /turf/simulated/floor/carpet, /area/station/command/office/hop) "cnp" = ( @@ -29805,7 +30771,7 @@ /obj/machinery/door_control/shutter/west{ id = "teleportershutter"; name = "Teleporter Shutters Access Control"; - req_access_txt = "17" + req_access = list(17) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -29911,7 +30877,7 @@ dir = 1; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "cpb" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -30070,7 +31036,7 @@ /turf/simulated/floor/wood/parquet/tile, /area/station/service/library) "cpJ" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "cpP" = ( @@ -30534,9 +31500,9 @@ }, /area/station/public/locker) "crK" = ( -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/carpet, -/area/station/service/bar/atrium) +/area/station/service/bar) "crO" = ( /obj/machinery/camera{ c_tag = "Central Ring Hallway Center"; @@ -30584,6 +31550,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, +/obj/machinery/light/directional/west, /turf/simulated/floor/plasteel/dark, /area/station/public/locker) "crX" = ( @@ -30709,14 +31676,17 @@ /area/space/nearstation) "css" = ( /obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/machinery/cell_charger{ + pixel_y = 2 + }, +/obj/item/stock_parts/cell/high{ + pixel_y = 2 + }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, /area/station/engineering/control) "cst" = ( /obj/machinery/atmospherics/portable/canister/toxins, -/obj/machinery/light/directional/west, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) @@ -30763,6 +31733,7 @@ }, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/alarm/directional/south, +/obj/item/tank/internals/emergency_oxygen/engi, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "csK" = ( @@ -30781,7 +31752,7 @@ /turf/simulated/floor/plating, /area/station/hallway/secondary/bridge) "csO" = ( -/obj/machinery/light/directional/west, +/obj/machinery/light/small/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutralcorner" @@ -30838,7 +31809,7 @@ }, /area/station/hallway/secondary/bridge) "csU" = ( -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, @@ -31122,7 +32093,7 @@ dir = 8 }, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "cuv" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -31131,6 +32102,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/machinery/light/small/directional/west, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, @@ -31177,7 +32149,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "cuz" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/table, @@ -31309,14 +32281,12 @@ /area/station/engineering/control) "cuT" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 6; - pixel_y = 3 +/obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light/small/directional/south, +/obj/item/airlock_electronics{ + pixel_y = 8 }, /obj/item/apc_electronics, -/obj/item/airlock_electronics, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "cuV" = ( @@ -31358,15 +32328,15 @@ "cvt" = ( /obj/structure/table/reinforced, /obj/machinery/firealarm/directional/west, -/obj/item/stack/sheet/plasteel{ - amount = 10 +/obj/item/stack/sheet/glass/fifty{ + pixel_x = -4; + pixel_y = 2 }, /obj/item/stack/sheet/rglass{ amount = 20; - pixel_x = 3; - pixel_y = -3 + pixel_x = 4; + pixel_y = 2 }, -/obj/item/crowbar, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "cvu" = ( @@ -31379,12 +32349,19 @@ "cvz" = ( /obj/item/flag/sec, /obj/machinery/light/small/directional/north, +/obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/security/range) "cvB" = ( /obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/machinery/cell_charger{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/stock_parts/cell/high{ + pixel_x = 2; + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "cvE" = ( @@ -31396,6 +32373,7 @@ "cvF" = ( /obj/machinery/power/apc/directional/south, /obj/structure/cable, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -31635,21 +32613,32 @@ dir = 1; layer = 2.9 }, -/obj/structure/rack, +/obj/machinery/door/window/classic/normal{ + dir = 4; + name = "Magboot Storage" + }, +/obj/effect/mapping_helpers/airlock/windoor/access/any/command/eva{ + dir = 4 + }, +/obj/structure/shelf/command, /obj/item/clothing/shoes/magboots{ - pixel_x = -4; - pixel_y = 3 + pixel_x = -6; + pixel_y = -4 }, -/obj/item/clothing/shoes/magboots, /obj/item/clothing/shoes/magboots{ - pixel_x = 4; - pixel_y = -3 + pixel_y = -4 }, -/obj/machinery/door/window/classic/normal{ - dir = 4; - name = "Magboot Storage" +/obj/item/clothing/shoes/magboots{ + pixel_y = -4; + pixel_x = 6 + }, +/obj/item/clothing/shoes/magboots{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/clothing/shoes/magboots{ + pixel_y = 6 }, -/obj/item/clothing/shoes/magboots, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "cwX" = ( @@ -31705,7 +32694,10 @@ "cxf" = ( /obj/structure/table/reinforced, /obj/item/food/mint, -/obj/item/reagent_containers/drinks/bottle/cream, +/obj/item/reagent_containers/drinks/bottle/cream{ + pixel_x = -2; + pixel_y = 18 + }, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, @@ -31830,7 +32822,9 @@ /area/station/engineering/control) "cxF" = ( /obj/structure/table/reinforced, -/obj/item/storage/fancy/donut_box, +/obj/item/storage/fancy/donut_box{ + pixel_y = 2 + }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, /area/station/engineering/control) @@ -31941,6 +32935,9 @@ name = "RCD Storage" }, /obj/machinery/light/directional/west, +/obj/effect/mapping_helpers/airlock/windoor/access/any/engineering/construction{ + dir = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "cyf" = ( @@ -32105,13 +33102,17 @@ dir = 1; icon_state = "greencorner" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "cyE" = ( /obj/structure/table/reinforced, /obj/item/storage/box/beakers{ - pixel_y = 4 + pixel_y = 2; + pixel_x = -4 + }, +/obj/item/storage/box/syringes{ + pixel_x = 14; + pixel_y = 6 }, -/obj/item/storage/box/syringes, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) "cyH" = ( @@ -32230,18 +33231,13 @@ d2 = 8; icon_state = "2-8" }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /obj/structure/disposalpipe/segment/corner{ dir = 2 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "cyX" = ( /obj/structure/window/reinforced{ dir = 4 @@ -32265,7 +33261,6 @@ /area/station/security/brig) "cyZ" = ( /obj/item/radio/intercom/directional/north, -/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "caution" @@ -32279,6 +33274,7 @@ network = list("Prison","SS13"); dir = 8 }, +/obj/machinery/light/directional/east, /turf/simulated/floor/grass, /area/station/security/permabrig) "cze" = ( @@ -32344,9 +33340,13 @@ /area/station/command/office/rd) "czr" = ( /obj/structure/table/reinforced, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, /obj/effect/turf_decal/delivery, +/obj/item/stack/packageWrap{ + pixel_y = 8 + }, +/obj/item/hand_labeler{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -32485,7 +33485,7 @@ }, /obj/machinery/firealarm/directional/south, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "czM" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -32590,13 +33590,21 @@ }, /area/station/public/sleep) "cAf" = ( -/obj/machinery/cryopod, -/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitegreencorner" + icon_state = "redfull" }, -/area/station/public/sleep) +/area/station/security/permabrig) "cAj" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -32666,7 +33674,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "cAv" = ( /obj/machinery/washing_machine, /obj/effect/turf_decal/delivery/hollow, @@ -32764,11 +33772,14 @@ "cAO" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/spray/cleaner{ - pixel_y = 12; + pixel_y = 10; pixel_x = -8 }, /obj/effect/turf_decal/delivery/hollow, -/obj/item/book/manual/wiki/security_space_law, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "red" @@ -32788,14 +33799,17 @@ /area/station/service/library) "cAV" = ( /obj/structure/table/wood, -/obj/item/storage/fancy/crayons{ - pixel_y = 6 +/obj/item/storage/fancy/candle_box/full{ + pixel_x = 14; + pixel_y = 4 }, -/obj/item/storage/fancy/candle_box/full, /obj/machinery/camera{ c_tag = "Library Aft"; dir = 1 }, +/obj/item/storage/fancy/crayons{ + pixel_y = 4 + }, /turf/simulated/floor/wood/parquet/tile, /area/station/service/library) "cAW" = ( @@ -32807,7 +33821,9 @@ /area/station/service/library) "cAX" = ( /obj/structure/table/wood, -/obj/item/newspaper, +/obj/item/newspaper{ + pixel_y = 4 + }, /obj/machinery/light/directional/south, /obj/effect/spawner/random_spawners/id_skins/no_chance, /turf/simulated/floor/wood/parquet/tile, @@ -32835,17 +33851,19 @@ /area/station/service/bar) "cBe" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = -2; +/obj/structure/extinguisher_cabinet/directional/west, +/obj/item/clipboard{ + pixel_x = -6; pixel_y = 2 }, -/obj/item/stack/sheet/metal/fifty{ - pixel_x = 2; - pixel_y = -2 +/obj/item/folder/yellow{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/multitool{ + pixel_x = 6; + pixel_y = 2 }, -/obj/item/wrench, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/structure/extinguisher_cabinet/directional/west, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "cBh" = ( @@ -32876,8 +33894,14 @@ /area/station/ai_monitored/storage/eva) "cBn" = ( /obj/structure/table/wood, -/obj/item/clipboard, -/obj/item/toy/figure/crew/dsquad, +/obj/item/clipboard{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/toy/figure/crew/dsquad{ + pixel_x = -4; + pixel_y = 3 + }, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -32898,12 +33922,10 @@ "cBq" = ( /obj/structure/table/wood, /obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_x = -3; - pixel_y = 3 + pixel_y = 12 }, /obj/item/clothing/mask/cigarette/cigar/cohiba{ - pixel_x = 3; - pixel_y = -3 + pixel_y = 4 }, /turf/simulated/floor/carpet, /area/station/public/vacant_office/secondary) @@ -33056,7 +34078,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "cBZ" = ( /obj/structure/weightmachine/weightlifter, /obj/effect/turf_decal/delivery/hollow, @@ -33214,8 +34236,12 @@ /area/station/ai_monitored/storage/eva) "cCK" = ( /obj/structure/table/reinforced, -/obj/item/storage/belt/utility, -/obj/item/radio/alternative, +/obj/item/storage/toolbox/electrical{ + pixel_y = 12 + }, +/obj/item/storage/belt/utility{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "cCL" = ( @@ -33258,22 +34284,25 @@ /area/station/public/vacant_office/secondary) "cCR" = ( /obj/item/kirbyplants, +/obj/machinery/light_switch/south, /turf/simulated/floor/carpet, /area/station/public/vacant_office/secondary) "cCS" = ( /obj/structure/table/wood, -/obj/item/paicard, +/obj/item/folder/red, /turf/simulated/floor/carpet, /area/station/public/vacant_office/secondary) "cCT" = ( /obj/structure/table/wood, /obj/item/radio/intercom/directional/east, -/obj/item/folder/red, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, +/obj/item/paicard{ + pixel_y = 10 + }, /turf/simulated/floor/carpet, /area/station/public/vacant_office/secondary) "cCV" = ( @@ -33399,8 +34428,12 @@ /area/station/public/fitness) "cDs" = ( /obj/structure/table/reinforced, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, +/obj/item/stack/packageWrap{ + pixel_y = 6 + }, +/obj/item/hand_labeler{ + pixel_y = -2 + }, /obj/machinery/newscaster/directional/east, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) @@ -33522,6 +34555,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel, /area/station/engineering/control) "cDO" = ( @@ -33559,6 +34593,7 @@ "cEe" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -33566,26 +34601,14 @@ /area/station/maintenance/disposal/east) "cEj" = ( /obj/structure/table/glass, -/obj/item/reagent_containers/dropper{ - pixel_y = -5 - }, -/obj/item/reagent_containers/dropper/precision{ - pixel_y = 3; - pixel_x = -12 - }, /obj/item/lighter/zippo{ name = "Ash Generator 3000"; pixel_x = 8; - pixel_y = 7 - }, -/obj/item/reagent_containers/dropper{ - pixel_y = -1 - }, -/obj/item/clothing/glasses/science{ - pixel_y = -10 + pixel_y = 6 }, -/obj/item/clothing/glasses/science{ - pixel_y = -16 +/obj/item/reagent_containers/applicator{ + pixel_y = 4; + pixel_x = -6 }, /turf/simulated/floor/plasteel{ dir = 5; @@ -33623,7 +34646,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/public/locker) "cEv" = ( -/obj/structure/rack, +/obj/effect/spawner/random/storage, /obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, @@ -33694,7 +34717,7 @@ /obj/machinery/door_control/shutter/east{ id = "eva-shutters"; name = "Auxilary E.V.A. Storage"; - req_one_access_txt = "18" + req_access = list(18) }, /obj/machinery/door/poddoor/shutters{ dir = 2; @@ -33756,7 +34779,7 @@ }, /area/station/hallway/primary/central) "cFe" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/disposalpipe/junction/reversed{ dir = 4 }, /turf/simulated/floor/plasteel{ @@ -33797,10 +34820,10 @@ /obj/structure/chair{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood/oak, /area/station/security/permabrig) "cFw" = ( @@ -34297,7 +35320,7 @@ dir = 1; icon_state = "chapel" }, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "cHY" = ( /obj/machinery/atmospherics/meter, /obj/machinery/atmospherics/pipe/manifold/visible{ @@ -34361,7 +35384,7 @@ }, /area/station/engineering/mechanic) "cIs" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -34396,7 +35419,7 @@ /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/pod_2) "cIv" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -34470,6 +35493,7 @@ network = list("Engineering","SS13") }, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "cIO" = ( @@ -34710,6 +35734,7 @@ /area/station/maintenance/electrical) "cJO" = ( /obj/machinery/light/small/directional/east, +/obj/effect/spawner/random/food_trash, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -34733,24 +35758,20 @@ }, /area/station/maintenance/electrical) "cJS" = ( -/obj/structure/rack, +/obj/structure/shelf/engineering, /obj/effect/turf_decal/delivery/hollow, -/obj/item/stack/sheet/metal{ - pixel_x = 3; - amount = 20; - pixel_y = 3 - }, -/obj/item/stack/sheet/metal, -/obj/item/stack/sheet/metal{ - pixel_x = -3; - amount = 20; - pixel_y = -3 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/very_robust{ pixel_y = 32 }, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/stack/sheet/metal/ten{ + pixel_y = -4 + }, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical) "cJT" = ( @@ -34822,7 +35843,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "cKe" = ( @@ -34956,16 +35977,20 @@ }, /obj/item/paper_bin{ pixel_x = -6; - pixel_y = 6 + pixel_y = 4 }, /obj/item/pen{ pixel_x = -5; - pixel_y = 7 + pixel_y = 4 }, /obj/item/clipboard{ - pixel_y = 6; + pixel_y = 4; pixel_x = 6 }, +/obj/item/clothing/glasses/science{ + pixel_x = -2; + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whitepurple" @@ -35221,7 +36246,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "cLt" = ( /obj/structure/closet/wardrobe/white, /obj/effect/decal/cleanable/dirt, @@ -35266,6 +36291,7 @@ /obj/structure/table, /obj/structure/bedsheetbin, /obj/machinery/light/directional/north, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel{ icon_state = "barber" }, @@ -35357,12 +36383,11 @@ /area/station/science/xenobiology) "cLT" = ( /obj/machinery/firealarm/directional/north, -/obj/item/kirbyplants, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "cLZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -35465,7 +36490,8 @@ "cMv" = ( /obj/structure/table/glass, /obj/machinery/reagentgrinder{ - pixel_y = 10 + pixel_y = 10; + pixel_x = 6 }, /turf/simulated/floor/plasteel{ icon_state = "whiteyellowfull" @@ -35496,7 +36522,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "cMO" = ( /obj/structure/chair/stool{ dir = 4 @@ -35520,7 +36546,7 @@ /turf/simulated/floor/plasteel/freezer, /area/station/public/pool) "cMS" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/port) "cMU" = ( @@ -35714,7 +36740,7 @@ /area/station/science/research) "cNH" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/port) "cNJ" = ( @@ -35732,6 +36758,7 @@ /area/station/science/robotics) "cNT" = ( /obj/item/kirbyplants, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whiteblue" @@ -35805,7 +36832,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "cOv" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/bathroom{ @@ -36002,8 +37029,9 @@ /obj/item/folder/white, /obj/item/pen, /obj/item/clothing/gloves/color/latex, -/obj/item/slime_scanner, -/obj/item/reagent_containers/dropper, +/obj/item/slime_scanner{ + pixel_y = 6 + }, /obj/effect/turf_decal/delivery/hollow, /obj/structure/sign/poster/official/random/north, /obj/machinery/light/directional/east, @@ -36063,11 +37091,11 @@ pixel_y = 14; pixel_x = -5 }, -/obj/item/ashtray/bronze, -/obj/item/clothing/mask/cigarette/cigar, -/obj/item/lighter/zippo/hos{ - pixel_x = 6 +/obj/item/ashtray/bronze{ + pixel_x = 4; + pixel_y = 2 }, +/obj/item/clothing/mask/cigarette/cigar, /turf/simulated/floor/carpet/red, /area/station/command/office/hos) "cPb" = ( @@ -36345,6 +37373,7 @@ /area/station/science/research) "cQD" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/food_trash, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "neutral" @@ -36506,7 +37535,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "cRd" = ( /obj/item/kirbyplants, /obj/effect/turf_decal/stripes/corner{ @@ -36675,7 +37704,7 @@ /obj/machinery/door_control/shutter{ id = "xeno6"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -36738,14 +37767,12 @@ /turf/simulated/floor/plasteel/dark, /area/station/security/execution) "cRW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/firealarm/directional/east, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "red" +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/area/station/security/permabrig) +/obj/item/kirbyplants, +/turf/simulated/floor/plasteel, +/area/station/engineering/hallway) "cRY" = ( /obj/structure/cable{ d2 = 4; @@ -36830,14 +37857,25 @@ /area/station/maintenance/port2) "cSm" = ( /obj/structure/table, -/obj/item/airlock_electronics, -/obj/item/assembly/signaler, /obj/machinery/firealarm/directional/south, -/obj/item/assembly/infra, -/obj/item/assembly/igniter, -/obj/item/stack/cable_coil/random, -/obj/item/clothing/gloves/color/latex, /obj/item/radio/intercom/directional/west, +/obj/item/assembly/igniter{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/assembly/signaler{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/assembly/infra{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/airlock_electronics{ + pixel_x = 4 + }, +/obj/item/clothing/gloves/color/latex, +/obj/item/stack/cable_coil/random, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitepurple" @@ -36898,16 +37936,22 @@ /area/station/science/research) "cSu" = ( /obj/effect/firefly/blue, +/obj/machinery/light/directional/north, /turf/simulated/floor/grass, /area/station/science/lobby) "cSv" = ( /obj/structure/table, -/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = 4; + pixel_y = 2 + }, /obj/item/stack/sheet/glass/fifty{ - pixel_x = -5; - pixel_y = 5 + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/stack/packageWrap{ + pixel_y = 2 }, -/obj/item/stack/packageWrap, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whitepurple" @@ -36924,34 +37968,28 @@ }, /area/station/medical/reception) "cSy" = ( -/obj/structure/table, -/obj/item/storage/box/masks{ - layer = 3.6; - pixel_x = -4; - pixel_y = -10 - }, -/obj/item/storage/box/masks{ - layer = 3.6; - pixel_x = 8; - pixel_y = -10 +/obj/structure/shelf/medbay, +/obj/item/storage/box/autoinjectors{ + pixel_x = -8; + pixel_y = -6 }, -/obj/item/storage/box/bodybags{ - layer = 3.5; - pixel_x = -4 +/obj/item/storage/box/syringes{ + pixel_y = -6 }, -/obj/item/storage/box/bodybags{ - layer = 3.5; +/obj/item/storage/box/beakers{ + pixel_y = -6; pixel_x = 8 }, -/obj/item/storage/box/beakers{ - layer = 3.4; - pixel_x = -4; - pixel_y = 10 +/obj/item/storage/box/autoinjectors{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/storage/box/syringes{ + pixel_y = 8 }, /obj/item/storage/box/beakers{ - layer = 3.4; - pixel_x = 8; - pixel_y = 10 + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -36983,7 +38021,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "cSF" = ( /turf/simulated/floor/plasteel{ icon_state = "whitebluecorner" @@ -37275,7 +38313,7 @@ autolink_id = "xeno_btn_int"; name = "Xenobiology Access Button"; pixel_y = 24; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" @@ -37353,7 +38391,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "cUb" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance, @@ -37410,7 +38448,7 @@ /turf/simulated/floor/plasteel{ icon_state = "escape" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "cUH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -37522,7 +38560,7 @@ /obj/machinery/door_control/shutter{ id = "xeno4"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -37533,7 +38571,7 @@ /turf/simulated/floor/plasteel{ icon_state = "escape" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "cVd" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/delivery/hollow, @@ -37686,9 +38724,18 @@ /area/station/science/rnd) "cVz" = ( /obj/structure/table, -/obj/item/clipboard, -/obj/item/folder, -/obj/item/toy/figure/crew/roboticist, +/obj/item/clipboard{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/folder{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/toy/figure/crew/roboticist{ + pixel_x = 6; + pixel_y = 5 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -37859,6 +38906,8 @@ "cWl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/engineering/toolbox, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "neutral" @@ -37999,6 +39048,10 @@ pixel_y = -3 }, /obj/effect/turf_decal/stripes/corner, +/obj/item/tape/random{ + pixel_x = -12; + pixel_y = -2 + }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -38020,7 +39073,7 @@ /obj/machinery/door_control/shutter{ id = "xeno3"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/white, @@ -38034,7 +39087,7 @@ /obj/machinery/door_control/shutter{ id = "xeno1"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/white, @@ -38070,35 +39123,41 @@ /area/station/science/research) "cWL" = ( /obj/structure/table/glass, -/obj/item/paicard, +/obj/item/paicard{ + pixel_x = 6; + pixel_y = 2 + }, /obj/item/flash{ - pixel_x = -5 + pixel_x = -6; + pixel_y = 12 + }, +/obj/item/stock_parts/cell/high{ + pixel_x = -6 }, -/obj/item/gps, -/obj/item/stock_parts/cell/high, /obj/machinery/alarm/directional/south, +/obj/machinery/light/small/directional/south, +/obj/item/gps{ + pixel_x = 6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, /area/station/science/lobby) "cWM" = ( /obj/structure/table, -/obj/item/stock_parts/matter_bin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stock_parts/micro_laser, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/scanning_module, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, /obj/machinery/light/directional/west, /obj/machinery/computer/guestpass{ pixel_x = -28 }, +/obj/item/weldingtool/research{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/stack/cable_coil/random{ + pixel_y = 4 + }, +/obj/item/stack/cable_coil/random, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -38232,7 +39291,7 @@ }, /area/station/hallway/primary/aft) "cXf" = ( -/obj/machinery/economy/vending/coffee, +/obj/machinery/recharge_station, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue" @@ -38310,6 +39369,7 @@ /obj/structure/table, /obj/structure/bedsheetbin, /obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ icon_state = "cmo" }, @@ -38334,7 +39394,7 @@ /turf/simulated/floor/plating, /area/station/security/podpilot) "cXT" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/electrical) "cXU" = ( @@ -38368,7 +39428,7 @@ "cXY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -38388,7 +39448,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "cYe" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/metal, @@ -38459,13 +39519,30 @@ id = "researchdesk2"; name = "Secondary Research Shutters" }, -/obj/structure/rack, +/obj/structure/shelf/science, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = -4 + }, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = 8; + pixel_y = -4 + }, /obj/item/stack/sheet/metal{ amount = 20; - pixel_x = 4 + pixel_x = -8; + pixel_y = 4 }, -/obj/item/stack/sheet/glass{ - amount = 20 +/obj/item/stock_parts/cell/high{ + pixel_y = 4 + }, +/obj/item/hand_labeler{ + pixel_x = 8; + pixel_y = 4 }, /turf/simulated/floor/plasteel/dark, /area/station/science/rnd) @@ -38475,7 +39552,8 @@ }, /area/station/hallway/primary/aft) "cYD" = ( -/obj/machinery/recharge_station, +/obj/machinery/firealarm/directional/west, +/obj/machinery/economy/vending/coffee, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whiteblue" @@ -38557,7 +39635,7 @@ /obj/machinery/door_control/shutter{ id = "xeno2"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -38658,6 +39736,7 @@ network = list("Medical","SS13") }, /obj/structure/closet/emcloset, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel, /area/station/medical/virology/lab) "cZR" = ( @@ -38794,8 +39873,20 @@ }, /area/station/science/research) "dav" = ( -/obj/structure/filingcabinet/chestdrawer, +/obj/structure/table/reinforced, /obj/machinery/newscaster/directional/north, +/obj/item/paper_bin{ + pixel_y = 4; + pixel_x = 6 + }, +/obj/item/pen/multi{ + pixel_y = 6; + pixel_x = 6 + }, +/obj/item/clipboard{ + pixel_x = -6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "black" @@ -39161,7 +40252,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dcm" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -39293,7 +40384,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dcT" = ( /obj/structure/chair/wood, /turf/simulated/floor/wood/oak, @@ -39382,19 +40473,24 @@ /turf/simulated/wall/r_wall, /area/station/science/explab) "ddj" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, /obj/machinery/light/directional/south, /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/item/stock_parts/cell/high{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, /obj/machinery/light_switch/west, /obj/effect/decal/cleanable/dirt, +/obj/structure/shelf/science, +/obj/item/stock_parts/manipulator{ + pixel_x = 7; + pixel_y = -4 + }, +/obj/item/stock_parts/micro_laser{ + pixel_y = -4 + }, +/obj/item/stock_parts/manipulator{ + pixel_x = -8; + pixel_y = -4 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/rnd) "ddk" = ( @@ -39448,7 +40544,7 @@ /obj/machinery/access_button/south{ autolink_id = "virolab_btn_int"; name = "Virology Lab Access Button"; - req_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -39498,17 +40594,35 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "ddD" = ( -/obj/structure/table/reinforced, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, -/obj/item/weldingtool/research, /obj/effect/turf_decal/stripes/line{ dir = 5 }, /obj/machinery/power/apc/directional/south, /obj/structure/cable, -/obj/item/clothing/head/welding, /obj/effect/decal/cleanable/dirt, +/obj/structure/shelf/science, +/obj/item/stock_parts/matter_bin{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/stock_parts/scanning_module{ + pixel_y = -4 + }, +/obj/item/stock_parts/capacitor{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/stock_parts/matter_bin{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/stock_parts/scanning_module{ + pixel_y = 8 + }, +/obj/item/stock_parts/capacitor{ + pixel_y = 8; + pixel_x = 8 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/rnd) "ddE" = ( @@ -39535,8 +40649,10 @@ /area/station/science/rnd) "ddH" = ( /obj/structure/table, +/obj/item/storage/belt/utility/full{ + pixel_y = 6 + }, /obj/item/storage/toolbox/mechanical, -/obj/item/storage/belt/utility/full, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -39602,6 +40718,7 @@ }, /area/station/medical/storage) "dea" = ( +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -39728,6 +40845,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "chapel" @@ -39746,19 +40864,11 @@ /turf/simulated/wall/r_wall, /area/station/command/office/rd) "dfm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light/directional/east, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitepurple" - }, -/area/station/science/research) +/obj/structure/flora/rock/jungle, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/north, +/turf/simulated/floor/grass, +/area/station/security/permabrig) "dfo" = ( /turf/simulated/wall/r_wall, /area/station/science/robotics/chargebay) @@ -39900,13 +41010,10 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "dfU" = ( -/obj/effect/spawner/window/reinforced/grilled, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/plating, -/area/station/security/permabrig) +/obj/item/kirbyplants, +/obj/machinery/firealarm/directional/south, +/turf/simulated/floor/plasteel/dark, +/area/station/command/office/ce) "dfV" = ( /obj/structure/chair/office/light{ dir = 8 @@ -39918,6 +41025,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "darkpurplefull" }, @@ -39952,7 +41060,6 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, @@ -40058,36 +41165,30 @@ }, /area/station/maintenance/apmaint) "dgS" = ( -/obj/structure/table, -/obj/item/storage/box/iv_bags{ - layer = 3.3; - pixel_x = -4; - pixel_y = -10 - }, +/obj/structure/shelf/medbay, +/obj/machinery/newscaster/directional/north, /obj/item/storage/box/iv_bags{ - layer = 3.3; - pixel_x = 8; - pixel_y = -10 + pixel_y = -6; + pixel_x = -8 }, /obj/item/storage/box/patch_packs{ - layer = 3.2; - pixel_x = -4 + pixel_y = -6 }, -/obj/item/storage/box/patch_packs{ - layer = 3.2; +/obj/item/storage/box/pillbottles{ + pixel_y = -6; pixel_x = 8 }, -/obj/item/storage/box/pillbottles{ - layer = 3.1; - pixel_x = -4; - pixel_y = 10 +/obj/item/storage/box/iv_bags{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/box/patch_packs{ + pixel_y = 8 }, /obj/item/storage/box/pillbottles{ - layer = 3.1; - pixel_x = 8; - pixel_y = 10 + pixel_y = 8; + pixel_x = 8 }, -/obj/machinery/newscaster/directional/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whiteblue" @@ -40279,7 +41380,7 @@ /obj/machinery/access_button/west{ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; - req_one_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" @@ -40303,6 +41404,7 @@ /area/station/command/office/rd) "dif" = ( /obj/structure/closet/secure_closet/RD, +/obj/machinery/light_switch/north, /turf/simulated/floor/carpet/purple, /area/station/command/office/rd) "dih" = ( @@ -40351,22 +41453,14 @@ /area/station/maintenance/port2) "dip" = ( /obj/structure/table/reinforced, -/obj/item/lighter/zippo{ - name = "Ash Generator 3000"; - pixel_x = -8; - pixel_y = 7 +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -6; + pixel_y = 2 }, -/obj/item/lighter/zippo{ - name = "Ash Generator 3000"; - pixel_x = 8; - pixel_y = 7 +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 6; + pixel_y = 2 }, -/obj/item/storage/box/syringes, -/obj/item/storage/box/syringes, -/obj/item/reagent_containers/dropper/precision, -/obj/item/reagent_containers/dropper/precision, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/dropper, /turf/simulated/floor/engine, /area/station/science/misc_lab) "diq" = ( @@ -40478,17 +41572,17 @@ }, /area/station/maintenance/apmaint) "diG" = ( -/obj/structure/table, +/obj/structure/gunrack, /obj/item/gun/syringe{ - pixel_y = 9 + pixel_y = 8 }, /obj/item/gun/syringe{ - pixel_y = 6 + pixel_y = 4 }, +/obj/item/gun/syringe, /obj/item/gun/syringe{ - pixel_y = 3 + pixel_y = -4 }, -/obj/item/gun/syringe, /obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ dir = 10; @@ -40510,7 +41604,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -40528,7 +41622,7 @@ }, /obj/machinery/door_control/shutter/north{ id = "secpilot"; - req_one_access_txt = "63"; + req_access = list(63); name = "\improper SecPilot pod door" }, /turf/simulated/floor/plasteel/dark, @@ -40666,7 +41760,7 @@ /obj/machinery/newscaster/directional/north, /obj/machinery/button/windowtint/east{ id = "rdroom"; - req_one_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/carpet/purple, /area/station/command/office/rd) @@ -40817,7 +41911,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "dkk" = ( /obj/machinery/computer/operating{ dir = 1 @@ -40842,7 +41936,7 @@ /turf/simulated/floor/carpet/black, /area/station/service/chapel/study) "dkp" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/port2) "dkq" = ( @@ -40941,7 +42035,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "dkC" = ( @@ -41063,17 +42157,31 @@ }, /area/station/medical/paramedic) "dlg" = ( -/obj/structure/table/glass, +/obj/machinery/light_switch/south, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/shelf/medbay, +/obj/item/storage/box/beakers{ + pixel_y = -6; + pixel_x = -8 + }, +/obj/item/storage/box/iv_bags{ + pixel_y = -6 + }, /obj/item/storage/box/syringes{ - pixel_x = 4; - pixel_y = 4 + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/storage/box/beakers{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/box/iv_bags{ + pixel_y = 8 }, /obj/item/storage/box/syringes{ - pixel_x = -4; - pixel_y = 2 + pixel_y = 8; + pixel_x = 8 }, -/obj/machinery/light_switch/south, -/obj/structure/extinguisher_cabinet/directional/east, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whiteyellow" @@ -41175,7 +42283,9 @@ /obj/item/storage/toolbox/electrical{ pixel_y = 7 }, -/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics/chargebay) "dmh" = ( @@ -41219,7 +42329,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "dmq" = ( /turf/simulated/wall/r_wall, /area/station/maintenance/port) @@ -41429,6 +42539,29 @@ /area/station/security/processing) "dnp" = ( /obj/machinery/ai_status_display/north, +/obj/structure/shelf/science, +/obj/item/storage/box/beakers{ + pixel_y = -6; + pixel_x = -8 + }, +/obj/item/storage/box/pillbottles{ + pixel_y = -6 + }, +/obj/item/storage/box/syringes{ + pixel_x = 8; + pixel_y = -6 + }, +/obj/item/storage/box/beakers{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/box/gloves{ + pixel_y = 8 + }, +/obj/item/storage/box/syringes{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/engine, /area/station/science/misc_lab) "dnq" = ( @@ -41440,6 +42573,7 @@ c_tag = "Research Test Lab"; network = list("Research","SS13") }, +/obj/structure/sign/poster/official/random/north, /turf/simulated/floor/engine, /area/station/science/misc_lab) "dnx" = ( @@ -41482,7 +42616,7 @@ /obj/machinery/door_control/shutter/north{ id = "roboticsshutters"; name = "Mech Bay Door Control"; - req_access_txt = "47" + req_access = list(47) }, /obj/effect/turf_decal/delivery, /obj/machinery/door/firedoor, @@ -41646,6 +42780,29 @@ /obj/structure/disaster_counter/scichem{ pixel_y = 32 }, +/obj/structure/shelf/science, +/obj/item/storage/box/beakers{ + pixel_y = -6; + pixel_x = -8 + }, +/obj/item/storage/box/pillbottles{ + pixel_y = -6 + }, +/obj/item/storage/box/syringes{ + pixel_x = 8; + pixel_y = -6 + }, +/obj/item/storage/box/beakers{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/box/monkeycubes{ + pixel_y = 8 + }, +/obj/item/storage/box/syringes{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/engine, /area/station/science/misc_lab) "doK" = ( @@ -41654,24 +42811,18 @@ /area/station/service/cafeteria) "doL" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/mineral/plasma{ - layer = 2.9 - }, -/obj/item/stack/sheet/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 +/obj/item/clothing/ears/earmuffs{ + pixel_x = -6; + pixel_y = 12 }, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/pillbottles, -/obj/item/storage/box/gloves{ - layer = 3.7; - pixel_x = -4; +/obj/item/clothing/ears/earmuffs{ + pixel_x = -6; pixel_y = 8 }, +/obj/item/stack/sheet/mineral/plasma{ + layer = 2.9; + pixel_y = -2 + }, /turf/simulated/floor/engine, /area/station/science/misc_lab) "doM" = ( @@ -41807,12 +42958,28 @@ }, /area/station/medical/paramedic) "dpi" = ( -/obj/structure/table/glass, -/obj/item/paper_bin{ - pixel_y = 4 +/obj/structure/shelf/medbay, +/obj/item/storage/box/gloves{ + pixel_x = -8; + pixel_y = -6 }, -/obj/item/pen{ - pixel_y = 6 +/obj/item/storage/box/masks{ + pixel_y = -6 + }, +/obj/item/storage/box/beakers{ + pixel_x = 8; + pixel_y = -6 + }, +/obj/item/clothing/glasses/science{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/clothing/glasses/science{ + pixel_y = 8 + }, +/obj/item/clothing/glasses/science{ + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -41955,22 +43122,35 @@ "dqf" = ( /obj/machinery/chem_dispenser, /obj/structure/reagent_dispensers/fueltank/chem/east, -/obj/item/reagent_containers/glass/beaker/large, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/engine, /area/station/science/misc_lab) "dqj" = ( -/obj/structure/rack, -/obj/item/stack/cable_coil/random, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/belt/utility/full, -/obj/item/clothing/glasses/hud/diagnostic{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/item/clothing/head/welding/flamedecal, /obj/effect/turf_decal/delivery/hollow, /obj/effect/decal/cleanable/dirt, +/obj/structure/shelf/science, +/obj/item/circuitboard/mecha/ripley/peripherals{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/mmi/robotic_brain{ + pixel_y = -4 + }, +/obj/item/borg/upgrade/rename{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/mecha_parts/core{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/multitool{ + pixel_y = 6 + }, +/obj/item/mod/core/standard{ + pixel_x = 6; + pixel_y = 6 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "dqk" = ( @@ -42001,18 +43181,16 @@ "dqo" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/delivery/hollow, -/obj/item/borg/upgrade/rename, -/obj/item/paicard, -/obj/item/storage/firstaid, -/obj/item/storage/firstaid, -/obj/item/mecha_parts/core, -/obj/item/flash, -/obj/item/flash, -/obj/item/mmi/robotic_brain, /obj/effect/turf_decal/stripes/line{ dir = 4 }, /obj/item/radio/intercom/directional/north, +/obj/item/storage/toolbox/electrical{ + pixel_y = 12 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "dqp" = ( @@ -42132,6 +43310,7 @@ id = "Virology1"; name = "Virology Window Shutters Control" }, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkgreencorners" @@ -42340,21 +43519,35 @@ /turf/simulated/floor/engine, /area/station/science/misc_lab) "drE" = ( -/obj/effect/turf_decal/delivery/hollow, -/obj/machinery/mecha_part_fabricator/station, -/turf/simulated/floor/plasteel/dark, -/area/station/science/robotics) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/storage, +/turf/simulated/floor/plating, +/area/station/maintenance/starboard) "drF" = ( -/obj/structure/rack, -/obj/item/stack/cable_coil/random, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/belt/utility/full, -/obj/item/clothing/glasses/hud/diagnostic{ +/obj/effect/turf_decal/delivery/hollow, +/obj/structure/shelf/science, +/obj/item/flash{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/flash{ pixel_x = 2; - pixel_y = 5 + pixel_y = 10 + }, +/obj/item/flash{ + pixel_x = 10; + pixel_y = 10 + }, +/obj/item/flash{ + pixel_x = -6 + }, +/obj/item/flash{ + pixel_x = 2 + }, +/obj/item/flash{ + pixel_x = 10 }, -/obj/item/clothing/head/welding/flamedecal/blue, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "drI" = ( @@ -42439,7 +43632,7 @@ /turf/simulated/floor/plasteel/stairs{ dir = 4 }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "drV" = ( /obj/structure/cable{ d1 = 4; @@ -42479,7 +43672,7 @@ icon_state = "1-8" }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "dsa" = ( /obj/structure/chair/sofa/left{ dir = 1 @@ -42508,7 +43701,7 @@ }, /area/station/medical/virology/lab) "dsc" = ( -/obj/machinery/alarm/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkred" @@ -42621,10 +43814,10 @@ /area/station/science/misc_lab) "dsG" = ( /obj/structure/sink/directional/west, -/obj/structure/sign/poster/official/random/east, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitepurple" @@ -42709,15 +43902,15 @@ /area/station/medical/cloning) "dsV" = ( /obj/structure/table, -/obj/item/storage/box/iv_bags{ - pixel_x = 4; - pixel_y = 4 +/obj/machinery/requests_console/directional/south, +/obj/item/storage/bag/chemistry{ + pixel_y = 10; + pixel_x = 4 }, -/obj/item/storage/box/iv_bags{ - pixel_x = -4; - pixel_y = 2 +/obj/item/storage/bag/chemistry{ + pixel_y = 4; + pixel_x = -4 }, -/obj/machinery/requests_console/directional/south, /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" }, @@ -42805,7 +43998,7 @@ dir = 1; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "dtm" = ( /obj/effect/spawner/window/reinforced/polarized/grilled{ id = "Cloning Room" @@ -43072,16 +44265,15 @@ dir = 1 }, /obj/item/storage/firstaid/machine{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 11; - pixel_y = -2 + pixel_x = 6; + pixel_y = 4 }, /obj/item/storage/firstaid/machine{ - pixel_x = -2; - pixel_y = -2 + pixel_x = 6 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -10; + pixel_y = 2 }, /turf/simulated/floor/plasteel{ dir = 5; @@ -43101,8 +44293,14 @@ /area/station/medical/morgue) "dus" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_x = -6; + pixel_y = 3 + }, /obj/machinery/newscaster/security_unit/south, /obj/machinery/light/directional/south, /obj/structure/cable{ @@ -43124,7 +44322,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "duB" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -43133,36 +44331,20 @@ /area/station/medical/surgery/secondary) "duC" = ( /obj/machinery/light/directional/east, -/obj/item/stack/cable_coil/random{ - pixel_x = 2 - }, /obj/structure/table, -/obj/item/stock_parts/manipulator{ - pixel_x = 5 - }, -/obj/item/stock_parts/matter_bin{ - pixel_x = -2; - pixel_y = 12 - }, -/obj/item/stack/cable_coil/random, -/obj/item/stock_parts/matter_bin{ - pixel_x = -9; - pixel_y = 12 - }, -/obj/item/stock_parts/matter_bin{ - pixel_x = -7; - pixel_y = 8 - }, /obj/effect/turf_decal/delivery/hollow, -/obj/machinery/economy/vending/wallmed/directional/east, +/obj/machinery/light_switch/east, +/obj/item/lightreplacer{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "duD" = ( /obj/item/flag/nt, -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkred" @@ -43375,6 +44557,7 @@ "dvo" = ( /obj/machinery/r_n_d/circuit_imprinter, /obj/effect/turf_decal/delivery/hollow, +/obj/item/reagent_containers/glass/beaker/large, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "dvp" = ( @@ -43397,6 +44580,29 @@ /area/station/science/toxins/mixing) "dvr" = ( /obj/effect/turf_decal/stripes/line, +/obj/structure/shelf/science, +/obj/item/storage/belt/utility/full{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/clothing/glasses/hud/diagnostic{ + pixel_y = -6 + }, +/obj/item/clothing/head/welding/flamedecal{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/storage/belt/utility/full{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/clothing/glasses/hud/diagnostic{ + pixel_y = 6 + }, +/obj/item/clothing/head/welding/flamedecal/blue{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "dvz" = ( @@ -43519,6 +44725,15 @@ d2 = 2; icon_state = "0-2" }, +/obj/structure/rack, +/obj/item/book/manual/wiki/robotics_cyborgs{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/book/manual/ripley_build_and_repair{ + pixel_x = 6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "dwq" = ( @@ -43546,8 +44761,6 @@ dir = 1 }, /obj/effect/turf_decal/delivery/hollow, -/obj/item/book/manual/ripley_build_and_repair, -/obj/item/book/manual/wiki/robotics_cyborgs, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "dwt" = ( @@ -43599,7 +44812,7 @@ /area/station/hallway/primary/aft) "dwU" = ( /turf/simulated/floor/plasteel/dark, -/area/station/service/theatre) +/area/station/service/bar/atrium) "dwX" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1; @@ -43630,15 +44843,15 @@ /area/station/maintenance/medmaint) "dxm" = ( /obj/structure/table/reinforced, -/obj/item/airalarm_electronics, +/obj/effect/decal/cleanable/dirt, /obj/item/firealarm_electronics{ - pixel_x = 4; + pixel_y = 8 + }, +/obj/item/airalarm_electronics, +/obj/item/stack/cable_coil/random{ + pixel_x = -14; pixel_y = 4 }, -/obj/item/stack/cable_coil/random, -/obj/item/stock_parts/cell/high, -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/bot/floorbot, /turf/simulated/floor/plating, /area/station/engineering/equipmentstorage) "dxs" = ( @@ -43734,7 +44947,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -43787,7 +45000,6 @@ /obj/item/storage/surgical_tray{ pixel_y = 4 }, -/obj/item/robotanalyzer, /obj/structure/window/reinforced{ dir = 1 }, @@ -43911,23 +45123,31 @@ /area/station/science/xenobiology) "dzR" = ( /obj/structure/window/reinforced, -/obj/structure/rack, +/obj/machinery/door/window/classic/normal{ + dir = 4; + name = "Jetpack Storage" + }, +/obj/effect/mapping_helpers/airlock/windoor/access/any/command/eva{ + dir = 4 + }, +/obj/structure/shelf/command, /obj/item/tank/jetpack/carbondioxide{ - pixel_x = -4; - pixel_y = 3 + pixel_x = -8; + pixel_y = -4 }, -/obj/item/tank/jetpack/carbondioxide, /obj/item/tank/jetpack/carbondioxide{ - pixel_x = 4; - pixel_y = -3 + pixel_y = -4 }, -/obj/machinery/door/window/classic/normal{ - dir = 4; - name = "Jetpack Storage" +/obj/item/tank/jetpack/carbondioxide{ + pixel_y = -4; + pixel_x = 8 }, /obj/item/tank/jetpack/carbondioxide{ - pixel_x = -4; - pixel_y = 3 + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/tank/jetpack/carbondioxide{ + pixel_y = 8 }, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) @@ -43937,6 +45157,7 @@ color = "#A30FAF" }, /obj/effect/landmark/start/scientist, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whitepurple" @@ -43994,9 +45215,6 @@ /obj/structure/closet/secure_closet/roboticist, /obj/machinery/light/directional/south, /obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced{ - dir = 8 - }, /turf/simulated/floor/plasteel{ icon_state = "black"; dir = 10 @@ -44137,25 +45355,32 @@ /turf/simulated/wall/r_wall, /area/station/science/rnd) "dBd" = ( -/obj/structure/rack, +/obj/structure/shelf/science, +/obj/machinery/requests_console/directional/south, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /obj/item/assembly/timer{ - pixel_x = 5; - pixel_y = 4 + pixel_y = 8; + pixel_x = -6 }, /obj/item/assembly/timer{ - pixel_x = 3; - pixel_y = 2 + pixel_y = 8 }, /obj/item/assembly/timer{ - pixel_x = 1 + pixel_y = 8; + pixel_x = 6 }, /obj/item/assembly/timer{ - pixel_x = -1; - pixel_y = -2 + pixel_y = -6; + pixel_x = -6 }, -/obj/machinery/requests_console/directional/south, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/obj/item/assembly/timer{ + pixel_y = -6 + }, +/obj/item/assembly/timer{ + pixel_y = -6; + pixel_x = 6 }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" @@ -44213,8 +45438,12 @@ /turf/simulated/floor/plating, /area/station/maintenance/medmaint) "dBq" = ( -/turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/obj/machinery/light_switch/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/station/security/permabrig) "dBB" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -44354,6 +45583,7 @@ id = "Virology1"; name = "Virology Window Shutters Control" }, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkgreencorners" @@ -44361,6 +45591,7 @@ /area/station/medical/virology/lab) "dCj" = ( /obj/structure/chair/sofa/left, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitegreen" @@ -44516,22 +45747,28 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/aft) "dCZ" = ( -/obj/structure/table/reinforced, +/obj/structure/shelf/science, /obj/item/mmi{ - pixel_y = 10 + pixel_x = -6; + pixel_y = -4 }, /obj/item/mmi{ - pixel_y = 6 + pixel_y = -4 }, /obj/item/mmi{ - pixel_y = 2 + pixel_y = -4; + pixel_x = 6 + }, +/obj/item/stack/medical/bruise_pack/advanced{ + pixel_x = -8; + pixel_y = 10 }, /obj/item/mmi{ - pixel_y = -2 + pixel_y = 8 }, /obj/item/stack/medical/bruise_pack/advanced{ - pixel_x = -4; - pixel_y = 4 + pixel_x = 8; + pixel_y = 10 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -44700,7 +45937,7 @@ "dDJ" = ( /obj/item/kirbyplants, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "dDN" = ( /turf/simulated/floor/plasteel/grimy, /area/station/security/detective) @@ -44787,7 +46024,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "dEr" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -44805,7 +46042,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "dEs" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -44943,6 +46180,11 @@ }, /area/station/command/bridge/checkpoint/south) "dEX" = ( +/obj/structure/rack, +/obj/item/robotanalyzer{ + pixel_y = 6 + }, +/obj/item/robotanalyzer, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -44961,7 +46203,7 @@ dir = 1; icon_state = "escape" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dFa" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/cable{ @@ -44987,10 +46229,11 @@ pixel_x = 5; pixel_y = 6 }, -/obj/machinery/alarm/directional/north, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light_switch/north, +/obj/machinery/alarm/directional/east, /turf/simulated/floor/plasteel, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dFc" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -45001,7 +46244,7 @@ }, /area/station/medical/medbay) "dFe" = ( -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/east, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -45063,12 +46306,18 @@ dir = 5 }, /obj/structure/table/reinforced, -/obj/machinery/cell_charger, +/obj/machinery/cell_charger{ + pixel_x = 1; + pixel_y = 3 + }, /obj/item/stock_parts/cell/high{ - pixel_x = 5; - pixel_y = 4 + pixel_x = 1; + pixel_y = 8 + }, +/obj/item/stock_parts/cell/high{ + pixel_x = 1; + pixel_y = 3 }, -/obj/item/stock_parts/cell/high, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics/chargebay) "dFx" = ( @@ -45083,20 +46332,20 @@ id = "KPPNorth"; pixel_x = -6; pixel_y = 8; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter{ id = "EscapeLockdown"; name = "Escape Shuttle Lockdown Control"; pixel_x = 6; pixel_y = -2; - req_one_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/bolt_control{ id = "KPPSouth"; pixel_x = -6; pixel_y = -2; - req_one_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -45141,21 +46390,24 @@ /turf/simulated/wall/r_wall, /area/station/medical/virology) "dFU" = ( -/obj/item/healthanalyzer/advanced, -/obj/item/clothing/ears/earmuffs{ - pixel_x = 4; - pixel_y = -2 +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen/research{ + pixel_y = -32 }, -/obj/item/clothing/ears/earmuffs, /obj/item/reagent_containers/spray/cleaner{ desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; - name = "Chemistry Cleaner" + name = "Chemistry Cleaner"; + pixel_x = 14; + pixel_y = 10 }, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/science, -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen/research{ - pixel_y = -32 +/obj/item/healthanalyzer/advanced{ + pixel_y = 8 + }, +/obj/item/clothing/glasses/science{ + pixel_y = 2 + }, +/obj/item/clothing/glasses/science{ + pixel_y = -2 }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" @@ -45288,13 +46540,8 @@ }, /area/station/command/bridge/checkpoint/south) "dGU" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/station/command/bridge/checkpoint/south) +/turf/simulated/wall, +/area/station/service/chapel/funeral) "dHk" = ( /obj/effect/turf_decal/delivery, /obj/effect/mapping_helpers/airlock/windoor/access/any/science/xenobio, @@ -45342,21 +46589,11 @@ d2 = 8; icon_state = "2-8" }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /obj/structure/cable{ d1 = 2; d2 = 4; icon_state = "2-4" }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -45375,6 +46612,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "dHM" = ( @@ -45395,7 +46635,9 @@ icon_state = "2-8" }, /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment/corner{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -45408,6 +46650,7 @@ icon_state = "0-4" }, /obj/item/kirbyplants, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "blue" @@ -45449,7 +46692,7 @@ /obj/effect/turf_decal/delivery/hollow, /obj/machinery/light/directional/south, /turf/simulated/floor/plasteel, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dHZ" = ( /obj/structure/chair/sofa/corner{ dir = 4 @@ -45564,7 +46807,6 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /obj/effect/landmark/spawner/nukedisc_respawn, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -45615,7 +46857,7 @@ pixel_y = -8 }, /turf/simulated/wall, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dIL" = ( /obj/effect/decal/cleanable/dirt, /obj/item/newspaper{ @@ -45652,25 +46894,41 @@ pixel_y = 8 }, /turf/simulated/wall, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dIO" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, /area/station/hallway/secondary/exit) "dIZ" = ( -/obj/structure/rack, -/obj/item/stack/rods{ - amount = 50 - }, -/obj/item/stack/sheet/rglass{ - amount = 50 - }, +/obj/structure/shelf/engineering, /obj/effect/turf_decal/delivery/hollow, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/item/stack/sheet/plasteel/fifty{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/stack/sheet/rglass/fifty{ + pixel_y = -4 + }, +/obj/item/stack/rods/fifty{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/stack/sheet/plasteel/fifty{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/stack/sheet/rglass/fifty{ + pixel_y = 4 + }, +/obj/item/stack/rods/fifty{ + pixel_x = 6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "yellowfull" }, @@ -45719,7 +46977,6 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/wire_splicing/thirty, /turf/simulated/floor/plating, @@ -45816,12 +47073,13 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "dKg" = ( /obj/machinery/light/nightshifted/south, /obj/structure/chair/sofa/pew/right{ dir = 8 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -45835,7 +47093,7 @@ "dKi" = ( /obj/item/kirbyplants, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dKk" = ( /obj/machinery/status_display/directional/north, /turf/simulated/floor/plasteel{ @@ -45864,7 +47122,6 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 4; @@ -45898,7 +47155,7 @@ "dKr" = ( /obj/structure/closet/cardboard, /obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "dKs" = ( @@ -45913,6 +47170,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -45957,7 +47215,7 @@ id = "CHAP2" }, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/office) "dKL" = ( /obj/structure/chair/sofa/pew/left{ dir = 8 @@ -46007,6 +47265,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -46022,6 +47281,10 @@ c_tag = "Chapel West"; dir = 4 }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -46034,6 +47297,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -46077,7 +47341,6 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/simulated/floor/plasteel{ @@ -46098,6 +47361,7 @@ /obj/machinery/atmospherics/portable/canister/oxygen{ anchored = 1 }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -46162,6 +47426,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/carpet/black, /area/station/service/chapel) "dMn" = ( @@ -46174,7 +47441,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "dMo" = ( /obj/machinery/economy/vending/snack, /obj/structure/window/reinforced{ @@ -46190,7 +47457,11 @@ "dMp" = ( /obj/machinery/door_control/shutter/east{ id = "Bar"; - name = "Bar Privacy Shutters Control" + name = "Bar Privacy Shutters Control"; + pixel_y = 6 + }, +/obj/machinery/light_switch/east{ + pixel_y = -6 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -46266,7 +47537,7 @@ pixel_y = 24 }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dMS" = ( /turf/simulated/floor/carpet/black, /area/station/service/chapel) @@ -46278,12 +47549,12 @@ /obj/structure/morgue{ dir = 2 }, -/obj/machinery/light/small/directional/east, /obj/effect/landmark/spawner/rev, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "dMW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet/black, @@ -46422,6 +47693,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "dOd" = ( +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitegreencorner" @@ -46469,7 +47741,7 @@ dir = 6; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "dOq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/carpet/black, @@ -46612,6 +47884,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/carpet/black, /area/station/service/chapel) "dOX" = ( @@ -46621,16 +47896,31 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + sort_type_txt = "17" + }, /turf/simulated/floor/carpet/black, /area/station/service/chapel) "dPb" = ( -/obj/structure/closet/cardboard, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/trash, -/obj/effect/spawner/random/trash, -/turf/simulated/floor/plating, -/area/station/maintenance/apmaint) +/obj/machinery/light/small/directional/east, +/obj/structure/shelf/security, +/obj/item/storage/box/evidence{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/hand_labeler{ + pixel_y = -4 + }, +/obj/item/storage/box/tapes{ + pixel_x = 8; + pixel_y = -4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/station/security/evidence) "dPd" = ( /obj/structure/cable{ d1 = 1; @@ -46710,7 +48000,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dPv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -46807,13 +48097,13 @@ /turf/simulated/floor/plasteel{ icon_state = "chapel" }, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dPD" = ( /obj/structure/closet/coffin, /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/office) "dPE" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -46923,7 +48213,7 @@ dir = 4 }, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/office) "dQi" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -47031,8 +48321,8 @@ /turf/simulated/floor/plating/airless, /area/space/nearstation) "dQI" = ( -/obj/structure/disposalpipe/segment/corner{ - dir = 8 +/obj/structure/disposalpipe/junction/reversed{ + dir = 1 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -47106,7 +48396,7 @@ pixel_y = 3 }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dQZ" = ( /obj/structure/chair/office, /turf/simulated/floor/plasteel{ @@ -47239,7 +48529,7 @@ /area/station/medical/medbay2) "dRv" = ( /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dRw" = ( /obj/effect/mapping_helpers/airlock/access/any/service/chapel_office, /obj/machinery/door/firedoor, @@ -47254,6 +48544,11 @@ /obj/effect/mapping_helpers/airlock/polarized{ id = "CHAP" }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/wood/cherry, /area/station/service/chapel/office) "dRB" = ( @@ -47365,7 +48660,7 @@ dir = 4; icon_state = "chapel" }, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dRQ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -47379,7 +48674,7 @@ "dRR" = ( /obj/machinery/alarm/directional/west, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "dRT" = ( /obj/machinery/power/apc/directional/north, /obj/structure/cable{ @@ -47481,23 +48776,23 @@ /turf/simulated/floor/plasteel/stairs{ color = "#888888" }, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dSj" = ( -/obj/machinery/firealarm/directional/east, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "dSk" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dSm" = ( /obj/item/radio/intercom/directional/east, /turf/simulated/floor/carpet/black, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dSn" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance, @@ -47574,11 +48869,6 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "dSG" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -47608,29 +48898,25 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dSL" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dSN" = ( /obj/effect/landmark/start/chaplain, /obj/machinery/light/small/directional/east, +/obj/machinery/light_switch/east, /turf/simulated/floor/carpet/black, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dSO" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/structure/cable{ d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" + d2 = 2; + icon_state = "1-2" }, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) @@ -47693,7 +48979,7 @@ /area/station/service/library) "dSY" = ( /obj/item/kirbyplants, -/obj/item/radio/intercom/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "red" @@ -47711,7 +48997,7 @@ dir = 8 }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dTh" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/autoname, @@ -47764,7 +49050,7 @@ /turf/simulated/floor/carpet/black, /area/station/service/chapel/office) "dTr" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/white, /area/station/maintenance/apmaint) @@ -47847,6 +49133,7 @@ "dTH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -47886,6 +49173,11 @@ "dTW" = ( /obj/structure/cable, /obj/effect/spawner/window/reinforced/grilled, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "dTX" = ( @@ -47895,7 +49187,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "dTY" = ( /obj/structure/window/reinforced{ dir = 4 @@ -47907,7 +49199,7 @@ pixel_y = -32 }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dTZ" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, @@ -47922,12 +49214,12 @@ pixel_x = 32 }, /turf/simulated/floor/carpet/black, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dUg" = ( /obj/structure/table/wood, /obj/item/storage/bible, /turf/simulated/floor/carpet/black, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dUh" = ( /obj/structure/table/wood, /turf/simulated/floor/carpet/black, @@ -47940,11 +49232,6 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "dUl" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/effect/turf_decal/stripes/line, /obj/structure/reagent_dispensers/fueltank, /obj/effect/decal/cleanable/dirt, @@ -48120,21 +49407,21 @@ /obj/structure/closet/coffin, /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/office) "dUK" = ( /obj/structure/window/reinforced{ dir = 4 }, /obj/structure/closet/coffin, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/office) "dUL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "dUM" = ( /obj/structure/table, /obj/item/storage/box/bodybags, @@ -48147,13 +49434,14 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "dUN" = ( /obj/structure/crematorium, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "dUO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/girder, @@ -48184,7 +49472,7 @@ }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dUS" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/reagent_dispensers/watertank, @@ -48220,11 +49508,13 @@ /turf/simulated/floor/carpet/purple, /area/station/hallway/secondary/exit) "dVc" = ( -/obj/machinery/light/directional/east, -/obj/item/kirbyplants, /obj/structure/sign/poster/random{ pixel_y = -32 }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "green" @@ -48332,11 +49622,17 @@ /area/station/engineering/control) "dVX" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/box/lights/mixed{ + pixel_x = 12; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -48435,7 +49731,6 @@ }, /area/station/maintenance/port) "dWl" = ( -/obj/machinery/alarm/directional/north, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, @@ -48447,11 +49742,13 @@ d2 = 8; icon_state = "2-8" }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel/dark, /area/station/science/server) "dWm" = ( /obj/machinery/light/directional/south, /obj/item/kirbyplants, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -48509,7 +49806,7 @@ /obj/machinery/door_control/shutter{ id = "xeno5"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -48568,6 +49865,7 @@ icon_state = "4-8" }, /obj/effect/mapping_helpers/airlock/access/any/supply/mining, +/obj/effect/mapping_helpers/airlock/access/any/supply/expedition, /turf/simulated/floor/plasteel, /area/station/supply/miningdock) "dWI" = ( @@ -48592,12 +49890,12 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dWL" = ( /obj/item/kirbyplants, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dWP" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -48628,7 +49926,7 @@ dir = 8; icon_state = "neutralcorner" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "dXk" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -48707,7 +50005,7 @@ /area/station/maintenance/starboard) "dXv" = ( /obj/item/kirbyplants, -/obj/item/radio/intercom/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitepurple" @@ -48735,7 +50033,7 @@ icon_state = "0-2" }, /turf/simulated/floor/plasteel/dark, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "dXC" = ( /obj/machinery/power/apc/directional/north, /obj/machinery/camera{ @@ -48753,6 +50051,7 @@ "dXD" = ( /obj/machinery/hologram/holopad, /obj/machinery/light/directional/west, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -48779,8 +50078,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dXJ" = ( /obj/structure/sign/poster/official/safety_internals{ pixel_y = -32 @@ -48860,7 +50164,7 @@ /area/station/maintenance/port2) "dYp" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -49096,10 +50400,12 @@ "dYU" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "dYV" = ( /obj/structure/rack, -/obj/item/storage/secure/briefcase, +/obj/item/storage/secure/briefcase{ + pixel_y = 2 + }, /obj/machinery/newscaster/directional/south, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) @@ -49132,6 +50438,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -49313,6 +50620,7 @@ /area/station/hallway/primary/aft) "eax" = ( /obj/machinery/computer/secure_data, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/carpet, /area/station/security/detective) "eaH" = ( @@ -49379,7 +50687,7 @@ "ebH" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "ebU" = ( /obj/machinery/light/directional/north, /obj/item/kirbyplants, @@ -49435,6 +50743,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkblue" @@ -49523,7 +50832,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "edY" = ( /obj/structure/chair/comfy/teal{ dir = 8 @@ -49564,6 +50873,18 @@ icon_state = "yellowfull" }, /area/station/engineering/control) +"eel" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/supply/lobby) "eem" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, @@ -49579,9 +50900,7 @@ c_tag = "Pool South"; dir = 1 }, -/obj/structure/sign/poster/official/safety_internals{ - pixel_y = -32 - }, +/obj/structure/sign/poster/official/random/south, /obj/effect/turf_decal/siding/white, /turf/simulated/floor/plasteel{ dir = 1; @@ -49670,7 +50989,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fore) "efk" = ( @@ -49890,7 +51209,7 @@ }, /obj/effect/landmark/start/bar, /turf/simulated/floor/carpet/orange, -/area/station/service/theatre) +/area/station/service/bar/atrium) "eiL" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/machinery/door/poddoor/preopen{ @@ -50117,7 +51436,7 @@ pixel_y = 4 }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "emI" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -50193,7 +51512,7 @@ /area/station/legal/lawoffice) "enA" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "enC" = ( @@ -50231,7 +51550,7 @@ icon_state = "0-2" }, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "eoh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -50315,6 +51634,9 @@ /obj/effect/turf_decal/siding/wood/cherry{ dir = 5 }, +/obj/machinery/light_switch/north, +/obj/structure/shelf, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/wood/fancy/cherry, /area/station/public/vacant_store) "eoX" = ( @@ -50365,7 +51687,6 @@ /area/station/maintenance/fsmaint) "eqp" = ( /obj/machinery/light/directional/east, -/obj/machinery/firealarm/directional/east, /turf/simulated/floor/plasteel{ icon_state = "bluecorner" }, @@ -50397,7 +51718,7 @@ }, /area/station/security/range) "eqK" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plasteel{ @@ -50411,14 +51732,15 @@ }, /area/station/maintenance/dormitory_maintenance) "eqO" = ( -/obj/machinery/atmospherics/pipe/manifold/visible{ - dir = 4 - }, -/obj/item/wrench, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/area/station/engineering/atmos) +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/port) "erb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/oil_maybe, @@ -50426,6 +51748,38 @@ /obj/structure/sign/poster/contraband/random/north, /turf/simulated/floor/plating, /area/station/maintenance/fore2) +"erh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/shelf/supply, +/obj/item/hand_labeler{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/hand_labeler{ + pixel_y = -4 + }, +/obj/item/hand_labeler{ + pixel_y = -4; + pixel_x = 6 + }, +/obj/item/destTagger{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/destTagger{ + pixel_y = 8 + }, +/obj/item/destTagger{ + pixel_y = 8; + pixel_x = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/station/supply/storage) "erA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -50450,7 +51804,7 @@ dir = 4; icon_state = "darkredcorners" }, -/area/station/security/brig) +/area/station/security/lobby) "erH" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -50514,13 +51868,6 @@ }, /area/station/engineering/ai_transit_tube) "esw" = ( -/obj/machinery/access_button{ - autolink_id = "enginen_btn_ext"; - name = "exterior access button"; - pixel_x = 20; - pixel_y = 20; - req_access_txt = "10;13" - }, /obj/structure/cable/yellow{ d1 = 1; d2 = 4; @@ -50637,9 +51984,9 @@ /obj/machinery/access_button/south{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_one_access_txt = "2"; pixel_y = 0; - pixel_x = 24 + pixel_x = 24; + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/decal/cleanable/dirt, @@ -50721,6 +52068,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "evi" = ( @@ -50878,6 +52228,14 @@ icon_state = "neutral" }, /area/station/maintenance/apmaint) +"exk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/food_trash, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/station/maintenance/port) "exl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -50973,7 +52331,7 @@ dir = 10; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "eyK" = ( /obj/structure/sign/poster/contraband/random/west, /turf/simulated/floor/plating, @@ -51094,9 +52452,19 @@ /area/station/security/warden) "ezM" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/toy/figure/crew/chef, +/obj/item/clipboard{ + pixel_x = -12; + pixel_y = 4 + }, +/obj/item/toy/figure/crew/chef{ + pixel_x = -12; + pixel_y = 4 + }, /obj/structure/sign/poster/official/random/south, +/obj/item/stack/packageWrap{ + pixel_y = 8; + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, @@ -51202,7 +52570,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "eCg" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ @@ -51224,7 +52592,9 @@ /obj/item/storage/toolbox/mechanical{ pixel_y = 10 }, -/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel/dark, /area/station/security/brig) "eCl" = ( @@ -51305,17 +52675,17 @@ /area/station/command/office/hop) "eEd" = ( /obj/effect/turf_decal/stripes/line, -/obj/item/radio/intercom/directional/south, /obj/structure/cable/yellow{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "eEl" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/starboard) "eEL" = ( @@ -51323,6 +52693,7 @@ dir = 9 }, /obj/structure/bookcase, +/obj/machinery/light_switch/north, /turf/simulated/floor/wood/oak, /area/station/public/vacant_office/secondary) "eFB" = ( @@ -51349,6 +52720,7 @@ dir = 8 }, /obj/effect/turf_decal/delivery/hollow, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -51368,25 +52740,33 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "eFJ" = ( -/obj/structure/rack, +/obj/structure/shelf/science, +/obj/machinery/power/apc/directional/south, +/obj/structure/cable, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/dirt, /obj/item/assembly/igniter{ - pixel_x = 6; - pixel_y = 2 + pixel_y = 12; + pixel_x = -6 }, /obj/item/assembly/igniter{ - pixel_x = 4; - pixel_y = 1 + pixel_y = 12 }, /obj/item/assembly/igniter{ - pixel_x = 2 + pixel_y = 12; + pixel_x = 6 }, /obj/item/assembly/igniter{ - pixel_y = -1 + pixel_y = -2; + pixel_x = -6 + }, +/obj/item/assembly/igniter{ + pixel_y = -2 + }, +/obj/item/assembly/igniter{ + pixel_y = -2; + pixel_x = 6 }, -/obj/machinery/power/apc/directional/south, -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whitepurple" @@ -51447,7 +52827,7 @@ icon_state = "4-8" }, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "eHj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -51464,8 +52844,13 @@ "eHn" = ( /obj/structure/table/wood, /obj/machinery/light/nightshifted/north, +/obj/machinery/power/apc/directional/north, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "eHx" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -51539,7 +52924,7 @@ }, /obj/machinery/disposal, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "eIs" = ( /obj/machinery/atmospherics/portable/pump, /obj/effect/decal/cleanable/cobweb, @@ -51572,12 +52957,9 @@ "eJl" = ( /obj/structure/table, /obj/item/flashlight/lamp{ - pixel_y = 10 + pixel_y = 4 }, -/obj/item/storage/box/evidence, -/obj/item/hand_labeler, /obj/machinery/alarm/directional/east, -/obj/item/storage/box/tapes, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkred" @@ -51751,7 +53133,7 @@ /obj/effect/turf_decal/stripes/line, /obj/item/kirbyplants, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "eLg" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/crate, @@ -51863,7 +53245,7 @@ /turf/simulated/floor/carpet/royalblack, /area/station/legal/magistrate) "eMP" = ( -/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood/oak, /area/station/security/permabrig) "eNn" = ( @@ -51933,6 +53315,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 6 }, +/obj/machinery/firealarm/directional/east, /turf/simulated/floor/wood/fancy, /area/station/public/sleep_male) "eOm" = ( @@ -52010,7 +53393,7 @@ "ePn" = ( /obj/structure/sign/electricshock, /turf/simulated/wall/r_wall, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "ePp" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -52038,6 +53421,7 @@ d2 = 8; icon_state = "2-8" }, +/obj/item/kirbyplants, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "ePD" = ( @@ -52305,7 +53689,10 @@ "eSc" = ( /obj/machinery/newscaster/directional/north, /obj/structure/table, -/obj/item/reagent_containers/drinks/mug/sci, +/obj/item/reagent_containers/drinks/mug/sci{ + pixel_x = -3; + pixel_y = 6 + }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 9; @@ -52313,7 +53700,7 @@ }, /area/station/science/research) "eSx" = ( -/obj/effect/spawner/window/reinforced/grilled, +/obj/effect/spawner/window/reinforced/plasma/grilled, /obj/structure/cable{ d2 = 4; icon_state = "0-4" @@ -52343,7 +53730,7 @@ dir = 1; icon_state = "darkredcorners" }, -/area/station/security/brig) +/area/station/security/lobby) "eTd" = ( /obj/effect/decal/cleanable/ants, /obj/item/kirbyplants/dead, @@ -52363,7 +53750,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredfull" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "eTq" = ( /obj/structure/disposalpipe/sortjunction/reversed{ dir = 8; @@ -52391,6 +53778,9 @@ /area/station/medical/sleeper) "eTE" = ( /obj/machinery/light/directional/west, +/obj/machinery/mecha_part_fabricator/station{ + dir = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "eTQ" = ( @@ -52565,10 +53955,6 @@ /obj/item/stack/packageWrap{ pixel_y = -2 }, -/obj/item/flashlight/lamp{ - pixel_y = -8; - pixel_x = -4 - }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitegreencorner" @@ -52703,30 +54089,35 @@ /obj/machinery/door_control/shutter/west{ id = "ArmoryLock"; name = "Armory Lockdown"; - pixel_y = -8; - req_one_access_txt = "3" + req_access = list(3); + pixel_x = -36 }, /obj/machinery/door_control/shutter/west{ id = "Warden"; name = "Warden Privacy Shutters Control"; - req_one_access_txt = "3"; - pixel_y = 8 + req_access = list(3); + pixel_y = 8; + pixel_x = -36 }, /obj/machinery/button/windowtint/west{ id = "WardenD"; - req_one_access_txt = "3" + req_access = list(3); + pixel_y = -6 }, /obj/machinery/door_control/shutter/west{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; pixel_y = -8; - req_one_access_txt = "3"; + req_access = list(3); pixel_x = -36 }, /obj/machinery/camera{ c_tag = "Brig Warden's Office"; dir = 4 }, +/obj/machinery/light_switch/west{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkred" @@ -52762,6 +54153,17 @@ icon_state = "dark" }, /area/station/service/bar) +"fbs" = ( +/obj/structure/table/wood, +/obj/item/kitchen/utensil/fork{ + pixel_y = 4 + }, +/obj/item/kitchen/utensil/spoon{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/simulated/floor/carpet/orange, +/area/station/service/bar/atrium) "fby" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/polarized{ @@ -52846,7 +54248,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "fdo" = ( /obj/structure/table/wood, /obj/item/reagent_containers/drinks/bottle/bottleofbanana{ @@ -52900,20 +54302,17 @@ /area/station/supply/storage) "fen" = ( /obj/machinery/photocopier, -/obj/machinery/light/directional/north, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "feI" = ( /obj/structure/table/reinforced, -/obj/item/storage/belt/utility, -/obj/item/weldingtool, -/obj/item/clothing/head/welding, /obj/machinery/newscaster/directional/north, /obj/effect/turf_decal/delivery/hollow, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "feK" = ( @@ -52944,11 +54343,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -53048,7 +54442,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "fgN" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -53086,6 +54480,8 @@ /obj/effect/turf_decal/siding/wood/cherry{ dir = 9 }, +/obj/structure/shelf, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/wood/fancy/cherry, /area/station/public/vacant_store) "fhp" = ( @@ -53199,7 +54595,7 @@ }, /obj/effect/landmark/start/bar, /turf/simulated/floor/carpet/orange, -/area/station/service/theatre) +/area/station/service/bar/atrium) "fiC" = ( /obj/effect/spawner/window/reinforced/polarized/grilled{ id = "Surgery2" @@ -53259,7 +54655,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "fjd" = ( /obj/effect/spawner/window/reinforced/polarized/grilled{ id = "court" @@ -53304,7 +54700,7 @@ /obj/structure/closet/secure_closet/cargotech, /obj/effect/turf_decal/delivery/hollow, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ icon_state = "brown" }, @@ -53346,6 +54742,7 @@ /area/station/command/office/rd) "fkB" = ( /obj/structure/closet/secure_closet/evidence, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkred" @@ -53515,7 +54912,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "fnc" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -53544,14 +54941,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "fnS" = ( -/obj/structure/reagent_dispensers/peppertank/north, -/obj/machinery/camera{ - c_tag = "Brig Security Equipment Lockers" - }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" @@ -53803,6 +55197,7 @@ codes_txt = "patrol;next_patrol=hall7c"; location = "hall7b" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -53888,6 +55283,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /obj/machinery/power/apc/directional/south, +/obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plasteel{ dir = 7; icon_state = "yellow" @@ -53948,7 +55344,7 @@ /obj/machinery/access_button/north{ autolink_id = "apmaint2_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -53971,8 +55367,14 @@ /area/station/medical/virology) "fuE" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/toy/figure/crew/cargotech, +/obj/item/clipboard{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/toy/figure/crew/cargotech{ + pixel_x = -6; + pixel_y = 2 + }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "brown" @@ -53985,6 +55387,7 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/food_trash, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -54093,16 +55496,8 @@ /area/station/maintenance/starboard2) "fwJ" = ( /obj/structure/table/wood, -/obj/item/storage/fancy/donut_box, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/obj/item/storage/fancy/donut_box{ + pixel_y = 2 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -54127,7 +55522,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fore) "fwX" = ( @@ -54280,7 +55675,7 @@ pixel_y = 28 }, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "fzu" = ( /obj/structure/cable{ d1 = 4; @@ -54454,14 +55849,12 @@ /area/station/maintenance/starboard) "fBT" = ( /obj/structure/table/reinforced, -/obj/item/stack/rods, -/obj/item/stack/cable_coil/random, -/obj/effect/turf_decal/delivery/hollow, -/obj/item/stack/sheet/glass{ - amount = 10 +/obj/item/stack/rods{ + pixel_y = 4 }, +/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "fBX" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -54485,7 +55878,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "fCe" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -54508,9 +55901,7 @@ /obj/structure/rack, /obj/item/crowbar/red, /obj/item/wrench, -/obj/item/tank/internals/emergency_oxygen/engi, /obj/effect/turf_decal/delivery/hollow, -/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "fDk" = ( @@ -54529,7 +55920,7 @@ /area/station/medical/medbay) "fDy" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/east, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkredcorners" @@ -54629,6 +56020,8 @@ /area/station/security/permabrig) "fFF" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "neutral" @@ -54665,12 +56058,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/airlock_controller/access_controller{ name = "Virology Lab Access Console"; - req_one_access_txt = "39"; ext_door_link_id = "virolab_door_ext"; int_door_link_id = "virolab_door_int"; ext_button_link_id = "virolab_btn_ext"; int_button_link_id = "virolab_btn_int"; - pixel_x = -24 + pixel_x = -24; + req_access = list(39) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -54744,7 +56137,7 @@ /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "fHs" = ( /obj/structure/table/reinforced, /obj/machinery/photocopier/faxmachine/longrange{ @@ -54758,6 +56151,7 @@ dir = 4 }, /obj/machinery/status_display/directional/north, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "chapel" @@ -54923,6 +56317,7 @@ "fLD" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whiteblue" @@ -54965,7 +56360,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /turf/simulated/floor/wood/fancy/cherry, /area/station/maintenance/fsmaint) "fMj" = ( @@ -55070,6 +56465,13 @@ }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) +"fNN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/light_switch/north, +/turf/simulated/floor/plasteel, +/area/station/engineering/controlroom) "fNP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -55079,7 +56481,7 @@ dir = 1; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "fOa" = ( /obj/effect/turf_decal/delivery/hollow, /obj/machinery/floodlight, @@ -55104,7 +56506,7 @@ /turf/simulated/floor/plasteel{ icon_state = "escape" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "fOs" = ( /obj/structure/lattice, /obj/structure/grille, @@ -55159,16 +56561,13 @@ }, /area/station/maintenance/fsmaint) "fPm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/landmark/start/janitor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/landmark/start/janitor, /turf/simulated/floor/plasteel, /area/station/service/janitor) "fPv" = ( @@ -55203,7 +56602,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "fPF" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -55243,7 +56642,7 @@ dir = 8 }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "fPS" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -55273,7 +56672,7 @@ icon_state = "0-8" }, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "fPV" = ( /obj/structure/cable{ d1 = 4; @@ -55412,15 +56811,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "fRv" = ( /obj/structure/cable{ d1 = 1; @@ -55497,13 +56891,15 @@ /area/station/security/range) "fTi" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/plasteel, -/obj/item/wrench, /obj/machinery/firealarm/directional/east, /obj/machinery/light_switch/south, /obj/effect/turf_decal/delivery/hollow, /obj/item/stack/sheet/mineral/plasma{ - amount = 5 + amount = 5; + pixel_y = 6 + }, +/obj/item/wrench{ + pixel_y = 2 }, /turf/simulated/floor/plasteel, /area/station/engineering/gravitygenerator) @@ -55537,7 +56933,7 @@ icon_state = "2-8" }, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "fTn" = ( /turf/simulated/floor/wood/cherry, /area/station/service/chapel/office) @@ -55763,17 +57159,12 @@ /area/station/maintenance/port) "fWM" = ( /obj/structure/table, -/obj/item/storage/bag/chemistry, -/obj/item/storage/bag/chemistry, -/obj/item/clothing/mask/gas{ - pixel_y = 5; - pixel_x = -5 - }, -/obj/item/clothing/mask/gas{ - pixel_y = 5; - pixel_x = 5 - }, /obj/machinery/firealarm/directional/south, +/obj/item/stack/sheet/mineral/plasma{ + amount = 10; + pixel_y = 6 + }, +/obj/item/hand_labeler, /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" }, @@ -55848,7 +57239,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -55905,7 +57296,7 @@ "fYN" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/oil_maybe, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue" @@ -55955,16 +57346,22 @@ /area/station/medical/storage/secondary) "fZU" = ( /obj/structure/table/wood, -/obj/item/storage/fancy/cigarettes/cigpack_random, /obj/item/storage/fancy/cigarettes/cigpack_random{ - pixel_x = 5; - pixel_y = 5 + pixel_x = 8; + pixel_y = 8 }, -/obj/item/storage/fancy/matches, /obj/machinery/light/directional/north, /obj/machinery/barsign{ pixel_y = 32 }, +/obj/item/storage/fancy/cigarettes/cigpack_random{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/item/storage/fancy/matches{ + pixel_x = -6; + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -55995,9 +57392,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /turf/simulated/floor/plating, /area/station/engineering/mechanic) "gaB" = ( @@ -56282,7 +57677,6 @@ dir = 9 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel, /area/station/security/permabrig) "gfZ" = ( @@ -56357,6 +57751,7 @@ /obj/structure/closet/emcloset, /obj/effect/turf_decal/delivery/hollow, /obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purple" @@ -56373,9 +57768,15 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/light_switch/south, +/obj/structure/cable{ + d1 = 1; d2 = 8; - icon_state = "4-8" + icon_state = "1-8" }, /turf/simulated/floor/plasteel/dark, /area/station/public/fitness) @@ -56392,12 +57793,10 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 30 }, -/obj/item/tank/internals/plasma, -/obj/item/storage/toolbox/electrical{ - pixel_x = -1; - pixel_y = -1 +/obj/item/tank/internals/plasma{ + pixel_x = -6; + pixel_y = 6 }, -/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" @@ -56448,11 +57847,16 @@ }, /turf/simulated/floor/engine, /area/station/medical/chemistry) +"giC" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/simulated/floor/plating/airless, +/area/station/science/toxins/test) "giE" = ( /obj/structure/table/glass, /obj/item/kirbyplants{ pixel_y = 12 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whitegreencorner" @@ -56497,7 +57901,7 @@ dir = 1; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "gkb" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dust, @@ -56542,6 +57946,7 @@ d2 = 8; icon_state = "0-8" }, +/obj/machinery/light_switch/north, /turf/simulated/floor/carpet, /area/station/legal/courtroom) "gkk" = ( @@ -56791,6 +58196,13 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/starboard) +"gnP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/fsmaint) "goo" = ( /obj/structure/chair/office/light{ dir = 1; @@ -56816,7 +58228,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "gou" = ( /obj/structure/disposalpipe/segment/corner{ dir = 2 @@ -56895,7 +58307,7 @@ /area/station/medical/surgery/secondary) "gqt" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -56976,10 +58388,10 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/old_kitchen) "grn" = ( +/obj/machinery/power/apc/directional/south, /obj/structure/cable{ - d1 = 4; d2 = 8; - icon_state = "4-8" + icon_state = "0-8" }, /obj/effect/landmark/damageturf, /turf/simulated/floor/wood/oak, @@ -57012,15 +58424,13 @@ "grA" = ( /obj/effect/turf_decal/delivery/red/hollow, /obj/item/gun/energy/laser{ - pixel_x = 2 - }, -/obj/item/gun/energy/laser{ - pixel_x = 4 + pixel_y = 8 }, +/obj/structure/gunrack, +/obj/item/gun/energy/laser, /obj/item/gun/energy/laser{ - pixel_x = 6 + pixel_y = -8 }, -/obj/structure/rack/gunrack, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "grY" = ( @@ -57040,7 +58450,7 @@ dir = 8; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "gsw" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/cable{ @@ -57209,11 +58619,13 @@ /turf/simulated/floor/plasteel/dark, /area/station/public/locker) "guQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/spawner/window/reinforced/grilled, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" }, -/turf/simulated/floor/carpet/black, -/area/station/service/chapel) +/turf/simulated/floor/plating, +/area/station/engineering/hallway) "gve" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -57311,24 +58723,32 @@ /area/station/science/test_chamber) "gwB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/rack, +/obj/structure/shelf/engineering, +/obj/effect/turf_decal/delivery/hollow, /obj/item/storage/briefcase/inflatable{ - pixel_x = 4; - pixel_y = 6 + pixel_x = -6; + pixel_y = 10 }, /obj/item/storage/briefcase/inflatable{ - pixel_x = 2; - pixel_y = 4 + pixel_y = 10 }, /obj/item/storage/briefcase/inflatable{ - pixel_y = 2 + pixel_y = 10; + pixel_x = 6 }, /obj/item/storage/briefcase/inflatable{ - pixel_x = -2 + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/storage/briefcase/inflatable{ + pixel_y = -2 + }, +/obj/item/storage/briefcase/inflatable{ + pixel_x = 6; + pixel_y = -2 }, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "gwF" = ( /obj/structure/cable{ d1 = 1; @@ -57370,6 +58790,9 @@ d2 = 8; icon_state = "2-8" }, +/obj/item/radio/intercom/directional/north{ + pixel_y = 34 + }, /turf/simulated/floor/plasteel, /area/station/engineering/engine/supermatter) "gxr" = ( @@ -57382,7 +58805,7 @@ /area/station/supply/storage) "gxu" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "gxD" = ( @@ -57417,7 +58840,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -57485,7 +58908,7 @@ /obj/structure/cable, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "gzl" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -57514,7 +58937,7 @@ "gAq" = ( /obj/machinery/economy/vending/crittercare, /turf/simulated/floor/carpet, -/area/station/service/theatre) +/area/station/service/bar/atrium) "gAt" = ( /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, @@ -57547,7 +58970,6 @@ /turf/simulated/floor/plating, /area/station/security/podpilot) "gBo" = ( -/obj/item/kirbyplants, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -57594,53 +59016,30 @@ }, /area/station/public/fitness) "gCk" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/window/reinforced/normal{ - dir = 8 - }, /obj/effect/turf_decal/delivery/red/hollow, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/storage/box/rubbershot{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/box/rubbershot{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/box/rubbershot{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/box/rubbershot{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/box/beanbag{ - pixel_x = -3; - pixel_y = 3 +/obj/machinery/light/directional/east, +/obj/structure/shelf/security, +/obj/item/shield/riot{ + pixel_x = -8 }, -/obj/item/storage/box/beanbag{ - pixel_x = -3; - pixel_y = 3 +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 8 }, -/obj/item/storage/box/beanbag{ - pixel_x = -3; - pixel_y = 3 +/obj/item/storage/box/trackimp{ + pixel_x = -8; + pixel_y = 10 }, -/obj/item/storage/box/beanbag{ - pixel_x = -3; - pixel_y = 3 +/obj/item/storage/lockbox/mindshield{ + pixel_y = 10 }, -/obj/effect/mapping_helpers/airlock/windoor/access/any/security/general{ - dir = 8 +/obj/item/storage/box/trackimp{ + pixel_x = 8; + pixel_y = 10 }, -/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "gCs" = ( @@ -57795,7 +59194,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "gEI" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -57877,7 +59276,7 @@ /area/station/maintenance/fsmaint) "gGJ" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -57971,7 +59370,7 @@ /obj/machinery/door_control/normal/east{ id = "CMO"; name = "Office Door"; - req_access_txt = "40" + req_access = list(40) }, /obj/item/cartridge/chemistry{ pixel_y = 4; @@ -58212,7 +59611,7 @@ /obj/machinery/access_button/south{ autolink_id = "apsolar_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -58239,8 +59638,8 @@ /area/station/hallway/secondary/exit/maintenance) "gLL" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/rack, /obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plating, /area/station/maintenance/fore) "gLW" = ( @@ -58338,6 +59737,7 @@ /obj/machinery/camera{ c_tag = "Brig Hall North" }, +/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "red" @@ -58424,13 +59824,14 @@ }, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/computer/prisoner{ - dir = 8 + dir = 8; + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "gNm" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ @@ -58440,7 +59841,7 @@ /obj/machinery/door_control/shutter{ id = "xeno7"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) @@ -58463,6 +59864,9 @@ icon_state = "white" }, /area/station/medical/virology) +"gOs" = ( +/turf/simulated/floor/carpet/black, +/area/station/service/chapel/funeral) "gOz" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -58547,7 +59951,7 @@ /turf/simulated/floor/plating, /area/station/medical/surgery/primary) "gPY" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, @@ -58576,6 +59980,12 @@ /obj/effect/decal/cleanable/glass, /turf/simulated/floor/plating, /area/station/hallway/secondary/exit/maintenance) +"gQs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/station/science/toxins/test) "gQv" = ( /obj/structure/railing{ dir = 8 @@ -58717,6 +60127,9 @@ }, /turf/simulated/floor/plasteel/dark, /area/station/command/bridge) +"gSs" = ( +/turf/simulated/wall, +/area/station/public/toilet/unisex) "gSE" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -58747,6 +60160,7 @@ /obj/structure/railing/corner{ dir = 8 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/wood/fancy, /area/station/service/theatre) "gTe" = ( @@ -58947,6 +60361,16 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/old_detective) +"gWb" = ( +/obj/structure/table/wood, +/obj/item/kitchen/utensil/fork{ + pixel_x = 5 + }, +/obj/item/kitchen/utensil/spoon{ + pixel_x = -5 + }, +/turf/simulated/floor/carpet/orange, +/area/station/service/bar/atrium) "gWf" = ( /obj/structure/chair/comfy/brown, /turf/simulated/floor/wood/parquet, @@ -58966,9 +60390,13 @@ /turf/simulated/floor/engine, /area/station/engineering/controlroom) "gWl" = ( -/obj/machinery/light/directional/west, -/turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/engineering/atmos/distribution) "gWq" = ( /obj/structure/flora/junglebush, /obj/structure/flora/junglebush/large, @@ -58994,7 +60422,7 @@ dir = 1; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "gXh" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/east, @@ -59010,10 +60438,14 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/item/paper_bin{ - pixel_x = 3; - pixel_y = 7 + pixel_x = 6; + pixel_y = 2 }, -/obj/item/pen, +/obj/item/pen{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, @@ -59123,17 +60555,12 @@ /turf/simulated/floor/wood/parquet, /area/station/service/library) "gYQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/light/nightshifted/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 1; + icon_state = "whiteblue" }, -/area/station/medical/patients_rooms) +/area/station/medical/medbay2) "gZs" = ( /obj/item/radio/intercom/directional/north, /turf/simulated/floor/plasteel{ @@ -59427,7 +60854,7 @@ icon_state = "0-2" }, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "hfb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -59465,11 +60892,11 @@ /area/station/science/xenobiology) "hfm" = ( /obj/machinery/light/directional/west, -/obj/machinery/firealarm/directional/west, /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "caution" @@ -59477,8 +60904,14 @@ /area/station/engineering/atmos/control) "hfn" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -4; + pixel_y = 4 + }, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -59559,7 +60992,7 @@ /obj/structure/table, /obj/machinery/button/windowtint/west{ id = "Interrogation"; - req_one_access_txt = "63" + req_access = list(63) }, /obj/item/flashlight/lamp{ pixel_y = 4; @@ -59662,36 +61095,28 @@ }, /area/station/science/rnd) "hhM" = ( -/obj/structure/table, -/obj/item/storage/box/syringes{ - layer = 3.9; - pixel_x = -4; - pixel_y = -8 - }, -/obj/item/storage/box/syringes{ - layer = 3.9; - pixel_x = 8; - pixel_y = -8 +/obj/structure/shelf/medbay, +/obj/item/storage/box/gloves{ + pixel_y = -6; + pixel_x = -8 }, -/obj/item/storage/box/autoinjectors{ - layer = 3.8; - pixel_x = -4; - pixel_y = 2 +/obj/item/storage/box/bodybags{ + pixel_y = -6 }, -/obj/item/storage/box/autoinjectors{ - layer = 3.8; - pixel_x = 8; - pixel_y = 2 +/obj/item/storage/box/masks{ + pixel_y = -6; + pixel_x = 8 }, /obj/item/storage/box/gloves{ - layer = 3.7; - pixel_x = -4; - pixel_y = 12 + pixel_y = 8; + pixel_x = -8 }, -/obj/item/storage/box/gloves{ - layer = 3.7; - pixel_x = 8; - pixel_y = 12 +/obj/item/storage/box/bodybags{ + pixel_y = 8 + }, +/obj/item/storage/box/masks{ + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -59755,6 +61180,9 @@ /area/station/medical/cryo) "hiT" = ( /obj/structure/closet/secure_closet/quartermaster, +/obj/machinery/light_switch/north, +/obj/item/clothing/under/towel/long/alt/brown, +/obj/item/clothing/head/towel/brown, /turf/simulated/floor/carpet/orange, /area/station/supply/qm) "hjl" = ( @@ -59920,7 +61348,7 @@ dir = 4 }, /turf/simulated/floor/carpet, -/area/station/service/bar/atrium) +/area/station/service/bar) "hlC" = ( /obj/structure/chair{ dir = 8 @@ -59928,8 +61356,8 @@ /obj/structure/railing/corner{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/prisoner, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet, /area/station/security/permabrig) "hlS" = ( @@ -59983,7 +61411,7 @@ dir = 1; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "hnM" = ( /obj/docking_port/stationary{ dwidth = 2; @@ -60012,7 +61440,7 @@ /area/station/maintenance/port) "hoo" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "hov" = ( @@ -60039,7 +61467,7 @@ /area/station/engineering/controlroom) "hoG" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fore) "hoX" = ( @@ -60081,7 +61509,7 @@ /obj/machinery/disposal, /obj/structure/sign/poster/official/random/west, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "hpX" = ( /obj/machinery/door/airlock/command/cmo/glass{ id_tag = "CMO" @@ -60130,7 +61558,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "hqG" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/autoname, @@ -60202,7 +61630,7 @@ /area/station/maintenance/starboard2) "hrq" = ( /obj/machinery/light/directional/west, -/obj/machinery/firealarm/directional/west, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -60281,7 +61709,15 @@ }, /obj/machinery/button/windowtint/north{ id = "hosroom"; - req_one_access_txt = "58" + req_access = list(58) + }, +/obj/structure/table/wood, +/obj/item/clothing/under/towel/long/alt/red{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/clothing/head/towel/red{ + pixel_y = 8 }, /turf/simulated/floor/carpet/black, /area/station/command/office/hos) @@ -60334,7 +61770,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/structure/reagent_dispensers/peppertank/south, +/obj/machinery/recharger/wallcharger{ + pixel_y = -30; + pixel_x = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "huh" = ( @@ -60359,7 +61798,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "huY" = ( @@ -60712,7 +62151,7 @@ /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "hzw" = ( /obj/effect/decal/cleanable/dirt, /obj/item/trash/pan, @@ -60762,6 +62201,23 @@ icon_state = "dark" }, /area/station/medical/surgery/primary) +"hAn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/apmaint) "hAD" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 5 @@ -61036,7 +62492,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "hEl" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -61089,11 +62545,11 @@ dir = 1 }, /turf/simulated/floor/carpet/orange, -/area/station/service/theatre) +/area/station/service/bar/atrium) "hEO" = ( /obj/structure/table/wood, /turf/simulated/floor/carpet/orange, -/area/station/service/theatre) +/area/station/service/bar/atrium) "hEP" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ @@ -61194,7 +62650,7 @@ "hFB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "hGe" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 5; @@ -61395,6 +62851,7 @@ icon_state = "4-8" }, /obj/machinery/alarm/directional/north, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkredcorners" @@ -61438,14 +62895,15 @@ "hJo" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, -/obj/item/storage/fancy/donut_box, +/obj/item/storage/fancy/donut_box{ + pixel_y = 2 + }, /obj/machinery/status_display/directional/west, -/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "hJq" = ( /obj/structure/table, /obj/item/storage/fancy/donut_box, @@ -61462,20 +62920,14 @@ "hJw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/sortjunction{ - dir = 2; - sort_type_txt = "17" +/obj/structure/disposalpipe/segment/corner{ + dir = 2 }, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/exit) "hJA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 1; @@ -61639,8 +63091,8 @@ int_button_link_id = "enginen_btn_int"; int_door_link_id = "enginen_door_int"; pixel_y = -25; - req_access_txt = "10;13"; - vent_link_id = "enginen_vent" + vent_link_id = "enginen_vent"; + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -61662,6 +63114,9 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "hLX" = ( @@ -61743,6 +63198,10 @@ icon_state = "whitebluefull" }, /area/station/medical/reception) +"hNj" = ( +/obj/machinery/light_switch/west, +/turf/simulated/floor/wood/oak, +/area/station/service/bar/atrium) "hNq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -61753,7 +63212,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" }, -/area/station/security/brig) +/area/station/security/lobby) "hNw" = ( /obj/structure/railing{ dir = 4 @@ -61769,7 +63228,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "hNR" = ( /obj/structure/grille/broken, /obj/item/shard{ @@ -61842,26 +63301,50 @@ /turf/simulated/floor/plasteel, /area/station/science/xenobiology) "hOu" = ( -/obj/machinery/light/directional/north, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" +/obj/machinery/light_switch/north, +/obj/structure/shelf/command, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_y = -4; + pixel_x = 10 }, -/area/station/security/permabrig) +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_y = -4; + pixel_x = 2 + }, +/obj/item/radio/alternative{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/stack/cable_coil{ + pixel_y = 8 + }, +/obj/item/radio/alternative{ + pixel_y = 8; + pixel_x = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/station/ai_monitored/storage/eva) "hOG" = ( /obj/structure/table/glass, /obj/item/storage/box/syringes{ - pixel_y = 4; + pixel_y = 2; pixel_x = -8 }, /obj/item/storage/box/beakers{ - pixel_y = 4; + pixel_y = 2; pixel_x = 8 }, /obj/machinery/firealarm/directional/south, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/item/storage/box/disks{ + pixel_y = 9 + }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -62021,6 +63504,7 @@ d2 = 8; icon_state = "1-8" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ icon_state = "chapel" }, @@ -62098,7 +63582,7 @@ "hTr" = ( /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "hTB" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -62141,6 +63625,9 @@ /obj/structure/sign/greencross, /turf/simulated/wall/r_wall, /area/station/command/office/cmo) +"hUe" = ( +/turf/simulated/floor/carpet, +/area/station/service/bar) "hUh" = ( /obj/machinery/recharge_station, /obj/machinery/door_control/bolt_control/south{ @@ -62158,7 +63645,7 @@ id = "mechpodbay"; name = "Pod Door Control"; pixel_y = -26; - req_one_access_txt = "32" + req_access = list(32) }, /turf/simulated/floor/plating/airless, /area/station/engineering/mechanic) @@ -62197,22 +63684,6 @@ icon_state = "whiteblue" }, /area/station/command/office/cmo) -"hUV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/wood/oak, -/area/station/service/theatre) "hVa" = ( /obj/effect/decal/cleanable/dust, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -62335,7 +63806,7 @@ /turf/simulated/floor/plating, /area/station/engineering/control) "hWM" = ( -/obj/effect/spawner/window/reinforced/grilled, +/obj/effect/spawner/window/reinforced/plasma/grilled, /obj/machinery/door/poddoor/preopen{ id_tag = "Prison Gate"; name = "Prison Lockdown Blast Doors" @@ -62725,11 +64196,6 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -62765,6 +64231,7 @@ /area/station/science/toxins/mixing) "iev" = ( /obj/structure/disposalpipe/segment, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -62797,7 +64264,10 @@ pixel_x = -4; pixel_y = -4 }, -/obj/item/reagent_containers/drinks/flask/detflask, +/obj/item/reagent_containers/drinks/flask/detflask{ + pixel_x = 10; + pixel_y = 8 + }, /obj/item/radio/intercom/directional/west, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -62951,13 +64421,6 @@ /area/station/medical/patients_rooms) "ihk" = ( /obj/machinery/computer/atmos_alert, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -63061,10 +64524,6 @@ /obj/machinery/light/directional/north, /obj/machinery/light_switch/east, /obj/structure/dresser, -/obj/item/clothing/under/towel/short/alt/blue, -/obj/item/clothing/head/towel/blue{ - pixel_y = 7 - }, /turf/simulated/floor/carpet, /area/station/command/office/hop) "iie" = ( @@ -63103,7 +64562,6 @@ "iiH" = ( /obj/structure/closet/secure_closet/evidence, /obj/item/id_skin/donut, -/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkred" @@ -63252,8 +64710,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 }, /obj/structure/cable{ d1 = 2; @@ -63348,6 +64806,12 @@ icon_state = "whitegreen" }, /area/station/medical/medbay) +"imy" = ( +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/bureaucracy, +/obj/effect/spawner/random/book, +/turf/simulated/floor/plating, +/area/station/maintenance/port) "imN" = ( /obj/structure/closet/crate/freezer/iv_storage, /obj/effect/turf_decal/delivery/blue/hollow, @@ -63516,7 +64980,7 @@ /area/station/medical/virology) "ipa" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 + dir = 8 }, /turf/simulated/floor/plasteel, /area/station/supply/storage) @@ -63555,7 +65019,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "ipz" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, @@ -63691,7 +65155,7 @@ /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/simulated/floor/plating, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "iqR" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -63739,7 +65203,7 @@ dir = 9 }, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "irt" = ( /turf/simulated/wall, /area/station/maintenance/abandonedbar) @@ -63782,7 +65246,7 @@ }, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "irV" = ( /mob/living/simple_animal/mouse/rat, /turf/simulated/floor/wood/oak, @@ -63844,7 +65308,7 @@ /turf/simulated/wall/r_wall, /area/station/security/main) "itt" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/medmaint) "itv" = ( @@ -63895,9 +65359,7 @@ "itF" = ( /obj/structure/closet/l3closet/security, /obj/effect/turf_decal/delivery/red/hollow, -/obj/machinery/recharger/wallcharger{ - pixel_x = 32 - }, +/obj/structure/reagent_dispensers/peppertank/east, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "itL" = ( @@ -63910,7 +65372,7 @@ dir = 1 }, /turf/simulated/floor/carpet, -/area/station/service/bar/atrium) +/area/station/service/bar) "itO" = ( /obj/machinery/door/airlock/engineering, /obj/effect/mapping_helpers/airlock/autoname, @@ -63973,7 +65435,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "iuA" = ( /obj/structure/cable{ d2 = 8; @@ -64048,7 +65510,6 @@ /turf/simulated/floor/engine, /area/station/science/toxins/mixing) "ivI" = ( -/obj/item/kirbyplants, /obj/machinery/camera{ c_tag = "EVA West" }, @@ -64078,6 +65539,9 @@ }, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -64148,7 +65612,7 @@ /obj/effect/turf_decal/delivery/hollow, /obj/machinery/recharge_station, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "ixE" = ( /obj/structure/cable{ d1 = 4; @@ -64500,7 +65964,7 @@ name = "Security Blast Door" }, /turf/simulated/floor/plating, -/area/station/security/brig) +/area/station/security/lobby) "iDw" = ( /obj/machinery/alarm/directional/east, /obj/item/kirbyplants, @@ -64535,10 +65999,10 @@ }, /obj/machinery/disposal, /obj/effect/turf_decal/delivery/hollow, -/obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel, /area/station/public/pool) "iEG" = ( @@ -64699,28 +66163,38 @@ "iHf" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/cable{ - d2 = 8; - icon_state = "0-8" + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" }, /turf/simulated/floor/plating, /area/station/engineering/break_room) "iHg" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "iHp" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "redcorner" }, -/area/station/security/storage) +/area/station/security/restroom) "iHv" = ( /obj/structure/marker_beacon/dock_marker, /obj/effect/spawner/window/reinforced, @@ -64931,7 +66405,7 @@ }, /area/station/security/prison/cell_block/A) "iKY" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/starboard2) "iLl" = ( @@ -64996,7 +66470,7 @@ }, /area/station/maintenance/port) "iMB" = ( -/obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, @@ -65035,13 +66509,8 @@ /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) "iMT" = ( -/obj/effect/spawner/window/reinforced/grilled, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2" - }, -/turf/simulated/floor/plating, -/area/station/medical/storage/secondary) +/turf/simulated/wall/r_wall, +/area/station/medical/virology/test_room) "iNa" = ( /obj/structure/statue/fountain{ pixel_y = 16; @@ -65062,7 +66531,7 @@ }, /obj/effect/landmark/start/vip, /turf/simulated/floor/plasteel/dark, -/area/station/service/theatre) +/area/station/service/bar/atrium) "iNL" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -65102,7 +66571,7 @@ /turf/simulated/floor/grass, /area/station/science/lobby) "iOp" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "iOs" = ( @@ -65421,6 +66890,7 @@ /obj/machinery/atmospherics/unary/portables_connector{ dir = 1 }, +/obj/machinery/alarm/directional/south, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -65469,14 +66939,14 @@ /turf/simulated/floor/plating, /area/station/security/evidence) "iTC" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "iTG" = ( /turf/simulated/wall, -/area/station/security/storage) +/area/station/security/restroom) "iTK" = ( /obj/effect/spawner/random/trash, /obj/effect/spawner/random/trash, @@ -65486,6 +66956,7 @@ /obj/machinery/economy/vending/tool/free, /obj/effect/turf_decal/delivery, /obj/machinery/light/directional/east, +/obj/machinery/requests_console/directional/east, /turf/simulated/floor/plasteel, /area/station/engineering/control) "iUO" = ( @@ -65543,14 +67014,27 @@ /area/station/maintenance/fore) "iUX" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed{ - pixel_x = 2; - pixel_y = 2 +/obj/item/clipboard{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/toy/figure/crew/janitor{ + pixel_x = -6; + pixel_y = 4 }, -/obj/item/clipboard, -/obj/item/toy/figure/crew/janitor, /obj/machinery/light/small/directional/north, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -6; + pixel_y = -2 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "purple" @@ -65601,12 +67085,30 @@ /area/station/engineering/controlroom) "iVI" = ( /obj/structure/table/reinforced, -/obj/item/stack/cable_coil, -/obj/item/airlock_electronics, -/obj/item/airlock_electronics, /obj/effect/turf_decal/delivery/hollow, -/obj/item/airlock_electronics, -/obj/machinery/light_switch/south, +/obj/machinery/light/directional/south, +/obj/item/stack/cable_coil{ + pixel_x = 14; + pixel_y = 6 + }, +/obj/item/stack/cable_coil{ + pixel_x = 14 + }, +/obj/item/airlock_electronics{ + pixel_x = -16; + pixel_y = 8 + }, +/obj/item/airlock_electronics{ + pixel_x = -16; + pixel_y = 4 + }, +/obj/item/airlock_electronics{ + pixel_x = -16 + }, +/obj/item/lightreplacer{ + pixel_x = 2; + pixel_y = 6 + }, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "iVJ" = ( @@ -65678,7 +67180,6 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/machinery/light_switch/west, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ @@ -65725,6 +67226,29 @@ /turf/simulated/floor/grass, /area/station/service/hydroponics) "iXz" = ( +/obj/structure/shelf/security, +/obj/item/folder/red{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/folder/red{ + pixel_y = -6 + }, +/obj/item/folder/red{ + pixel_x = 8; + pixel_y = -6 + }, +/obj/item/folder/red{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/folder/red{ + pixel_y = 8 + }, +/obj/item/folder/red{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkblue" @@ -65941,7 +67465,8 @@ /obj/structure/table/reinforced, /obj/item/wrench, /obj/item/reagent_containers/spray/cleaner{ - pixel_x = 5 + pixel_x = 8; + pixel_y = 8 }, /turf/simulated/floor/plasteel{ dir = 10; @@ -65989,7 +67514,7 @@ dir = 1; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "jck" = ( /obj/machinery/economy/vending/cigarette, /turf/simulated/floor/plasteel{ @@ -66050,6 +67575,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb2, /obj/effect/spawner/random/trash, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "neutral" @@ -66072,6 +67598,11 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/wood/cherry, /area/station/service/chapel/office) "jep" = ( @@ -66113,7 +67644,7 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, -/area/station/maintenance/starboard) +/area/station/public/toilet) "jeJ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/unary/portables_connector{ @@ -66125,16 +67656,14 @@ /turf/simulated/floor/plasteel/dark, /area/station/science/toxins/mixing) "jeM" = ( -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/effect/turf_decal/delivery/red/hollow, /obj/item/gun/energy/gun{ - pixel_x = 2 - }, -/obj/item/gun/energy/gun{ - pixel_x = 4 + pixel_y = 8 }, +/obj/item/gun/energy/gun, /obj/item/gun/energy/gun{ - pixel_x = 6 + pixel_y = -8 }, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) @@ -66225,7 +67754,7 @@ dir = 4; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "jfV" = ( /obj/structure/closet/secure_closet/miner, /obj/effect/turf_decal/delivery/hollow, @@ -66256,6 +67785,11 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ icon_state = "red" }, @@ -66359,6 +67893,12 @@ icon_state = "darkred" }, /area/station/security/warden) +"jhx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/fsmaint) "jhz" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4 @@ -66417,17 +67957,19 @@ "jhM" = ( /obj/structure/table/glass, /obj/item/stack/packageWrap{ - pixel_y = 2 + pixel_y = 10; + pixel_x = 16 }, /obj/item/reagent_scanner/adv{ - pixel_x = -4; - pixel_y = 6 + pixel_x = -6; + pixel_y = 12 }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 5 +/obj/item/reagent_scanner/adv{ + pixel_x = -6; + pixel_y = 6 }, -/obj/item/reagent_containers/applicator{ - pixel_y = 4; +/obj/item/stack/packageWrap{ + pixel_y = 6; pixel_x = 16 }, /turf/simulated/floor/plasteel{ @@ -66452,6 +67994,7 @@ }, /obj/structure/closet/secure_closet/engineering_welding, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "jit" = ( @@ -66544,20 +68087,28 @@ /turf/simulated/floor/engine, /area/station/science/misc_lab) "jjf" = ( -/obj/structure/table, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -5; - pixel_y = 10 +/obj/structure/shelf/medbay, +/obj/item/storage/belt/medical{ + pixel_y = -6; + pixel_x = -8 }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 5; - pixel_y = 10 +/obj/item/storage/belt/medical{ + pixel_y = -6 }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = -5 +/obj/item/storage/belt/medical{ + pixel_y = -6; + pixel_x = 8 }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 5 +/obj/item/storage/belt/medical{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/storage/belt/medical{ + pixel_y = 8 + }, +/obj/item/storage/belt/medical{ + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" @@ -66650,31 +68201,32 @@ }, /area/station/medical/break_room) "jkk" = ( -/obj/structure/rack, +/obj/structure/shelf/science, /obj/item/transfer_valve{ - pixel_x = 4; - pixel_y = -4 + pixel_x = -6; + pixel_y = 6 }, -/obj/item/transfer_valve{ - pixel_x = 2; - pixel_y = -2 +/obj/effect/decal/cleanable/dirt, +/obj/structure/disaster_counter/toxins{ + pixel_y = 32 }, -/obj/item/transfer_valve, /obj/item/transfer_valve{ - pixel_x = -2; - pixel_y = 2 + pixel_y = 6 }, /obj/item/transfer_valve{ - pixel_x = -4; - pixel_y = 4 + pixel_x = 6; + pixel_y = 6 }, /obj/item/transfer_valve{ pixel_x = -6; - pixel_y = 6 + pixel_y = -4 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disaster_counter/toxins{ - pixel_y = 32 +/obj/item/transfer_valve{ + pixel_y = -4 + }, +/obj/item/transfer_valve{ + pixel_x = 6; + pixel_y = -4 }, /turf/simulated/floor/plasteel, /area/station/science/toxins/mixing) @@ -66739,6 +68291,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/wood/cherry, /area/station/service/chapel/office) "jkM" = ( @@ -66755,6 +68312,11 @@ /obj/effect/turf_decal/delivery, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, +/obj/machinery/access_button/north{ + autolink_id = "enginen_btn_ext"; + name = "exterior access button"; + req_access = list(10,13) + }, /turf/simulated/floor/plasteel, /area/station/engineering/control) "jkP" = ( @@ -67028,10 +68590,9 @@ }, /area/station/maintenance/port) "jpn" = ( -/obj/effect/spawner/random/officetoys, /obj/item/coin/silver{ - pixel_y = 5; - pixel_x = 3 + pixel_y = 6; + pixel_x = -6 }, /obj/structure/table/wood, /obj/structure/cable{ @@ -67039,6 +68600,11 @@ d2 = 2; icon_state = "1-2" }, +/obj/item/destTagger{ + pixel_x = 11; + pixel_y = 6 + }, +/obj/effect/spawner/random/officetoys, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purple" @@ -67099,6 +68665,7 @@ "jqb" = ( /obj/machinery/computer/scan_consolenew, /obj/item/radio/intercom/directional/north, +/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -67111,6 +68678,7 @@ /area/station/maintenance/starboard) "jql" = ( /obj/machinery/dye_generator, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ icon_state = "barber" }, @@ -67188,6 +68756,7 @@ /obj/item/book/manual/wiki/security_space_law{ pixel_x = -6 }, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/security/interrogation) "jrg" = ( @@ -67234,6 +68803,7 @@ /area/station/security/brig) "jrU" = ( /obj/structure/closet, +/obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/cardboard{ amount = 25 }, @@ -67241,7 +68811,6 @@ pixel_x = 4; pixel_y = 4 }, -/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "brown" @@ -67284,7 +68853,7 @@ dir = 10; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "jsK" = ( /obj/structure/cable{ d1 = 1; @@ -67465,13 +69034,13 @@ id = "iaashutters"; name = "IAA Privacy Shutter Control"; pixel_y = -6; - req_one_access_txt = "38" + req_access = list(38) }, /obj/machinery/button/windowtint/west{ id = "iaa"; pixel_y = 6; range = 10; - req_one_access_txt = "38" + req_access = list(38) }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 8 @@ -67480,9 +69049,6 @@ /area/station/legal/lawoffice) "jvu" = ( /obj/machinery/firealarm/directional/west, -/obj/machinery/light_switch/north{ - pixel_x = -6 - }, /obj/structure/table/wood, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -67505,12 +69071,13 @@ /area/station/maintenance/fore2) "jvM" = ( /obj/machinery/economy/vending/coffee, -/obj/structure/sign/poster/official/random/north, +/obj/structure/sign/poster/official/random/west, +/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "jvO" = ( /obj/structure/cable{ d1 = 1; @@ -67588,7 +69155,6 @@ "jwT" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/crew/bartender, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -67743,7 +69309,6 @@ }, /area/station/medical/virology/lab) "jzI" = ( -/obj/machinery/light/directional/east, /obj/structure/sign/fire{ pixel_x = 32 }, @@ -68041,6 +69606,23 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/station/maintenance/old_kitchen) +"jEw" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id_tag = "Kitchen Dinner Windows"; + name = "Kitchen Shutters" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/classic/normal{ + dir = 8; + name = "Kitchen Desk" + }, +/obj/effect/mapping_helpers/airlock/windoor/access/any/service/kitchen{ + dir = 8 + }, +/obj/effect/spawner/random/snacks, +/turf/simulated/floor/plating, +/area/station/service/kitchen) "jED" = ( /obj/structure/table/wood, /obj/machinery/status_display/directional/north, @@ -68122,7 +69704,7 @@ dir = 4; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "jGf" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -68134,7 +69716,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredfull" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "jGH" = ( /obj/structure/chair/wood{ dir = 4 @@ -68143,7 +69725,7 @@ dir = 8; icon_state = "chapel" }, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "jGT" = ( /obj/effect/spawner/random/trash, /obj/effect/decal/cleanable/dirt, @@ -68160,7 +69742,7 @@ /turf/simulated/floor/engine/vacuum, /area/station/engineering/atmos) "jHd" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -68221,23 +69803,17 @@ /area/station/medical/medbay2) "jIf" = ( /obj/structure/table/glass, -/obj/item/reagent_containers/dropper{ - pixel_y = -5 +/obj/structure/window/reinforced{ + dir = 4 }, -/obj/item/reagent_containers/dropper/precision{ - pixel_y = 3; - pixel_x = -12 +/obj/item/reagent_containers/applicator{ + pixel_y = 4; + pixel_x = -6 }, /obj/item/lighter/zippo{ name = "Ash Generator 3000"; pixel_x = 8; - pixel_y = 7 - }, -/obj/item/reagent_containers/dropper{ - pixel_y = -1 - }, -/obj/structure/window/reinforced{ - dir = 4 + pixel_y = 6 }, /turf/simulated/floor/plasteel{ icon_state = "whiteyellowfull" @@ -68289,7 +69865,7 @@ dir = 4 }, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "jJj" = ( /obj/machinery/atmospherics/portable/pump, /obj/effect/decal/cleanable/dirt, @@ -68312,7 +69888,7 @@ pixel_x = -26; pixel_y = 6; vent_link_id = "escape_vent"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/turf_decal/delivery, /obj/machinery/light/small/directional/east, @@ -68467,7 +70043,7 @@ /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/security/general, /turf/simulated/floor/plasteel/dark, -/area/station/security/brig) +/area/station/security/lobby) "jKL" = ( /obj/structure/cable{ d1 = 4; @@ -68553,7 +70129,6 @@ /obj/structure/closet/radiation, /obj/effect/turf_decal/delivery/hollow, /obj/item/radio/intercom/directional/north, -/obj/item/clothing/glasses/meson, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "jMx" = ( @@ -68580,6 +70155,7 @@ /obj/structure/cable, /obj/machinery/power/apc/directional/south, /obj/effect/decal/cleanable/dirt, +/obj/item/flag/cargo, /turf/simulated/floor/plasteel{ icon_state = "brown" }, @@ -68587,7 +70163,6 @@ "jNg" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/secure_closet/personal, -/obj/machinery/alarm/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -68631,7 +70206,9 @@ "jOf" = ( /obj/structure/sign/poster/official/random/south, /obj/structure/rack, -/obj/item/storage/secure/briefcase, +/obj/item/storage/secure/briefcase{ + pixel_y = 2 + }, /obj/effect/turf_decal/siding/wood{ dir = 10 }, @@ -68665,7 +70242,7 @@ icon_state = "0-2" }, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "jOr" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -68687,7 +70264,7 @@ /obj/machinery/turretid/stun{ name = "AI Upload Turret Control"; pixel_y = 8; - req_one_access_txt = "75" + req_access = list(75) }, /turf/simulated/wall, /area/station/turret_protected/ai_upload) @@ -68791,7 +70368,7 @@ dir = 8; icon_state = "darkredcorners" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "jRf" = ( /obj/machinery/light/small/directional/east, /obj/effect/decal/cleanable/dirt, @@ -68828,22 +70405,28 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/item/stamp/granted{ - pixel_x = 3; +/obj/structure/shelf/supply, +/obj/item/stack/packageWrap{ + pixel_x = -6; pixel_y = -4 }, -/obj/structure/table, -/obj/item/stamp/granted{ - pixel_x = -4; - pixel_y = 4 +/obj/item/stack/packageWrap{ + pixel_y = -4 }, -/obj/item/stamp/denied{ - pixel_x = 4; - pixel_y = 6 +/obj/item/stack/packageWrap{ + pixel_y = -4; + pixel_x = 6 }, -/obj/item/stamp/denied{ +/obj/item/stack/packageWrap{ pixel_x = -6; - pixel_y = -2 + pixel_y = 8 + }, +/obj/item/stack/packageWrap{ + pixel_y = 8 + }, +/obj/item/stack/packageWrap{ + pixel_y = 8; + pixel_x = 6 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -68985,20 +70568,56 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/shelf/supply, +/obj/item/storage/box{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/storage/box{ + pixel_y = -4 + }, +/obj/item/storage/box{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/storage/box{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/storage/box{ + pixel_y = 8 + }, +/obj/item/storage/box{ + pixel_y = 8; + pixel_x = 8 + }, /turf/simulated/floor/plasteel, /area/station/maintenance/disposal/west) "jTj" = ( -/obj/structure/closet, -/obj/item/storage/box/masks, -/obj/item/storage/box/gloves, -/obj/item/storage/box/bodybags, +/obj/structure/reagent_dispensers/fueltank/chem/south, +/obj/structure/shelf/science, +/obj/item/storage/box/gloves{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/storage/box/bodybags{ + pixel_y = -6 + }, +/obj/item/storage/box/masks{ + pixel_x = 8; + pixel_y = -6 + }, +/obj/item/clothing/mask/breath/medical{ + pixel_x = -8; + pixel_y = 6 + }, /obj/item/roller{ - pixel_y = 10; - pixel_x = -4 + pixel_y = 14 + }, +/obj/item/tank/internals/anesthetic{ + pixel_x = 8; + pixel_y = 6 }, -/obj/structure/reagent_dispensers/fueltank/chem/south, -/obj/item/tank/internals/anesthetic, -/obj/item/clothing/mask/breath/medical, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whiteblue" @@ -69154,7 +70773,6 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/firealarm/directional/west, /obj/structure/table, /obj/item/clothing/under/towel/short/alt, /obj/item/clothing/under/towel/short{ @@ -69166,6 +70784,7 @@ /obj/item/clothing/head/towel{ pixel_y = 10 }, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel/freezer, /area/station/public/pool) "jVi" = ( @@ -69224,7 +70843,7 @@ dir = 10; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "jWj" = ( /obj/structure/chair/stool{ dir = 1 @@ -69259,15 +70878,15 @@ /area/station/hallway/secondary/entry) "jWA" = ( /obj/structure/table/reinforced, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs{ - pixel_y = 3 - }, /obj/item/restraints/handcuffs{ pixel_y = 6 }, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/light/small/directional/north, +/obj/item/restraints/handcuffs{ + pixel_y = 3 + }, +/obj/item/restraints/handcuffs, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "red" @@ -69311,7 +70930,7 @@ /turf/simulated/floor/plasteel{ icon_state = "greencorner" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "jXH" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -69346,7 +70965,7 @@ dir = 4; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "jYB" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -69470,7 +71089,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredfull" }, -/area/station/security/brig) +/area/station/security/lobby) "kap" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -69505,7 +71124,7 @@ pixel_y = -22 }, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "kaN" = ( /obj/structure/cable{ d1 = 4; @@ -69533,8 +71152,7 @@ dir = 1 }, /obj/item/storage/box/donkpockets{ - pixel_x = 7; - pixel_y = 10 + pixel_y = 2 }, /turf/simulated/floor/plasteel{ icon_state = "yellow" @@ -69619,6 +71237,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/wood/cherry, /area/station/service/chapel/office) "kbP" = ( @@ -69707,7 +71330,7 @@ /obj/machinery/access_button/east{ autolink_id = "escape_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -69724,12 +71347,12 @@ /obj/machinery/newscaster/directional/south, /obj/effect/landmark/start/bar, /turf/simulated/floor/plasteel/dark, -/area/station/service/theatre) +/area/station/service/bar/atrium) "kdu" = ( /obj/structure/chair/sofa/right, /obj/effect/landmark/start/assistant, /turf/simulated/floor/plasteel/dark, -/area/station/service/theatre) +/area/station/service/bar/atrium) "kdF" = ( /obj/effect/landmark/start/mime, /obj/machinery/atmospherics/unary/vent_scrubber/on, @@ -69784,10 +71407,8 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/table, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, -/obj/item/destTagger{ - pixel_x = -4 +/obj/item/stack/packageWrap{ + pixel_y = 8 }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -69795,6 +71416,7 @@ d2 = 8; icon_state = "2-8" }, +/obj/item/hand_labeler, /turf/simulated/floor/plasteel, /area/station/maintenance/disposal/west) "kep" = ( @@ -69872,7 +71494,7 @@ }, /area/station/science/storage) "kfl" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall/r_wall, /area/station/maintenance/starboard2) "kfm" = ( @@ -70093,14 +71715,20 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/mapping_helpers/airlock/windoor/access/any/supply/mule_bot{ + dir = 8 + }, /turf/simulated/floor/plasteel, /area/station/supply/office) "kiB" = ( -/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple" + icon_state = "hydrofloor" }, -/area/station/science/lobby) +/area/station/public/toilet) "kiP" = ( /obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, @@ -70193,10 +71821,6 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, /obj/machinery/door/firedoor, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, @@ -70249,7 +71873,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plasteel, -/area/station/engineering/control) +/area/station/engineering/break_room) "kkR" = ( /obj/machinery/hydroponics/constructable, /obj/effect/turf_decal/delivery/hollow, @@ -70295,7 +71919,7 @@ /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "klA" = ( /obj/effect/turf_decal/stripes/white/line{ color = "lightblue" @@ -70315,6 +71939,22 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, +/obj/structure/shelf/medbay, +/obj/item/storage/box/bodybags{ + pixel_y = -6; + pixel_x = -8 + }, +/obj/item/storage/box/bodybags{ + pixel_y = -6 + }, +/obj/item/storage/box/bodybags{ + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/storage/box/gloves{ + pixel_y = 8; + pixel_x = -8 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkblue" @@ -70346,7 +71986,7 @@ }, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "kno" = ( /obj/machinery/light/small/directional/east, /obj/structure/grille, @@ -70359,7 +71999,7 @@ dir = 8; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "knM" = ( /obj/docking_port/stationary{ dir = 8; @@ -70392,7 +72032,7 @@ icon_state = "0-8" }, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "knV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -70416,6 +72056,11 @@ icon_state = "darkredcorners" }, /area/station/security/warden) +"knX" = ( +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/storage, +/turf/simulated/floor/plating, +/area/station/maintenance/port) "knY" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass, @@ -70518,7 +72163,7 @@ /area/station/public/pool) "kqa" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/old_kitchen) "kqo" = ( @@ -70555,19 +72200,14 @@ /area/station/medical/morgue) "krp" = ( /obj/structure/rack, -/obj/item/extinguisher, -/obj/item/storage/belt/utility, -/obj/item/storage/toolbox/electrical, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/random/north, /obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 + pixel_y = 8 }, -/obj/item/radio{ - pixel_y = 6 +/obj/item/storage/toolbox/electrical{ + pixel_y = 2 }, -/obj/item/weldingtool/largetank, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random/north, /turf/simulated/floor/plating, /area/station/engineering/mechanic) "krr" = ( @@ -70584,9 +72224,9 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; + d1 = 2; d2 = 8; - icon_state = "4-8" + icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -70594,11 +72234,16 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "krD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -70674,7 +72319,7 @@ /turf/simulated/floor/plasteel{ icon_state = "chapel" }, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "ktm" = ( /obj/structure/cable{ d1 = 4; @@ -70716,20 +72361,8 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/old_kitchen) "kur" = ( -/obj/item/kirbyplants, -/obj/effect/turf_decal/delivery/hollow, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/plasteel, -/area/station/engineering/controlroom) +/turf/simulated/wall, +/area/station/engineering/hallway) "kut" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, @@ -70770,11 +72403,11 @@ "kuK" = ( /obj/machinery/atmospherics/pipe/simple/visible/red, /obj/structure/table/reinforced, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 +/obj/item/stack/packageWrap{ + pixel_y = 12 + }, +/obj/item/hand_labeler{ + pixel_y = 2 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -70801,6 +72434,17 @@ }, /turf/simulated/floor/plating, /area/station/legal/courtroom) +"kvm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "cautioncorner" + }, +/area/station/hallway/primary/port) "kvx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -70856,13 +72500,16 @@ }, /area/station/maintenance/abandoned_garden) "kwr" = ( -/obj/machinery/cryopod/right, -/obj/machinery/light/directional/west, +/obj/effect/turf_decal/stripes/white/line{ + dir = 10; + color = "lightblue" + }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitegreencorner" + dir = 5; + icon_state = "darkblue" }, -/area/station/public/sleep) +/area/station/medical/morgue) "kwv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -70907,6 +72554,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/carpet/black, /area/station/service/chapel) "kwO" = ( @@ -71131,11 +72781,12 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/old_kitchen) "kAy" = ( -/obj/structure/table/wood, -/obj/item/kitchen/utensil/fork, -/obj/item/kitchen/utensil/spoon, -/turf/simulated/floor/carpet/orange, -/area/station/service/theatre) +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4 + }, +/obj/effect/spawner/window/reinforced/grilled, +/turf/simulated/floor/plating, +/area/station/engineering/atmos/distribution) "kAG" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/atmos/glass, @@ -71401,37 +73052,33 @@ /turf/simulated/floor/plasteel/dark, /area/station/command/office/hos) "kFL" = ( -/obj/structure/table, -/obj/item/tank/internals/emergency_oxygen/nitrogen{ - pixel_x = 6; - pixel_y = -2 - }, -/obj/item/tank/internals/emergency_oxygen/nitrogen{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/item/tank/internals/emergency_oxygen/nitrogen{ - layer = 3.1; - pixel_x = 6; - pixel_y = 10 +/obj/machinery/camera{ + c_tag = "Medbay Storage"; + network = list("Medbay","SS13"); + dir = 4 }, +/obj/structure/shelf/medbay, /obj/item/tank/internals/emergency_oxygen/plasma{ - pixel_x = -6; - pixel_y = -2 + pixel_y = -6; + pixel_x = -8 }, /obj/item/tank/internals/emergency_oxygen/plasma{ - pixel_x = -6; - pixel_y = 4 + pixel_y = -6 }, /obj/item/tank/internals/emergency_oxygen/plasma{ - layer = 3.1; - pixel_x = -6; - pixel_y = 10 + pixel_y = -6; + pixel_x = 8 }, -/obj/machinery/camera{ - c_tag = "Medbay Storage"; - network = list("Medbay","SS13"); - dir = 4 +/obj/item/tank/internals/emergency_oxygen/nitrogen{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/tank/internals/emergency_oxygen/nitrogen{ + pixel_y = 8 + }, +/obj/item/tank/internals/emergency_oxygen/nitrogen{ + pixel_y = 8; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -71612,9 +73259,9 @@ /obj/machinery/door_control/shutter/north{ id = "janitorshutters"; name = "Janitor Shutters Control"; - req_access_txt = "26"; pixel_y = 0; - pixel_x = 24 + pixel_x = 24; + req_access = list(26) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -71658,7 +73305,7 @@ /obj/effect/turf_decal/stripes/line, /obj/item/radio/intercom/directional/south, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "kIt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood/fancy/oak, @@ -71915,7 +73562,7 @@ }, /obj/item/radio/intercom/directional/east, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "kNn" = ( /obj/machinery/door/poddoor{ density = 0; @@ -72137,6 +73784,7 @@ "kQt" = ( /obj/structure/table, /obj/item/toy/figure/crew/scientist, +/obj/item/radio/intercom/directional/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whitepurple" @@ -72169,24 +73817,20 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" }, /area/station/maintenance/fore) "kRr" = ( -/obj/structure/table/glass, -/obj/item/storage/box/disks{ - pixel_y = 4 - }, /obj/structure/extinguisher_cabinet/directional/north, /obj/machinery/camera{ c_tag = "Medbay Genetics"; network = list("Medbay","SS13") }, -/obj/machinery/light/directional/north, /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/shelf/medbay, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -72236,6 +73880,9 @@ /area/station/engineering/atmos/control) "kSr" = ( /obj/machinery/light/directional/east, +/obj/machinery/mecha_part_fabricator/station{ + dir = 8 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "kSu" = ( @@ -72244,11 +73891,12 @@ /area/station/service/kitchen) "kSQ" = ( /obj/structure/sink/directional/east, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "kSW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel/dark, @@ -72315,11 +73963,12 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "kUe" = ( /obj/effect/turf_decal/delivery, /obj/item/radio/intercom/directional/east, @@ -72481,7 +74130,6 @@ /obj/structure/chair{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -72490,6 +74138,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet, /area/station/security/permabrig) "kWx" = ( @@ -72562,21 +74211,15 @@ /area/station/service/library) "kXM" = ( /obj/structure/table/glass, -/obj/item/stack/packageWrap{ - pixel_y = 2 - }, -/obj/item/reagent_scanner/adv{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 5 - }, -/obj/item/reagent_containers/applicator{ +/obj/machinery/light/directional/north, +/obj/item/paper_bin{ pixel_y = 4; - pixel_x = 16 + pixel_x = -4 + }, +/obj/item/pen{ + pixel_y = 2; + pixel_x = 8 }, -/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ icon_state = "whiteyellowfull" }, @@ -72625,7 +74268,7 @@ "kZc" = ( /obj/effect/turf_decal/stripes/line, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "kZe" = ( /obj/structure/closet/secure_closet/medical2, /obj/machinery/power/apc/directional/south, @@ -72672,7 +74315,7 @@ dir = 6; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "lai" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10; @@ -72682,7 +74325,6 @@ dir = 8 }, /obj/effect/landmark/spawner/rev, -/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkblue" @@ -72695,7 +74337,6 @@ /obj/structure/closet/secure_closet/engineering_electrical, /obj/effect/turf_decal/delivery, /obj/item/radio/intercom/directional/east, -/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "laV" = ( @@ -72704,6 +74345,7 @@ /area/station/maintenance/electrical_shop) "laY" = ( /obj/item/flag/sec, +/obj/structure/sign/poster/official/random/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "red" @@ -72747,7 +74389,7 @@ "lbT" = ( /obj/machinery/newscaster/directional/north, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "lcj" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -72763,7 +74405,7 @@ id = "xenosecure"; name = "Containment Control"; pixel_y = -3; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel/white, @@ -72811,7 +74453,7 @@ icon_state = "1-2" }, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "ldn" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/girder, @@ -72836,15 +74478,19 @@ }, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "ldC" = ( -/obj/effect/turf_decal/delivery/hollow, -/obj/effect/spawner/random/maintenance, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "brown" +/obj/structure/table/wood, +/obj/item/kitchen/utensil/fork{ + pixel_x = 5; + pixel_y = 4 }, -/area/station/supply/storage) +/obj/item/kitchen/utensil/spoon{ + pixel_x = -5; + pixel_y = 4 + }, +/turf/simulated/floor/carpet/orange, +/area/station/service/bar/atrium) "ldQ" = ( /obj/structure/closet/firecloset, /obj/effect/decal/cleanable/dirt, @@ -72903,8 +74549,10 @@ /area/station/science/research) "ley" = ( /obj/machinery/firealarm/directional/south, +/obj/machinery/power/apc/directional/east, +/obj/structure/cable, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "leB" = ( /obj/effect/decal/cleanable/dust, /obj/structure/sign/poster/random/east, @@ -72913,6 +74561,11 @@ }, /turf/simulated/floor/wood/oak, /area/station/service/cafeteria) +"leL" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/service/chapel/funeral) "leM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -72923,7 +74576,7 @@ icon_state = "1-2" }, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "leZ" = ( /turf/simulated/wall/r_wall, /area/station/maintenance/turbine) @@ -72974,7 +74627,7 @@ }, /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "lfi" = ( /obj/structure/table/wood, /turf/simulated/floor/plasteel{ @@ -73015,7 +74668,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 8; @@ -73076,7 +74729,6 @@ /turf/simulated/floor/wood/fancy/cherry, /area/station/public/vacant_store) "lgQ" = ( -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -73170,14 +74822,31 @@ }, /area/station/security/main) "lhR" = ( -/obj/structure/table/reinforced, /obj/machinery/light/directional/west, -/obj/item/reagent_containers/condiment/flour, +/obj/item/radio/intercom/directional/west, +/obj/structure/shelf/service, /obj/item/reagent_containers/condiment/flour{ - pixel_x = 2; - pixel_y = 2 + pixel_y = -4; + pixel_x = -8 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_y = -4 + }, +/obj/item/reagent_containers/condiment/flour{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -8; + pixel_y = 10 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_y = 10 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = 8; + pixel_y = 10 }, -/obj/item/radio/intercom/directional/west, /turf/simulated/floor/plasteel/white, /area/station/service/kitchen) "lik" = ( @@ -73329,7 +74998,7 @@ dir = 6; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "lkh" = ( /obj/structure/filingcabinet/chestdrawer/autopsy, /obj/machinery/status_display/directional/west, @@ -73573,23 +75242,13 @@ }, /area/station/science/xenobiology) "lnO" = ( -/obj/item/stack/rods{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/obj/item/clothing/gloves/color/yellow, /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/item/stack/cable_coil, /obj/machinery/light_switch/north, +/obj/item/storage/belt/utility{ + pixel_y = 8 + }, +/obj/item/clothing/gloves/color/yellow, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" @@ -73660,7 +75319,7 @@ /turf/simulated/floor/carpet/red, /area/station/command/office/hos) "loS" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/old_detective) "lpe" = ( @@ -73880,7 +75539,6 @@ /area/station/medical/surgery/secondary) "lsv" = ( /obj/structure/sign/poster/official/random/south, -/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, @@ -73888,14 +75546,13 @@ "lsz" = ( /obj/structure/table/reinforced, /obj/item/flashlight/lamp{ - pixel_x = 6; - pixel_y = 2 + pixel_y = 6 }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "lsC" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, @@ -73964,7 +75621,7 @@ dir = 1; icon_state = "chapel" }, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "lus" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -73995,7 +75652,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/medmaint) "luU" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -74007,7 +75664,7 @@ /turf/simulated/floor/plasteel{ icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "lvd" = ( /obj/structure/table/reinforced, /obj/structure/extinguisher_cabinet/directional/east, @@ -74157,7 +75814,7 @@ icon_state = "0-8" }, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "lwE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -74169,9 +75826,9 @@ dir = 4 }, /obj/structure/cable{ - d1 = 4; + d1 = 1; d2 = 8; - icon_state = "4-8" + icon_state = "1-8" }, /turf/simulated/floor/plasteel{ dir = 8; @@ -74244,16 +75901,17 @@ /area/station/service/kitchen) "lxJ" = ( /obj/structure/chair/comfy/brown, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" }, /area/station/engineering/break_room) +"lxT" = ( +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/station/maintenance/port) "lxV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -74337,7 +75995,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, -/obj/structure/disposalpipe/junction, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "green" @@ -74361,6 +76018,32 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/wood/fancy/oak, /area/station/legal/courtroom) +"lzD" = ( +/obj/structure/shelf/command, +/obj/item/gps{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/gps{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/gps{ + pixel_y = -4 + }, +/obj/item/radio/alternative{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/stack/cable_coil{ + pixel_y = 8 + }, +/obj/item/radio/alternative{ + pixel_y = 8; + pixel_x = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/station/ai_monitored/storage/eva) "lzG" = ( /obj/item/kirbyplants, /obj/machinery/light/directional/south, @@ -74379,7 +76062,7 @@ dir = 6; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "lzQ" = ( /obj/effect/turf_decal/delivery/hollow, /obj/machinery/recharge_station, @@ -74412,7 +76095,7 @@ dir = 8; icon_state = "redcorner" }, -/area/station/security/storage) +/area/station/security/restroom) "lAG" = ( /obj/effect/decal/cleanable/dirt, /obj/item/flashlight, @@ -74439,7 +76122,7 @@ /turf/simulated/floor/plating, /area/station/engineering/mechanic) "lAU" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/engineering/mechanic) "lBa" = ( @@ -74623,7 +76306,7 @@ /obj/structure/chair/sofa/left, /obj/effect/landmark/start/vip, /turf/simulated/floor/plasteel/dark, -/area/station/service/theatre) +/area/station/service/bar/atrium) "lDq" = ( /obj/effect/decal/cleanable/blood/old, /turf/simulated/floor/plasteel, @@ -74674,11 +76357,16 @@ /area/station/command/meeting_room) "lEd" = ( /obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/pen/multi, -/obj/item/lighter/zippo/hop, +/obj/item/folder/blue{ + pixel_x = 12; + pixel_y = 2 + }, +/obj/item/lighter/zippo/hop{ + pixel_y = 7 + }, /obj/item/storage/box/keys{ - pixel_x = -15 + pixel_x = -16; + pixel_y = 5 }, /obj/effect/turf_decal/siding/wood/oak{ dir = 4 @@ -74778,12 +76466,21 @@ icon_state = "brown" }, /area/station/supply/storage) +"lGa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/station/maintenance/fsmaint) "lGh" = ( /obj/machinery/mass_driver{ id_tag = "chapelgun" }, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "lGl" = ( /obj/machinery/camera{ c_tag = "Research West Hallway"; @@ -74805,7 +76502,7 @@ /obj/machinery/door_control/shutter/north{ id = "paramedic"; name = "Garage Door Control"; - req_access_txt = "66" + req_access = list(66) }, /obj/machinery/door/poddoor/preopen{ id_tag = "Biohazard_medi"; @@ -74821,14 +76518,14 @@ id = "holdingcellprivacy"; name = "Temporary Holding Cell Window Tint Control"; pixel_x = 6; - req_one_access_txt = "63" + req_access = list(63) }, /obj/machinery/button/windowtint/south{ id = "cellprivacy"; name = "Cell Window Tint Control"; pixel_x = -6; range = 10; - req_one_access_txt = "63" + req_access = list(63) }, /turf/simulated/floor/plasteel{ icon_state = "red" @@ -74856,30 +76553,38 @@ /obj/structure/table/reinforced, /obj/structure/extinguisher_cabinet/directional/south, /obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/metal/fifty, +/mob/living/simple_animal/bot/floorbot, +/obj/item/stock_parts/cell/high{ + pixel_y = 8 + }, /turf/simulated/floor/plating, /area/station/engineering/equipmentstorage) "lHz" = ( +/obj/structure/shelf/medbay, /obj/item/storage/box/monkeycubes/wolpincubes{ - pixel_x = -6 + pixel_y = -6; + pixel_x = -8 + }, +/obj/item/storage/box/monkeycubes/stokcubes{ + pixel_y = -6 }, /obj/item/storage/box/monkeycubes/neaeracubes{ - pixel_x = 8 + pixel_x = 8; + pixel_y = -6 + }, +/obj/item/storage/box/monkeycubes{ + pixel_y = 8; + pixel_x = -8 }, /obj/item/storage/box/monkeycubes/farwacubes{ - pixel_x = -6; pixel_y = 8 }, -/obj/item/storage/box/monkeycubes/stokcubes{ - pixel_x = 8; - pixel_y = 8 +/obj/item/storage/box/monkeycubes/nian_worme_cubes{ + pixel_y = 8; + pixel_x = 8 }, -/obj/structure/table/reinforced, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "lHI" = ( /obj/machinery/light/small/directional/north, /obj/structure/reagent_dispensers/fueltank, @@ -74968,8 +76673,14 @@ /area/station/service/kitchen) "lIM" = ( /obj/structure/table/reinforced, -/obj/item/stack/cable_coil/random, -/obj/item/multitool, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/stack/sheet/plasteel/fifteen{ + pixel_x = 4; + pixel_y = 1 + }, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "lIQ" = ( @@ -75011,25 +76722,21 @@ /turf/simulated/floor/wood/oak, /area/station/command/meeting_room) "lJd" = ( -/obj/structure/rack, +/obj/structure/shelf/security, /obj/effect/turf_decal/delivery/red/hollow, -/obj/item/grenade/barrier{ - pixel_x = 5; - pixel_y = 5 +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" }, /obj/item/grenade/barrier{ - pixel_x = 3; - pixel_y = 3 + pixel_x = -6 }, -/obj/item/grenade/barrier, /obj/item/grenade/barrier{ - pixel_x = -3; - pixel_y = -3 + pixel_x = 1 }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +/obj/item/grenade/barrier{ + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -75143,10 +76850,15 @@ /area/station/medical/medbay) "lKW" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/clothing/gloves/color/fyellow{ + pixel_y = -4 + }, +/obj/item/gps{ + pixel_x = -15; + pixel_y = 4 + }, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) "lLj" = ( @@ -75206,7 +76918,7 @@ /area/station/security/permabrig) "lMb" = ( /obj/item/flag/nt, -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkred" @@ -75520,7 +77232,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/medical/virology, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "lPY" = ( /obj/machinery/suit_storage_unit/security/hos/secure, /obj/effect/turf_decal/siding/wood{ @@ -75550,7 +77262,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "lQk" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/structure/door_assembly/door_assembly_atmo, @@ -75665,6 +77377,7 @@ /obj/effect/turf_decal/siding/blue{ dir = 1 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "lSc" = ( @@ -75684,15 +77397,14 @@ "lSB" = ( /obj/structure/table/wood, /obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -7; - pixel_y = 7 + pixel_x = 8; + pixel_y = 8 }, /obj/item/reagent_containers/condiment/peppermill{ - pixel_x = -4; - pixel_y = 2 + pixel_x = 8 }, /turf/simulated/floor/carpet/orange, -/area/station/service/theatre) +/area/station/service/bar/atrium) "lSE" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -75884,12 +77596,16 @@ }, /area/station/medical/virology) "lWn" = ( -/obj/machinery/firealarm/directional/north, +/obj/machinery/power/apc/directional/north, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "lWo" = ( /obj/structure/cable{ d1 = 2; @@ -76164,11 +77880,9 @@ }, /area/station/medical/cloning) "mbB" = ( -/obj/machinery/light_switch/north, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/service/chapel) +/obj/effect/spawner/window/reinforced/grilled, +/turf/simulated/floor/plating, +/area/station/service/chapel/funeral) "mbC" = ( /obj/machinery/suit_storage_unit/cmo/secure, /turf/simulated/floor/plasteel{ @@ -76278,7 +77992,7 @@ }, /obj/structure/cable, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "mdd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, @@ -76398,7 +78112,7 @@ dir = 1; icon_state = "escape" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "mfW" = ( /obj/vehicle/janicart{ dir = 1 @@ -76407,10 +78121,10 @@ /area/station/service/janitor) "mga" = ( /obj/item/kirbyplants, -/obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/siding/wood{ dir = 9 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/wood/fancy, /area/station/public/sleep_male) "mgh" = ( @@ -76430,7 +78144,6 @@ "mgx" = ( /obj/machinery/suit_storage_unit/cmo/sec_storage/secure, /obj/structure/sign/poster/official/random/south, -/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -76442,7 +78155,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "mhu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -76522,6 +78235,13 @@ icon_state = "darkblue" }, /area/station/supply/expedition) +"mih" = ( +/obj/machinery/firealarm/directional/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/station/security/permabrig) "min" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -76557,7 +78277,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -76737,26 +78456,8 @@ }, /area/station/security/interrogation/observation) "mlR" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "Kitchen Dinner Windows"; - name = "Kitchen Shutters" - }, -/obj/machinery/door/firedoor, -/obj/item/food/burrito, -/obj/item/food/burrito{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/machinery/door/window/classic/normal{ - dir = 8; - name = "Kitchen Desk" - }, -/obj/effect/mapping_helpers/airlock/windoor/access/any/service/kitchen{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/station/service/kitchen) +/turf/simulated/wall, +/area/station/engineering/break_room/secondary) "mlS" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 @@ -76818,11 +78519,12 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "mmE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/item/kirbyplants, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" }, -/turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/engineering/hallway) "mmK" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1; @@ -76854,11 +78556,20 @@ icon_state = "1-8" }, /obj/item/folder/red{ - pixel_x = 3 + pixel_x = 7; + pixel_y = 4 + }, +/obj/item/folder/red{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/key/security{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/item/toy/figure/crew/warden{ + pixel_x = -8 }, -/obj/item/folder/red, -/obj/item/key/security, -/obj/item/toy/figure/crew/warden, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkred" @@ -77029,7 +78740,6 @@ /area/station/science/toxins/mixing) "mqn" = ( /obj/machinery/firealarm/directional/east, -/obj/machinery/requests_console/directional/south, /obj/effect/turf_decal/delivery, /obj/structure/closet/wardrobe/engineering_yellow, /turf/simulated/floor/plasteel, @@ -77060,7 +78770,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "mqy" = ( /obj/structure/cable{ d1 = 1; @@ -77127,6 +78837,35 @@ icon_state = "brown" }, /area/station/supply/miningdock) +"mqW" = ( +/obj/structure/shelf/engineering, +/obj/item/stock_parts/matter_bin{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/stock_parts/matter_bin{ + pixel_y = -4 + }, +/obj/item/stock_parts/matter_bin{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/stack/cable_coil/random{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/stock_parts/manipulator{ + pixel_y = 8 + }, +/obj/item/stack/cable_coil/random{ + pixel_x = 8; + pixel_y = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/station/engineering/hallway) "mrg" = ( /obj/machinery/door/poddoor{ density = 0; @@ -77169,6 +78908,19 @@ "mrF" = ( /turf/simulated/wall/r_wall, /area/station/medical/medbay2) +"mrP" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/trash, +/turf/simulated/floor/plating, +/area/station/maintenance/fore) "mrQ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, @@ -77232,22 +78984,20 @@ /area/station/security/armory/secure) "mtt" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/metal{ - amount = 10 - }, -/obj/item/stack/sheet/metal{ - amount = 10 - }, /obj/machinery/newscaster/directional/south, /obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 4 }, /obj/effect/turf_decal/delivery/hollow, /obj/effect/turf_decal/delivery/hollow, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/grenade/gas/oxygen, -/obj/item/grenade/gas/oxygen, +/obj/item/grenade/gas/oxygen{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = -6; + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "mtx" = ( @@ -77330,12 +79080,9 @@ /area/station/hallway/secondary/exit) "muI" = ( /obj/structure/table/glass, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/clothing/glasses/science, /obj/item/assembly/timer{ - pixel_x = 4; - pixel_y = 4 + pixel_x = 8; + pixel_y = 6 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -77347,6 +79094,13 @@ dir = 10 }, /obj/machinery/light/directional/north, +/obj/machinery/light_switch/north, +/obj/machinery/cell_charger{ + pixel_y = 2 + }, +/obj/item/stock_parts/cell/high{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -77417,7 +79171,7 @@ dir = 8; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "mwz" = ( /obj/structure/table/wood, /obj/machinery/recharger, @@ -77425,14 +79179,13 @@ /turf/simulated/floor/plating, /area/station/maintenance/old_kitchen) "mwK" = ( -/obj/machinery/power/apc/directional/west, -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, /obj/item/kirbyplants, -/turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/obj/item/radio/intercom/directional/north, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "vault" + }, +/area/station/engineering/atmos) "mxd" = ( /obj/machinery/door/poddoor/preopen{ id_tag = "Secure Gate"; @@ -77653,17 +79406,16 @@ /area/station/service/library) "mzE" = ( /obj/structure/table/reinforced, -/obj/item/food/meat, -/obj/item/food/meat{ - pixel_x = 4 - }, /obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -7; - pixel_y = 7 + pixel_x = -8; + pixel_y = 8 }, /obj/item/reagent_containers/condiment/peppermill{ - pixel_x = -4; - pixel_y = 2 + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_y = 4 }, /turf/simulated/floor/plasteel{ icon_state = "redfull" @@ -77841,9 +79593,9 @@ ext_door_link_id = "assolar_door_ext"; int_button_link_id = "assolar_btn_int"; int_door_link_id = "assolar_door_int"; - req_access_txt = "13"; vent_link_id = "assolar_vent"; - pixel_x = -25 + pixel_x = -25; + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "assolar_vent"; @@ -77869,10 +79621,20 @@ dir = 8 }, /obj/structure/table/reinforced, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/bag/bio, +/obj/item/storage/box/monkeycubes{ + pixel_x = -4; + pixel_y = 5 + }, /obj/machinery/ai_status_display/north, /obj/effect/turf_decal/delivery/hollow, +/obj/item/storage/bag/bio{ + pixel_x = 14; + pixel_y = 8 + }, +/obj/item/reagent_containers/dropper{ + pixel_x = 8; + pixel_y = -4 + }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) "mDm" = ( @@ -77943,6 +79705,11 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/disposal/east) +"mEH" = ( +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random, +/turf/simulated/floor/plating, +/area/station/maintenance/fore) "mEV" = ( /obj/machinery/light/directional/east, /obj/structure/closet/walllocker/medlocker/east, @@ -77957,7 +79724,7 @@ dir = 6; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "mFi" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/reagent_dispensers/watertank/high, @@ -78035,7 +79802,7 @@ pixel_y = 2 }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "mHK" = ( /obj/structure/disposalpipe/segment/corner{ dir = 4 @@ -78096,12 +79863,21 @@ /obj/machinery/access_button/west{ autolink_id = "perma_btn_ext"; name = "Prison Wing Access Button"; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/simulated/floor/plating, /area/station/security/permabrig) +"mIs" = ( +/obj/machinery/atmospherics/unary/thermomachine/freezer{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/engineering/atmos/distribution) "mIK" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -78109,10 +79885,9 @@ }, /area/station/medical/patients_rooms) "mIZ" = ( -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/station/command/bridge/checkpoint/south) +/obj/structure/table/wood, +/turf/simulated/floor/carpet/black, +/area/station/service/chapel/funeral) "mJn" = ( /obj/structure/window/reinforced{ dir = 8 @@ -78192,7 +79967,7 @@ dir = 6; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "mKU" = ( /obj/machinery/light/directional/west, /turf/simulated/floor/plasteel{ @@ -78225,7 +80000,7 @@ /area/station/maintenance/apmaint) "mMc" = ( /obj/effect/decal/cleanable/dust, -/obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "vault"; dir = 9 @@ -78261,13 +80036,6 @@ /area/station/engineering/control) "mMM" = ( /obj/machinery/computer/atmoscontrol, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -78282,14 +80050,17 @@ }, /area/station/science/genetics) "mNb" = ( -/obj/item/wrench, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = -5; - pixel_y = 5 +/obj/item/clothing/glasses/welding{ + pixel_x = -2; + pixel_y = -2 }, -/obj/item/stack/sheet/metal/fifty, -/obj/item/clothing/glasses/welding, /obj/structure/table, +/obj/item/stack/packageWrap{ + pixel_y = 12 + }, +/obj/item/wrench{ + pixel_y = 12 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -78327,7 +80098,6 @@ /area/station/science/toxins/mixing) "mNS" = ( /obj/structure/sign/poster/contraband/random/west, -/obj/machinery/light/directional/west, /obj/effect/turf_decal/siding/blue{ dir = 8 }, @@ -78405,12 +80175,13 @@ /turf/simulated/floor/plating, /area/station/engineering/controlroom) "mPR" = ( -/obj/machinery/firealarm/directional/south, /obj/item/kirbyplants, /obj/effect/turf_decal/siding/white{ dir = 10 }, /obj/machinery/light/small/directional/south, +/obj/machinery/light_switch/south, +/obj/machinery/firealarm/directional/west, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -78461,6 +80232,7 @@ }, /obj/effect/turf_decal/delivery/blue, /obj/machinery/alarm/directional/north, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whiteblue" @@ -78468,12 +80240,12 @@ /area/station/medical/storage/secondary) "mQE" = ( /obj/machinery/economy/vending/snack, -/obj/machinery/economy/vending/wallmed/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "mQK" = ( /obj/machinery/door/airlock/external{ id_tag = "fssolar_door_int"; @@ -78491,7 +80263,7 @@ /obj/machinery/access_button/north{ autolink_id = "fssolar_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -78536,7 +80308,7 @@ name = "Turbine Access Console"; pixel_x = 8; pixel_y = -26; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/ignition_switch{ id = "Incinerator"; @@ -78548,7 +80320,7 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -36; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control/shutter/south{ id = "auxincineratorvent"; @@ -78597,6 +80369,13 @@ icon_state = "vault" }, /area/station/science/storage) +"mRw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/effect/spawner/window/reinforced/grilled, +/turf/simulated/floor/plating, +/area/station/engineering/atmos/distribution) "mRz" = ( /obj/structure/window/reinforced{ dir = 8 @@ -78651,6 +80430,19 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/central) +"mSb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/station/security/restroom) "mSn" = ( /obj/effect/turf_decal/arrows/black{ dir = 4 @@ -78834,7 +80626,7 @@ /obj/item/book/random, /obj/machinery/computer/security/telescreen/entertainment/directional/west, /turf/simulated/floor/carpet, -/area/station/service/theatre) +/area/station/service/bar/atrium) "mUs" = ( /obj/structure/table/reinforced, /obj/item/shard, @@ -78988,6 +80780,9 @@ cover_color = "#68452a"; dir = 1 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "green" }, @@ -79024,6 +80819,7 @@ "mYH" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/boxinggloves, +/obj/machinery/firealarm/directional/east, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "caution" @@ -79173,7 +80969,7 @@ dir = 9; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "nag" = ( /obj/machinery/door/airlock/research, /obj/effect/mapping_helpers/airlock/autoname, @@ -79193,6 +80989,24 @@ }, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) +"nah" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/machinery/cell_charger{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/stock_parts/cell/high{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/station/science/rnd) "nan" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, @@ -79231,7 +81045,9 @@ "naE" = ( /obj/structure/table/glass, /obj/machinery/reagentgrinder{ - pixel_y = 10 + pixel_y = 10; + pixel_x = 6; + layer = 3.1 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -79267,7 +81083,7 @@ /obj/machinery/access_button/south{ autolink_id = "fssolar_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -79333,7 +81149,7 @@ layer = 3.6; autolink_id = "virolab_btn_ext"; name = "Virology Lab Access Button"; - req_access_txt = "39" + req_access = list(39) }, /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -79440,7 +81256,7 @@ dir = 4; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "ndH" = ( /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/mouse/gray, @@ -79449,27 +81265,25 @@ }, /area/station/maintenance/old_kitchen) "ndS" = ( -/obj/structure/rack, +/obj/structure/shelf/security, /obj/effect/turf_decal/delivery/red/hollow, -/obj/item/clothing/accessory/holster{ - pixel_x = -6; - pixel_y = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, +/obj/item/clothing/accessory/holster, /obj/item/clothing/accessory/holster{ - pixel_x = -3; - pixel_y = 3 + pixel_x = 8; + pixel_y = 12 }, /obj/item/clothing/accessory/holster{ - pixel_x = 3; - pixel_y = -3 + pixel_x = -8; + pixel_y = 12 }, /obj/item/clothing/accessory/holster{ - pixel_x = 6; - pixel_y = -6 + pixel_x = 8 }, -/obj/item/clothing/accessory/holster, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/item/clothing/accessory/holster{ + pixel_x = -8 }, /turf/simulated/floor/plasteel{ dir = 9; @@ -79568,6 +81382,7 @@ /obj/machinery/atmospherics/portable/canister/air, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/firealarm/directional/east, /turf/simulated/floor/plasteel, /area/station/engineering/atmos/control) "nfF" = ( @@ -79693,7 +81508,7 @@ "ngU" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal, /turf/simulated/wall/r_wall, -/area/station/engineering/break_room) +/area/station/engineering/atmos/distribution) "ngW" = ( /obj/structure/bed{ dir = 1 @@ -79748,7 +81563,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "nhk" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -79795,9 +81610,6 @@ /obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/delivery/hollow, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/north{ - pixel_x = 8 - }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -79856,7 +81668,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -79943,7 +81755,7 @@ }, /obj/machinery/light/directional/south, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "nls" = ( /obj/machinery/atmospherics/binary/pump{ name = "Port to Turbine" @@ -79999,7 +81811,6 @@ /area/station/engineering/control) "nmj" = ( /obj/machinery/chem_dispenser, -/obj/item/reagent_containers/glass/beaker/large, /obj/structure/reagent_dispensers/fueltank/chem/west, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/engine, @@ -80035,14 +81846,15 @@ /obj/machinery/button/windowtint/east{ id = "HoS"; pixel_y = 6; - req_one_access_txt = "58" + req_access = list(58) }, /obj/machinery/door_control/normal/east{ id = "hosofficedoor"; name = "Office Door"; - req_one_access_txt = "58"; + req_access = list(58); pixel_y = -6 }, +/obj/machinery/light/directional/east, /turf/simulated/floor/carpet/red, /area/station/command/office/hos) "nmR" = ( @@ -80061,12 +81873,16 @@ /obj/structure/sign/poster/contraband/random/south, /obj/structure/table, /obj/item/paper_bin{ - pixel_x = -4; + pixel_x = -6; pixel_y = 4 }, /obj/item/pen{ - pixel_x = -5; - pixel_y = 6 + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/radio{ + pixel_y = 6; + pixel_x = 8 }, /turf/simulated/floor/plating, /area/station/engineering/mechanic) @@ -80105,6 +81921,9 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/carpet/black, /area/station/service/chapel) "nnK" = ( @@ -80206,13 +82025,18 @@ /area/station/security/interrogation) "noD" = ( /obj/structure/table/reinforced, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +/obj/machinery/light_switch/north, +/obj/item/clothing/glasses/meson{ + pixel_y = 10 + }, +/obj/item/clothing/glasses/meson{ + pixel_y = 6 + }, +/obj/item/clothing/glasses/meson{ + pixel_y = 2 + }, +/obj/item/clothing/glasses/meson{ + pixel_y = -2 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -80288,12 +82112,11 @@ }, /area/station/public/locker) "npj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/firealarm/directional/east, -/turf/simulated/floor/plasteel/dark, -/area/station/security/armory/secure) +/obj/machinery/shieldwallgen, +/obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light/small/directional/north, +/turf/simulated/floor/plasteel, +/area/station/engineering/equipmentstorage) "npk" = ( /turf/simulated/wall, /area/station/public/sleep_female) @@ -80358,19 +82181,19 @@ /area/station/engineering/hardsuitstorage) "nqn" = ( /obj/effect/turf_decal/delivery/red/hollow, -/obj/structure/rack/gunrack, +/obj/structure/gunrack, /obj/item/gun/projectile/shotgun/riot{ - pixel_x = -2 + pixel_y = 8 }, -/obj/item/gun/projectile/shotgun/riot, /obj/item/gun/projectile/shotgun/riot{ - pixel_x = 2 + pixel_y = 4 }, +/obj/item/gun/projectile/shotgun/riot, /obj/item/gun/projectile/shotgun/riot{ - pixel_x = 4 + pixel_y = -4 }, /obj/item/gun/projectile/shotgun/riot{ - pixel_x = 6 + pixel_y = -8 }, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) @@ -80397,7 +82220,7 @@ /turf/simulated/floor/plasteel{ icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "nrp" = ( /obj/structure/kitchenspike, /obj/effect/decal/cleanable/dirt, @@ -80540,7 +82363,7 @@ dir = 1; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "nuF" = ( /obj/structure/toilet{ dir = 1 @@ -80673,7 +82496,7 @@ id = "mechpodbay"; name = "Pod Door Control"; pixel_y = -26; - req_one_access_txt = "32" + req_access = list(32) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -80711,14 +82534,11 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/camera{ - c_tag = "Brig Labor Camp Airlock"; - dir = 1 - }, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "nwY" = ( /obj/effect/landmark/start/coroner, /obj/machinery/hologram/holopad, @@ -80880,8 +82700,9 @@ /area/station/maintenance/fsmaint) "nyZ" = ( /obj/structure/table/wood, -/obj/item/storage/fancy/candle_box/full, -/obj/machinery/light/small/directional/north, +/obj/item/storage/fancy/candle_box/full{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel/grimy, /area/station/security/permabrig) "nza" = ( @@ -81029,7 +82850,7 @@ /obj/machinery/access_button/west{ autolink_id = "assolar_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -81056,7 +82877,7 @@ /turf/simulated/wall/r_wall, /area/station/maintenance/medmaint) "nBi" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/electrical_shop) "nBl" = ( @@ -81075,7 +82896,7 @@ /obj/machinery/atmospherics/unary/portables_connector{ dir = 1 }, -/obj/machinery/atmospherics/portable/scrubber, +/obj/machinery/atmospherics/portable/pump, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel/dark, @@ -81087,7 +82908,7 @@ dir = 1; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "nBv" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, @@ -81277,7 +83098,10 @@ /area/station/hallway/secondary/entry) "nCQ" = ( /obj/structure/table/wood, -/obj/item/flashlight/lamp, +/obj/item/flashlight/lamp{ + pixel_x = -4; + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/command/office/hop) "nCT" = ( @@ -81383,7 +83207,7 @@ dir = 1; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "nEq" = ( /obj/structure/table, /obj/machinery/cell_charger{ @@ -81528,7 +83352,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "nGy" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -81631,12 +83455,26 @@ }, /area/station/maintenance/aft) "nHS" = ( -/obj/machinery/light/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 4; - icon_state = "whiteblue" + icon_state = "whitegreencorner" }, -/area/station/medical/medbay) +/area/station/medical/virology/lab) "nHT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -81673,16 +83511,6 @@ /obj/structure/chair/comfy/brown{ dir = 1 }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "yellow" @@ -81738,15 +83566,8 @@ }, /area/station/maintenance/old_kitchen) "nIw" = ( -/obj/structure/chair/plastic, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/north, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/station/medical/patients_rooms) +/turf/simulated/wall/r_wall, +/area/station/security/lobby) "nIH" = ( /obj/machinery/economy/vending/wallmed/directional/west, /obj/effect/turf_decal/siding/white{ @@ -81958,7 +83779,16 @@ }, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) +"nLU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/station/maintenance/aft) "nLW" = ( /obj/structure/cable{ d1 = 1; @@ -82052,7 +83882,6 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/closet/cardboard, /obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/trash, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -82117,12 +83946,20 @@ /area/station/maintenance/port) "nMT" = ( /obj/structure/table/wood, -/obj/item/paper_bin/nanotrasen, +/obj/item/paper_bin/nanotrasen{ + pixel_x = 3; + pixel_y = 4 + }, /obj/machinery/door_control/normal{ id = "hopofficedoor"; name = "Office Door"; - pixel_x = -8; - req_access_txt = "57" + pixel_x = -10; + pixel_y = 2; + req_access = list(57) + }, +/obj/item/pen/multi{ + pixel_x = 2; + pixel_y = 4 }, /turf/simulated/floor/carpet, /area/station/command/office/hop) @@ -82149,7 +83986,7 @@ name = "Prison Access Console"; pixel_y = 24; pixel_x = 6; - req_one_access_txt = "2" + req_access = list(2) }, /obj/machinery/camera{ c_tag = "Brig Hall North-East" @@ -82189,6 +84026,9 @@ /obj/structure/door_assembly/door_assembly_wood{ anchored = 1 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "nNA" = ( @@ -82352,23 +84192,29 @@ /area/station/hallway/primary/central/north) "nQa" = ( /obj/machinery/alarm/directional/south, -/obj/structure/table, -/obj/item/storage/belt/medical{ +/obj/structure/shelf/medbay, +/obj/item/reagent_containers/spray/cleaner{ + pixel_y = 10; + pixel_x = -8 + }, +/obj/item/reagent_containers/spray/cleaner{ pixel_y = 10 }, -/obj/item/storage/belt/medical{ - pixel_y = 8 +/obj/item/reagent_containers/spray/cleaner{ + pixel_y = 10; + pixel_x = 8 }, -/obj/item/storage/belt/medical{ - pixel_y = 6 +/obj/item/reagent_containers/spray/cleaner{ + pixel_y = -2; + pixel_x = -8 }, -/obj/item/storage/belt/medical{ - pixel_y = 4 +/obj/item/reagent_containers/spray/cleaner{ + pixel_y = -2 }, -/obj/item/storage/belt/medical{ - pixel_y = 2 +/obj/item/reagent_containers/spray/cleaner{ + pixel_y = -2; + pixel_x = 8 }, -/obj/item/storage/belt/medical, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -82406,7 +84252,7 @@ dir = 1; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "nRc" = ( /obj/structure/flora/junglebush/large, /obj/structure/flora/junglebush, @@ -82507,8 +84353,27 @@ icon_state = "whitebluecorner" }, /area/station/science/genetics) +"nRC" = ( +/obj/structure/table/wood, +/obj/item/clipboard{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/book/manual/wiki/security_space_law/black{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/stamp/law{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/effect/turf_decal/siding/wood/cherry{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/cherry, +/area/station/legal/lawoffice) "nRE" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fore) "nRQ" = ( @@ -82551,17 +84416,17 @@ /turf/simulated/wall/r_wall, /area/station/command/office/cmo) "nSQ" = ( -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "redfull" +/obj/machinery/conveyor/west{ + id = "QMLoad2" }, -/area/station/service/kitchen) +/turf/simulated/floor/plasteel, +/area/station/supply/storage) "nSV" = ( /turf/simulated/floor/plasteel{ dir = 8; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "nTt" = ( /obj/machinery/alarm/directional/south, /obj/machinery/light/directional/south, @@ -82595,20 +84460,32 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "nUc" = ( -/obj/structure/table/reinforced, +/obj/structure/shelf/service, /obj/structure/reagent_dispensers/spacecleanertank/west, -/obj/item/storage/box/mousetraps, -/obj/item/storage/box/mousetraps{ - pixel_x = 2; - pixel_y = 2 +/obj/item/restraints/legcuffs/beartrap{ + pixel_x = -8 }, /obj/item/restraints/legcuffs/beartrap, -/obj/item/restraints/legcuffs/beartrap, -/obj/item/restraints/legcuffs/beartrap, -/obj/item/restraints/legcuffs/beartrap, +/obj/item/restraints/legcuffs/beartrap{ + pixel_x = 8 + }, +/obj/item/storage/box/mousetraps{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/storage/box/lights/mixed{ + pixel_y = 8 + }, +/obj/item/storage/box/mousetraps{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purple" @@ -82665,8 +84542,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 }, /turf/simulated/floor/plasteel, /area/station/service/janitor) @@ -82700,6 +84577,13 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/carpet, /area/station/service/bar/atrium) +"nUQ" = ( +/obj/machinery/light_switch/west, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/station/hallway/secondary/exit) "nUR" = ( /obj/effect/turf_decal/arrows{ dir = 1 @@ -82719,8 +84603,14 @@ /area/station/service/bar) "nVq" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/gps/engineering, +/obj/item/clipboard{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/gps/engineering{ + pixel_x = 6; + pixel_y = 4 + }, /obj/machinery/newscaster/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) @@ -82777,14 +84667,22 @@ /area/station/maintenance/apmaint) "nWx" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/toy/figure/crew/ce, +/obj/item/clipboard{ + pixel_x = -6; + pixel_y = 4 + }, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/item/circuitboard/autolathe, +/obj/item/reagent_containers/patch/silver_sulf{ + pixel_y = -10 + }, +/obj/item/lighter/zippo/ce{ + pixel_x = 8; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -82880,6 +84778,11 @@ }, /turf/simulated/floor/plasteel/white, /area/station/science/research) +"nXm" = ( +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/apmaint) "nXr" = ( /obj/structure/cable{ d1 = 1; @@ -82893,8 +84796,14 @@ /area/station/science/test_chamber) "nXw" = ( /obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/stamp/warden, +/obj/item/clipboard{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/stamp/warden{ + pixel_x = -6; + pixel_y = 8 + }, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -82907,7 +84816,7 @@ /area/station/security/warden) "nXD" = ( /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "nXF" = ( /obj/machinery/door/airlock/external{ id_tag = "arrivalsn_door_ext" @@ -82916,7 +84825,7 @@ /obj/machinery/access_button/east{ autolink_id = "arrivalsn_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -82939,6 +84848,12 @@ icon_state = "neutral" }, /area/station/maintenance/port) +"nYb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/starboard) "nYe" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -83031,6 +84946,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/carpet/black, /area/station/service/chapel) "nZo" = ( @@ -83065,23 +84983,22 @@ "oai" = ( /obj/structure/table/reinforced, /obj/item/paper/nuclear_guide_spacing{ - pixel_x = 10; - pixel_y = 7 + pixel_x = 8; + pixel_y = 4 }, /obj/item/paper/nuclear_guide_defusing{ - pixel_x = 9; - pixel_y = 4 + pixel_x = 8; + pixel_y = 2 }, /obj/item/paper/nuclear_guide_operating{ - pixel_x = 8; - pixel_y = 1 + pixel_x = 8 }, /obj/item/disk/nuclear/training{ - pixel_x = -5 + pixel_x = -4; + pixel_y = 6 }, /obj/item/disk/nuclear/training{ - pixel_y = -2; - pixel_x = -7 + pixel_x = -6 }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/dark, @@ -83095,6 +85012,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/shelf/engineering, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "oav" = ( @@ -83144,6 +85062,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/carpet/black, /area/station/service/chapel) "obC" = ( @@ -83176,8 +85097,7 @@ "obO" = ( /obj/structure/rack, /obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, @@ -83293,7 +85213,6 @@ "ocA" = ( /obj/structure/closet/radiation, /obj/effect/turf_decal/delivery/hollow, -/obj/item/clothing/glasses/meson, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "ocJ" = ( @@ -83311,6 +85230,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 5 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) "odS" = ( @@ -83318,6 +85238,7 @@ dir = 8 }, /obj/machinery/light/directional/east, +/obj/item/radio/intercom/directional/east, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "red" @@ -83346,7 +85267,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "oey" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -83497,6 +85418,12 @@ icon_state = "white" }, /area/station/medical/sleeper) +"ofS" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/hallway/secondary/exit) "ogM" = ( /obj/structure/disposalpipe/junction/reversed, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -83515,23 +85442,25 @@ }, /area/station/science/research) "ogZ" = ( -/obj/structure/table, +/obj/structure/shelf/medbay, /obj/machinery/firealarm/directional/north, /obj/item/radio/alternative{ - pixel_x = -6; - pixel_y = 12 + pixel_y = 8; + pixel_x = -8 }, /obj/item/radio/alternative{ - pixel_x = -6; - pixel_y = 6 + pixel_y = 8 }, /obj/item/radio/alternative{ - pixel_x = 6; - pixel_y = 12 + pixel_y = 8; + pixel_x = 8 }, /obj/item/radio/alternative{ - pixel_x = 6; - pixel_y = 6 + pixel_x = -8 + }, +/obj/item/radio/alternative, +/obj/item/radio/alternative{ + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 5; @@ -83581,7 +85510,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "ohP" = ( /obj/structure/table_frame/wood, /obj/item/melee/baseball_bat, @@ -83594,9 +85523,13 @@ "ohQ" = ( /obj/machinery/alarm/directional/south, /obj/structure/table/reinforced, -/obj/item/wrench, -/obj/item/screwdriver, -/obj/item/crowbar/engineering, +/obj/item/screwdriver{ + pixel_x = -16; + pixel_y = 6 + }, +/obj/item/crowbar/engineering{ + pixel_y = 2 + }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) @@ -83762,16 +85695,11 @@ }, /area/station/science/storage) "olj" = ( -/obj/machinery/power/apc/directional/north, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2" - }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "olk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -83836,7 +85764,7 @@ dir = 8; icon_state = "green" }, -/area/station/engineering/atmos) +/area/station/engineering/atmos/distribution) "omd" = ( /obj/structure/flora/grass/jungle, /obj/structure/flora/rock/jungle, @@ -84026,7 +85954,7 @@ dir = 5; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "ooq" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plating, @@ -84098,13 +86026,16 @@ /obj/structure/table, /obj/machinery/alarm/directional/south, /obj/item/roller{ - pixel_y = 6 + pixel_y = 6; + pixel_x = 4 }, /obj/item/roller{ - pixel_y = 12 + pixel_y = 12; + pixel_x = 4 }, /obj/item/reagent_containers/spray/cleaner{ - pixel_x = -12 + pixel_x = -10; + pixel_y = 5 }, /turf/simulated/floor/plasteel{ dir = 10; @@ -84237,6 +86168,7 @@ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/storage, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "yellow" @@ -84438,6 +86370,11 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/wood/cherry, /area/station/service/chapel/office) "ova" = ( @@ -84448,7 +86385,7 @@ dir = 6; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "ovl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -84499,7 +86436,9 @@ /obj/item/radio/intercom/directional/west, /obj/effect/decal/cleanable/dirt, /obj/structure/table/reinforced, -/obj/item/storage/fancy/donut_box, +/obj/item/storage/fancy/donut_box{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkred" @@ -84589,20 +86528,31 @@ /turf/simulated/floor/wood, /area/station/command/office/hos) "oyG" = ( -/obj/structure/table/glass, -/obj/item/storage/box/gloves{ - pixel_y = 4; - pixel_x = 4 +/obj/structure/disposalpipe/segment/corner{ + dir = 8 }, -/obj/item/storage/box/masks{ - pixel_y = 2; - pixel_x = -4 +/obj/structure/shelf/medbay, +/obj/item/reagent_containers/dropper/precision{ + pixel_y = -6; + pixel_x = -8 }, -/obj/item/hand_labeler{ - pixel_y = 2 +/obj/item/reagent_containers/dropper/precision{ + pixel_y = -6 }, -/obj/structure/disposalpipe/segment/corner{ - dir = 8 +/obj/item/reagent_containers/dropper/precision{ + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6; + pixel_x = -8 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6; + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 4; @@ -84638,8 +86588,8 @@ int_button_link_id = "apsolar_btn_int"; int_door_link_id = "apsolar_door_int"; pixel_y = -25; - req_access_txt = "13"; - vent_link_id = "apsolar_vent" + vent_link_id = "apsolar_vent"; + req_access = list(13) }, /obj/structure/cable{ d1 = 4; @@ -84653,6 +86603,7 @@ /obj/structure/closet/secure_closet/security, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel/dark, /area/station/security/podpilot) "ozw" = ( @@ -84664,20 +86615,40 @@ }, /area/station/command/office/rd) "ozI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/machinery/door_control/shutter/north{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; - req_one_access_txt = "3" + req_access = list(3) }, -/obj/machinery/light/directional/north, /obj/structure/cable{ d1 = 2; d2 = 8; icon_state = "2-8" }, +/obj/structure/shelf/security, +/obj/item/grenade/barrier{ + pixel_x = -6; + pixel_y = 12 + }, +/obj/item/grenade/barrier{ + pixel_x = 1; + pixel_y = 12 + }, +/obj/item/grenade/barrier{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/item/grenade/barrier{ + pixel_x = -6 + }, +/obj/item/grenade/barrier{ + pixel_x = 1 + }, +/obj/item/grenade/barrier{ + pixel_x = 8 + }, +/obj/effect/turf_decal/delivery/red/hollow, +/obj/effect/turf_decal/stripes/end, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "ozJ" = ( @@ -84874,8 +86845,8 @@ }, /area/station/maintenance/electrical) "oCQ" = ( -/obj/effect/landmark/start/geneticist, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark/start/geneticist, /turf/simulated/floor/plasteel{ icon_state = "whitebluecorner" }, @@ -84918,6 +86889,12 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/medmaint) +"oDU" = ( +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/maintenance/fore) "oEi" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -84961,22 +86938,47 @@ /turf/simulated/floor/plating/airless, /area/space/nearstation) "oEJ" = ( -/obj/structure/rack, -/obj/item/stack/sheet/plasteel{ - amount = 25 - }, +/obj/structure/shelf/engineering, /obj/effect/turf_decal/delivery/hollow, +/obj/item/painter{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/painter{ + pixel_y = -2 + }, +/obj/item/painter{ + pixel_y = -2; + pixel_x = 6 + }, +/obj/item/storage/box/lights/tubes{ + pixel_y = 6; + pixel_x = -6 + }, +/obj/item/storage/box/lights/mixed{ + pixel_y = 6 + }, +/obj/item/storage/box/lights/bulbs{ + pixel_y = 6; + pixel_x = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "yellowfull" }, /area/station/engineering/hardsuitstorage) "oEK" = ( -/obj/machinery/light/small/directional/east, +/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkredcorners" }, /area/station/security/prison/cell_block/A) +"oEM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/station/science/toxins/test) "oEO" = ( /obj/machinery/door/airlock/highsecurity, /obj/effect/mapping_helpers/airlock/autoname, @@ -85037,7 +87039,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "oFN" = ( /obj/machinery/door/airlock/external{ id_tag = "laborcamp_home"; @@ -85054,7 +87056,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/simulated/floor/plating, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "oFY" = ( /obj/machinery/newscaster/directional/south, /obj/structure/chair/comfy/red{ @@ -85062,7 +87064,7 @@ }, /obj/effect/landmark/start/bar, /turf/simulated/floor/carpet, -/area/station/service/theatre) +/area/station/service/bar/atrium) "oGe" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/green{ @@ -85108,12 +87110,11 @@ /area/station/engineering/atmos) "oHn" = ( /obj/item/radio/intercom/directional/east, -/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "oHp" = ( /obj/machinery/economy/vending/coffee, /turf/simulated/floor/plasteel/dark, @@ -85249,7 +87250,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/old_detective) "oJY" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/apmaint) "oKa" = ( @@ -85358,7 +87359,7 @@ /turf/simulated/floor/engine, /area/station/engineering/controlroom) "oLe" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/white, /area/station/maintenance/apmaint) @@ -85538,6 +87539,7 @@ }, /area/station/maintenance/starboard2) "oOd" = ( +/obj/machinery/firealarm/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -85828,6 +87830,7 @@ /obj/structure/disposalpipe/segment/corner{ dir = 1 }, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -85871,7 +87874,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/port) "oUa" = ( -/obj/machinery/light/directional/west, +/obj/machinery/light/small/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkblue" @@ -85929,6 +87932,10 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/central/west) +"oUT" = ( +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plasteel/dark, +/area/station/maintenance/abandonedbar) "oVj" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research, @@ -86066,6 +88073,7 @@ c_tag = "Bar counter"; dir = 8 }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -86337,7 +88345,6 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "pam" = ( -/obj/machinery/firealarm/directional/south, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 6; @@ -86386,7 +88393,7 @@ icon_state = "2-4" }, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "pbn" = ( /turf/simulated/floor/plating/airless, /area/station/science/toxins/test) @@ -86471,23 +88478,29 @@ /area/station/maintenance/starboard2) "pdP" = ( /obj/machinery/light_switch/south, -/obj/structure/table, +/obj/structure/shelf/medbay, /obj/item/clothing/glasses/hud/health{ - pixel_y = 10 + pixel_y = -4; + pixel_x = -8 }, /obj/item/clothing/glasses/hud/health{ - pixel_y = 8 + pixel_y = -4 }, /obj/item/clothing/glasses/hud/health{ - pixel_y = 6 + pixel_y = -4; + pixel_x = 8 }, /obj/item/clothing/glasses/hud/health{ - pixel_y = 4 + pixel_y = 8; + pixel_x = -8 }, /obj/item/clothing/glasses/hud/health{ - pixel_y = 2 + pixel_y = 8 + }, +/obj/item/clothing/glasses/hud/health{ + pixel_y = 8; + pixel_x = 8 }, -/obj/item/clothing/glasses/hud/health, /turf/simulated/floor/plasteel{ icon_state = "whiteblue" }, @@ -86808,11 +88821,26 @@ /area/station/maintenance/old_detective) "phT" = ( /obj/item/kirbyplants, +/obj/machinery/door_control/shutter/west{ + req_access = list(3); + id = "shooting_range1"; + name = "Shooting Range Shutter Control" + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) +"phV" = ( +/obj/machinery/power/apc/directional/west, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/service/theatre) "pia" = ( /obj/machinery/computer/security/mining{ dir = 8 @@ -86968,6 +88996,7 @@ d2 = 8; icon_state = "0-8" }, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whiteblue" @@ -86998,7 +89027,7 @@ /obj/machinery/access_button/north{ autolink_id = "apsolar_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -87129,13 +89158,23 @@ }, /area/station/medical/virology/lab) "plN" = ( -/obj/effect/turf_decal/stripes/line, /obj/machinery/door_control/shutter/south{ id = "Secure Armory"; name = "Secure Armory Shutter Control"; - req_one_access_txt = "3" + req_access = list(3) }, /obj/machinery/light/directional/south, +/obj/structure/shelf/security, +/obj/item/storage/box/handcuffs, +/obj/item/storage/box/handcuffs, +/obj/item/storage/box/handcuffs, +/obj/item/storage/box/teargas, +/obj/item/storage/box/seccarts, +/obj/item/storage/box/flashbangs, +/obj/effect/turf_decal/delivery/red/hollow, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "plR" = ( @@ -87244,7 +89283,6 @@ }, /area/station/science/genetics) "pnU" = ( -/obj/machinery/light/directional/south, /obj/effect/firefly/blue, /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/grass, @@ -87272,7 +89310,7 @@ dir = 1 }, /turf/simulated/floor/carpet/orange, -/area/station/service/theatre) +/area/station/service/bar/atrium) "poh" = ( /obj/structure/disposalpipe/segment/corner{ dir = 8 @@ -87295,11 +89333,12 @@ "poK" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "poN" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/delivery/hollow, /obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -87339,7 +89378,6 @@ "ppj" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/sign/poster/official/random/south, -/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "brown" @@ -87475,7 +89513,7 @@ }, /area/station/hallway/secondary/bridge) "prt" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/service/bar) "prx" = ( @@ -87577,18 +89615,35 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/structure/rack, -/obj/item/stack/sheet/metal/fifty{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/sheet/metal/fifty, +/obj/structure/shelf/engineering, /obj/effect/turf_decal/delivery/hollow, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = 4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = 4; + pixel_x = 6 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4; + pixel_x = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "yellowfull" }, @@ -87626,23 +89681,23 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/rack, -/obj/item/stack/packageWrap{ - pixel_y = 2 +/obj/machinery/alarm/directional/east, +/obj/structure/table, +/obj/item/stamp/granted{ + pixel_x = -6; + pixel_y = 10 }, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap{ - pixel_y = -2 +/obj/item/stamp/granted{ + pixel_x = -6 }, -/obj/item/destTagger, -/obj/item/destTagger{ - pixel_x = 4; - pixel_y = 3 +/obj/item/stamp/denied{ + pixel_x = 8; + pixel_y = 10 }, -/obj/item/hand_labeler, -/obj/item/hand_labeler{ - pixel_y = 6 +/obj/item/stamp/denied{ + pixel_x = 8 }, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -87657,32 +89712,32 @@ "psB" = ( /obj/machinery/power/apc/directional/south, /obj/structure/table/reinforced, -/obj/item/stack/cable_coil, +/obj/effect/turf_decal/delivery/hollow, +/obj/structure/cable, /obj/item/apc_electronics{ - pixel_x = 3; - pixel_y = 2 + pixel_x = -2; + pixel_y = 8 }, /obj/item/apc_electronics{ - pixel_x = 3; - pixel_y = 2 + pixel_x = -2; + pixel_y = 4 }, /obj/item/apc_electronics{ - pixel_x = 3; - pixel_y = 2 + pixel_x = -2 }, -/obj/effect/turf_decal/delivery/hollow, -/obj/structure/cable, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "psD" = ( /obj/machinery/computer/HolodeckControl, /obj/machinery/status_display/directional/north, -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/public/fitness) "psF" = ( /obj/structure/table, -/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/regular{ + pixel_y = 2 + }, /obj/machinery/alarm/directional/south, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery/hollow, @@ -87746,7 +89801,7 @@ /obj/machinery/access_button/north{ autolink_id = "stationai_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -87769,26 +89824,26 @@ }, /area/station/maintenance/old_kitchen) "ptZ" = ( -/obj/item/gun/energy/disabler{ - pixel_x = -2 - }, -/obj/item/gun/energy/disabler, /obj/effect/turf_decal/delivery/red/hollow, -/obj/item/gun/energy/disabler{ - pixel_x = 2 +/obj/structure/gunrack, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, /obj/item/gun/energy/disabler{ - pixel_x = 4 + pixel_y = 8 }, /obj/item/gun/energy/disabler{ - pixel_x = 6 + pixel_y = 4 }, -/obj/structure/rack/gunrack, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/item/gun/energy/disabler, +/obj/item/gun/energy/disabler{ + pixel_y = -4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/item/gun/energy/disabler{ + pixel_y = -8 }, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) @@ -87799,7 +89854,7 @@ /obj/machinery/door_control/shutter/south{ id = "Biohazard_RnD"; name = "Biohazard RnD Shutter Control"; - req_one_access_txt = "30" + req_access = list(30) }, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/keycard_auth/south{ @@ -87851,7 +89906,7 @@ /area/station/maintenance/starboard2) "pvh" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/port) "pvo" = ( @@ -87862,12 +89917,22 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/light_switch/west, /obj/effect/turf_decal/siding/wood{ dir = 8 }, /turf/simulated/floor/wood/fancy, /area/station/public/sleep_male) +"pvZ" = ( +/obj/machinery/atmospherics/meter, +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/station/engineering/atmos) "pwA" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -87880,7 +89945,6 @@ "pwX" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/turf_decal/delivery/hollow, -/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/supply/storage) "pwY" = ( @@ -87897,6 +89961,11 @@ /obj/effect/turf_decal/delivery, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, +/obj/machinery/access_button/south{ + autolink_id = "enginen_btn_int"; + name = "interior access button"; + req_access = list(10,13) + }, /turf/simulated/floor/plasteel, /area/station/engineering/control) "pwZ" = ( @@ -87964,7 +90033,7 @@ /turf/simulated/floor/wood/fancy/birch, /area/station/maintenance/starboard) "pyb" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/aft) "pyd" = ( @@ -88084,9 +90153,6 @@ /area/station/hallway/primary/central/west) "pAg" = ( /obj/machinery/atmospherics/portable/canister/air, -/obj/structure/sign/nosmoking_2{ - pixel_x = 32 - }, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 10; @@ -88100,11 +90166,16 @@ c_tag = "Brig Security Equipment West"; dir = 8 }, +/obj/machinery/power/apc/directional/east, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "pAv" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -88116,11 +90187,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -88366,6 +90432,11 @@ }, /turf/simulated/floor/plating, /area/station/command/bridge) +"pCV" = ( +/obj/effect/spawner/window/reinforced/grilled, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/station/engineering/hallway) "pDk" = ( /obj/machinery/door/firedoor, /obj/structure/cable{ @@ -88396,11 +90467,17 @@ /area/station/aisat) "pER" = ( /obj/structure/table/wood, -/obj/item/book/manual/barman_recipes, -/obj/item/reagent_containers/drinks/shaker, +/obj/item/book/manual/barman_recipes{ + pixel_x = -6; + pixel_y = 2 + }, /obj/structure/sign/poster/official/high_class_martini{ pixel_y = 32 }, +/obj/item/reagent_containers/drinks/shaker{ + pixel_x = 8; + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -88424,15 +90501,21 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "pFd" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp{ pixel_y = 4; pixel_x = -4 }, -/obj/item/camera, -/obj/item/taperecorder, +/obj/item/camera{ + pixel_x = -2; + pixel_y = -12 + }, +/obj/item/taperecorder{ + pixel_x = 18; + pixel_y = 3 + }, /obj/effect/turf_decal/siding/wood/cherry{ dir = 9 }, @@ -88447,6 +90530,7 @@ /area/station/medical/cloning) "pFv" = ( /obj/structure/closet/secure_closet/mime, +/obj/machinery/light_switch/north, /turf/simulated/floor/mineral/tranquillite, /area/station/service/mime) "pFO" = ( @@ -88676,7 +90760,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/port) "pJb" = ( @@ -88777,6 +90861,7 @@ d2 = 2; icon_state = "0-2" }, +/obj/item/kirbyplants, /turf/simulated/floor/plasteel/dark, /area/station/ai_monitored/storage/eva) "pKK" = ( @@ -88871,7 +90956,7 @@ }, /obj/structure/cable, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "pLN" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -88930,6 +91015,10 @@ cover_color = "#68452a"; dir = 1 }, +/obj/machinery/light/directional/south, +/obj/structure/disposalpipe/segment/corner{ + dir = 1 + }, /turf/simulated/floor/plasteel{ icon_state = "green" }, @@ -88972,23 +91061,32 @@ }, /area/station/medical/medbay) "pML" = ( -/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/shelf/science, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = 4; + pixel_x = -6 + }, /obj/item/stack/sheet/metal/fifty{ - pixel_x = 4; pixel_y = 4 }, /obj/item/stack/sheet/metal/fifty{ - pixel_x = 2; - pixel_y = 2 + pixel_y = 4; + pixel_x = 6 }, -/obj/item/stack/sheet/metal/fifty, /obj/item/stack/sheet/metal/fifty{ - pixel_y = -2; - pixel_x = -2 + pixel_y = -4; + pixel_x = -6 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4 + }, +/obj/item/stack/sheet/metal/fifty{ + pixel_y = -4; + pixel_x = 6 }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics/chargebay) @@ -89020,7 +91118,7 @@ dir = 1; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "pNv" = ( /obj/structure/chair/office, /turf/simulated/floor/plating, @@ -89099,7 +91197,7 @@ "pOZ" = ( /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel/dark, -/area/station/security/storage) +/area/station/security/restroom) "pPc" = ( /obj/structure/cable{ d1 = 1; @@ -89155,7 +91253,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -89246,7 +91344,31 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "pRq" = ( +/obj/structure/shelf/science, +/obj/item/storage/firstaid/regular/empty{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/storage/firstaid/regular/empty{ + pixel_y = -6 + }, +/obj/item/storage/firstaid/regular/empty{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/healthanalyzer{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/healthanalyzer{ + pixel_y = 8 + }, +/obj/item/healthanalyzer{ + pixel_x = 6; + pixel_y = 8 + }, /obj/machinery/alarm/directional/east, +/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "pRI" = ( @@ -89404,7 +91526,7 @@ int_door_link_id = "arrivalsn_door_int"; pixel_x = 25; vent_link_id = "arrivalsn_vent"; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/light/small/directional/west, /turf/simulated/floor/plating, @@ -89417,6 +91539,11 @@ icon_state = "redbluefull" }, /area/station/maintenance/fore) +"pUO" = ( +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/engineering/atmos/distribution) "pVw" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 8; @@ -89570,7 +91697,7 @@ /turf/simulated/floor/plasteel{ icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "pWT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -89596,7 +91723,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "pXo" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/dormitory_maintenance) "pXz" = ( @@ -89953,17 +92080,17 @@ dir = 8 }, /turf/simulated/floor/plating, -/area/station/security/brig) +/area/station/security/lobby) "qdk" = ( /obj/structure/table/reinforced, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, /obj/effect/turf_decal/delivery/hollow, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, +/obj/machinery/light_switch/east, +/obj/item/tank/internals/plasma, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "qdm" = ( @@ -90034,7 +92161,8 @@ "qfc" = ( /obj/structure/table/wood, /obj/item/radio/security{ - pixel_x = 8 + pixel_x = 6; + pixel_y = 6 }, /obj/item/paper_bin/nanotrasen{ pixel_x = -6; @@ -90051,6 +92179,7 @@ /area/station/command/office/hos) "qfd" = ( /obj/machinery/status_display/directional/south, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "caution" @@ -90134,7 +92263,6 @@ }, /area/station/medical/break_room) "qgN" = ( -/obj/machinery/light_switch/east, /obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Cargo Disposals Sorting"; @@ -90150,6 +92278,7 @@ dir = 4 }, /obj/machinery/disposal, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -90219,7 +92348,7 @@ "qhK" = ( /obj/structure/table, /obj/item/deck/cards, -/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet, /area/station/security/permabrig) "qhP" = ( @@ -90253,7 +92382,9 @@ "qhZ" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/structure/table/glass, -/obj/item/soap, +/obj/item/soap{ + pixel_y = 4 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "whiteblue" @@ -90468,7 +92599,6 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, @@ -90497,7 +92627,7 @@ }, /area/station/maintenance/medmaint) "qmo" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/virology_maint) "qmw" = ( @@ -90567,11 +92697,15 @@ dir = 10; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "qno" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/old_kitchen) +"qnp" = ( +/obj/effect/spawner/window/reinforced/grilled, +/turf/simulated/floor/plating, +/area/station/engineering/atmos/distribution) "qnq" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, @@ -90685,7 +92819,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, /area/station/supply/storage) "qpm" = ( /obj/structure/chair/comfy/brown{ @@ -90868,7 +93005,7 @@ }, /obj/effect/landmark/start/assistant, /turf/simulated/floor/carpet/orange, -/area/station/service/theatre) +/area/station/service/bar/atrium) "qsU" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -90989,6 +93126,11 @@ /obj/structure/disposalpipe/segment/corner{ dir = 8 }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/wood/cherry, /area/station/service/chapel/office) "quK" = ( @@ -91091,7 +93233,7 @@ dir = 1; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "qvA" = ( /turf/simulated/floor/plasteel{ icon_state = "redyellowfull" @@ -91234,7 +93376,7 @@ "qxj" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "qxk" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance, @@ -91284,6 +93426,13 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/central/se) +"qxU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/damageturf, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/maintenance/fore) "qym" = ( /obj/structure/chair, /obj/structure/cable{ @@ -91300,6 +93449,7 @@ name = "Genetics Privacy Shutter Control" }, /obj/structure/closet/secure_closet/geneticist, +/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -91326,7 +93476,7 @@ "qzy" = ( /obj/machinery/economy/vending/wallmed/directional/west, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "qzG" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/secure_closet/freezer/fridge, @@ -91355,7 +93505,7 @@ dir = 5 }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "qzZ" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 4 @@ -91382,7 +93532,7 @@ id = "detective"; pixel_y = 0; pixel_x = -24; - req_one_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -91435,38 +93585,41 @@ /obj/item/kirbyplants, /obj/machinery/light/directional/west, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "qBw" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "qBR" = ( -/obj/structure/rack, -/obj/item/clothing/suit/hooded/ablative, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/door/window/reinforced/normal{ - dir = 8 - }, -/obj/item/gun/energy/ionrifle, /obj/effect/turf_decal/delivery/red/hollow, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/mapping_helpers/airlock/windoor/access/any/security/general{ - dir = 8 - }, /obj/machinery/camera{ c_tag = "Brig Secure Armory East"; dir = 8 }, +/obj/structure/shelf/security, +/obj/item/storage/fancy/shell/beanbag{ + pixel_y = -6 + }, +/obj/item/storage/fancy/shell/beanbag{ + pixel_y = -6 + }, +/obj/item/storage/fancy/shell/beanbag{ + pixel_y = -6 + }, +/obj/item/storage/fancy/shell/rubbershot{ + pixel_y = 6 + }, +/obj/item/storage/fancy/shell/rubbershot{ + pixel_y = 6 + }, +/obj/item/storage/fancy/shell/rubbershot{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "qCc" = ( @@ -91477,7 +93630,7 @@ dir = 5; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "qCd" = ( /turf/simulated/floor/plasteel/grimy, /area/station/maintenance/abandonedbar) @@ -91534,6 +93687,10 @@ icon_state = "brown" }, /area/station/public/vacant_store) +"qCX" = ( +/obj/machinery/light/floor, +/turf/simulated/floor/plasteel, +/area/station/supply/storage) "qDd" = ( /obj/machinery/door/window/classic/reversed{ name = "Library Desk Door" @@ -91621,15 +93778,15 @@ /area/station/security/warden) "qDW" = ( /obj/structure/table, -/obj/item/storage/box/beakers{ +/obj/machinery/alarm/directional/south, +/obj/item/clothing/mask/gas{ pixel_y = 4; - pixel_x = 4 + pixel_x = 6 }, -/obj/item/storage/box/beakers{ - pixel_y = 2; - pixel_x = -4 +/obj/item/clothing/mask/gas{ + pixel_x = -6; + pixel_y = 4 }, -/obj/machinery/alarm/directional/south, /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" }, @@ -91857,7 +94014,6 @@ "qGy" = ( /obj/machinery/suit_storage_unit/engine/secure, /obj/effect/turf_decal/stripes/line, -/obj/structure/table/reinforced, /obj/structure/sign/poster/official/report_crimes{ pixel_y = 32 }, @@ -91881,23 +94037,26 @@ /obj/structure/table/wood, /obj/machinery/light/directional/west, /obj/item/reagent_containers/drinks/drinkingglass{ - pixel_x = -5; - pixel_y = 2 + pixel_x = 6; + pixel_y = 8 }, /obj/item/reagent_containers/drinks/drinkingglass{ - pixel_x = 5 + pixel_x = 6; + pixel_y = 2 }, /obj/item/reagent_containers/drinks/bottle/wine{ - pixel_y = 5 + pixel_y = 8; + pixel_x = -8 }, /turf/simulated/floor/plasteel/dark, -/area/station/service/theatre) +/area/station/service/bar/atrium) "qGY" = ( /obj/item/kirbyplants, +/obj/machinery/status_display/directional/south, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "qHx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -91951,7 +94110,7 @@ /area/station/command/office/hop) "qHY" = ( /obj/item/kirbyplants, -/obj/item/radio/intercom/directional/south, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitepurple" @@ -92088,7 +94247,7 @@ dir = 4; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "qKt" = ( /obj/machinery/newscaster/directional/south, /obj/structure/disposalpipe/segment{ @@ -92137,6 +94296,7 @@ "qLB" = ( /obj/structure/weightmachine/stacklifter, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "caution" @@ -92152,7 +94312,7 @@ dir = 5; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "qLD" = ( /obj/structure/chair/office/dark{ dir = 4 @@ -92297,7 +94457,6 @@ }, /area/station/hallway/secondary/exit/maintenance) "qNW" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -92306,6 +94465,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet, /area/station/security/permabrig) "qOd" = ( @@ -92444,9 +94604,7 @@ /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/crate, /obj/effect/spawner/random/maintenance, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 8; @@ -92759,6 +94917,7 @@ }, /obj/effect/landmark/start/scientist, /obj/machinery/light/directional/north, +/obj/item/radio/intercom/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -93016,8 +95175,9 @@ dir = 8; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "qWr" = ( +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue" @@ -93088,6 +95248,7 @@ /obj/structure/noticeboard{ pixel_y = 29 }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "chapel" @@ -93105,9 +95266,7 @@ "qXS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "vault" @@ -93140,6 +95299,7 @@ }, /area/station/engineering/atmos) "qYm" = ( +/obj/machinery/light/small/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue" @@ -93258,8 +95418,17 @@ /obj/machinery/chem_master, /turf/simulated/floor/engine, /area/station/medical/chemistry) +"rac" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/station/maintenance/apmaint) "rad" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/old_kitchen) "rah" = ( @@ -93347,7 +95516,6 @@ /obj/machinery/alarm/directional/east, /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/radiation, -/obj/item/clothing/glasses/meson, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "rbq" = ( @@ -93425,7 +95593,7 @@ /obj/machinery/door_control/shutter/west{ id = "stationawaygate"; name = "Gateway Shutters Control"; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -93508,15 +95676,15 @@ /area/station/maintenance/dormitory_maintenance) "rdB" = ( /obj/structure/table/glass, -/obj/item/reagent_containers/applicator/burn{ - pixel_y = 4; - pixel_x = -6 - }, /obj/item/reagent_containers/glass/bottle/charcoal{ pixel_x = 8; pixel_y = 4 }, /obj/machinery/alarm/directional/north, +/obj/item/reagent_containers/applicator/burn{ + pixel_y = 4; + pixel_x = -6 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -93696,34 +95864,23 @@ /area/station/engineering/controlroom) "rfI" = ( /obj/item/beacon, -/obj/effect/turf_decal/stripes/box, +/obj/effect/turf_decal/stripes, /obj/machinery/camera{ c_tag = "Research Toxins Test Chamber East"; dir = 4; network = list("Toxins","Research","SS13"); invuln = 1 }, -/turf/simulated/floor/plating/airless, +/turf/simulated/floor/plasteel/airless/indestructible, /area/station/science/toxins/test) "rfK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, +/obj/machinery/cryopod, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ - icon_state = "neutralfull" + dir = 1; + icon_state = "whitegreencorner" }, -/area/station/public/fitness) +/area/station/public/sleep) "rfQ" = ( /obj/structure/cable{ d1 = 1; @@ -93744,6 +95901,7 @@ /obj/structure/disposalpipe/segment/corner{ dir = 8 }, +/obj/machinery/light/directional/south, /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "rfT" = ( @@ -93776,23 +95934,25 @@ /turf/simulated/floor/plating, /area/station/service/clown) "rgk" = ( -/obj/item/reagent_containers/spray/pepper{ - pixel_x = -8 +/obj/structure/shelf/security, +/obj/effect/turf_decal/delivery/red/hollow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, +/obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper{ - pixel_x = -4 + pixel_x = 8; + pixel_y = 12 }, -/obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper{ - pixel_x = 4 + pixel_x = -8; + pixel_y = 12 }, /obj/item/reagent_containers/spray/pepper{ pixel_x = 8 }, -/obj/structure/rack, -/obj/effect/turf_decal/delivery/red/hollow, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/item/reagent_containers/spray/pepper{ + pixel_x = -8 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -93937,6 +96097,7 @@ "riK" = ( /obj/effect/decal/cleanable/dirt, /obj/item/kirbyplants, +/obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "red" @@ -94000,7 +96161,7 @@ }, /obj/structure/cable, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "rkv" = ( /obj/structure/closet/crate, /obj/effect/spawner/random/maintenance, @@ -94013,14 +96174,8 @@ "rkO" = ( /obj/machinery/status_display/directional/south, /obj/structure/table/reinforced, -/obj/item/clothing/gloves/color/black, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/lightreplacer, /obj/effect/turf_decal/delivery/hollow, +/obj/item/clothing/gloves/color/black, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "rkU" = ( @@ -94054,6 +96209,7 @@ network = list("Medbay","SS13"); dir = 1 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -94076,13 +96232,14 @@ }, /area/station/public/storage/tools) "rmf" = ( -/obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ c_tag = "Prison General South"; network = list("Prison","SS13"); dir = 8 }, /obj/item/radio/intercom/directional/east, +/obj/effect/decal/cleanable/dust, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/carpet, /area/station/security/permabrig) "rmw" = ( @@ -94177,6 +96334,7 @@ }, /area/station/medical/sleeper) "rpx" = ( +/obj/machinery/light_switch/south, /turf/simulated/floor/carpet, /area/station/legal/courtroom) "rpC" = ( @@ -94225,6 +96383,7 @@ /area/station/security/brig) "rpF" = ( /obj/structure/closet/secure_closet/evidence, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkred" @@ -94301,17 +96460,12 @@ "rqZ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, /obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 1; + d1 = 4; d2 = 8; - icon_state = "1-8" + icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "darkredfull" }, @@ -94371,7 +96525,6 @@ dir = 5 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel, /area/station/security/permabrig) "rrT" = ( @@ -94452,6 +96605,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9 }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -94513,7 +96667,7 @@ autolink_id = "arrivalsn_btn_int"; name = "exterior access button"; pixel_y = 1; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -94565,10 +96719,10 @@ ext_door_link_id = "med_outer_door"; int_button_link_id = "med_int_button"; int_door_link_id = "med_int_door"; - req_access_txt = "13"; vent_link_id = "med_vent"; pixel_x = 25; - ext_button_link_id = "med_outer_button" + ext_button_link_id = "med_outer_button"; + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "med_vent"; @@ -94616,6 +96770,19 @@ icon_state = "whitebluefull" }, /area/station/medical/medbay2) +"ruY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/service/chapel) "rvx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -94637,24 +96804,26 @@ /turf/simulated/floor/plating, /area/station/maintenance/virology_maint) "rvD" = ( -/obj/structure/table/reinforced, +/obj/structure/shelf/engineering, /obj/structure/extinguisher_cabinet/directional/west, /obj/effect/turf_decal/delivery/hollow, /obj/item/radio{ - pixel_x = -6; - pixel_y = 2 + pixel_x = -8; + pixel_y = 12 }, /obj/item/radio{ - pixel_x = -2; - pixel_y = 2 + pixel_y = 12 }, /obj/item/radio{ - pixel_x = 2; - pixel_y = 2 + pixel_y = 12; + pixel_x = 8 }, /obj/item/radio{ - pixel_x = 6; - pixel_y = 2 + pixel_x = -8 + }, +/obj/item/radio, +/obj/item/radio{ + pixel_x = 8 }, /turf/simulated/floor/plasteel{ dir = 5; @@ -94668,7 +96837,7 @@ }, /obj/effect/mapping_helpers/airlock/autoname, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "rvJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -94726,7 +96895,9 @@ "rwh" = ( /obj/structure/table/reinforced, /obj/machinery/firealarm/directional/north, -/obj/machinery/recharger, +/obj/machinery/recharger{ + pixel_y = 2 + }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ dir = 1; @@ -94820,18 +96991,31 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "rxy" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/beakers, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, +/obj/structure/shelf/science, +/obj/item/reagent_containers/dropper/precision{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/lighter/zippo{ + name = "Ash Generator 3000"; + pixel_y = -6 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/reagent_containers/dropper/precision{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/lighter/zippo{ + name = "Ash Generator 3000"; + pixel_y = 7 + }, +/obj/item/reagent_containers/dropper{ + pixel_y = 6; + pixel_x = 8 + }, /turf/simulated/floor/engine, /area/station/science/misc_lab) "rxC" = ( @@ -94939,7 +97123,7 @@ dir = 1; icon_state = "darkredcorners" }, -/area/station/security/brig) +/area/station/security/lobby) "rza" = ( /obj/structure/musician/piano, /turf/simulated/floor/plasteel{ @@ -95086,12 +97270,11 @@ "rBp" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/machinery/light/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "rBP" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -95128,7 +97311,6 @@ /area/station/service/chapel/study) "rCj" = ( /obj/machinery/alarm/directional/south, -/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ icon_state = "red" }, @@ -95169,8 +97351,13 @@ d2 = 8; icon_state = "1-8" }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "rCA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -95280,7 +97467,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "rFl" = ( /obj/effect/landmark/costume/random, /obj/structure/table/wood, @@ -95302,7 +97489,6 @@ /obj/structure/chair{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -95385,11 +97571,15 @@ "rIx" = ( /obj/structure/table/reinforced, /obj/item/taperecorder{ - pixel_x = -7 + pixel_x = -8; + pixel_y = 4 }, -/obj/item/taperecorder, /obj/item/taperecorder{ - pixel_x = 7 + pixel_y = 4 + }, +/obj/item/taperecorder{ + pixel_x = 8; + pixel_y = 4 }, /obj/machinery/economy/vending/wallmed/directional/north, /obj/effect/turf_decal/delivery/hollow, @@ -95417,7 +97607,7 @@ }, /area/station/public/pool) "rJd" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/port) "rJg" = ( @@ -95495,6 +97685,17 @@ icon_state = "chapel" }, /area/station/maintenance/starboard2) +"rKn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/stack/rods{ + amount = 8; + pixel_y = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/station/engineering/atmos) "rKq" = ( /obj/machinery/smartfridge/secure/extract, /obj/effect/turf_decal/delivery/hollow, @@ -95575,19 +97776,12 @@ /area/station/security/warden) "rLs" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/monkeycubes{ - pixel_y = 6; - pixel_x = -6 - }, /obj/machinery/door_control/shutter/west{ id = "Virology2"; name = "Virology Window Shutters Control" }, -/obj/item/storage/box/monkeycubes/nian_worme_cubes{ - pixel_x = 6 - }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "rLx" = ( /turf/simulated/floor/carpet/black, /area/station/command/office/hos) @@ -95633,7 +97827,7 @@ /area/station/maintenance/fsmaint) "rMm" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -95773,6 +97967,8 @@ /area/station/public/locker) "rOG" = ( /obj/structure/sign/poster/official/random/north, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "rOJ" = ( @@ -95843,12 +98039,10 @@ }, /area/station/supply/storage) "rQi" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/carpet/black, -/area/station/service/chapel) +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/abandonedbar) "rQj" = ( /obj/machinery/firealarm/directional/west, /obj/structure/table/reinforced, @@ -95935,7 +98129,7 @@ /obj/structure/closet/coffin, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/station/service/chapel) +/area/station/service/chapel/office) "rRw" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -96061,7 +98255,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "rTi" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/machinery/door/poddoor/shutters/preopen{ @@ -96089,13 +98283,11 @@ "rTF" = ( /obj/structure/table/wood, /obj/item/taperecorder{ - pixel_x = 3; + pixel_x = 11; pixel_y = 3 }, -/obj/item/storage/fancy/donut_box, -/obj/item/reagent_containers/drinks/bottle/whiskey{ - pixel_x = 3; - pixel_y = 3 +/obj/item/storage/fancy/donut_box{ + pixel_y = 2 }, /obj/item/reagent_containers/drinks/drinkingglass/shotglass, /obj/structure/cable{ @@ -96132,7 +98324,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "rUQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -96304,14 +98496,14 @@ /obj/effect/mapping_helpers/airlock/autoname, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/simulated/floor/plating, /area/station/security/permabrig) +"rXQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash, +/turf/simulated/floor/plating, +/area/station/maintenance/fore) "rXW" = ( /obj/structure/cable{ d1 = 2; @@ -96400,33 +98592,18 @@ }, /area/station/medical/medbay) "rYw" = ( -/obj/structure/rack, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/box/trackimp, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/storage/toolbox/mechanical, /obj/effect/turf_decal/delivery/red/hollow, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/door/window/reinforced/normal{ - dir = 8 - }, /obj/effect/turf_decal/delivery/red/hollow, /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/effect/mapping_helpers/airlock/windoor/access/any/security/general{ - dir = 8 - }, +/obj/structure/shelf/security, +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/rubbershot, +/obj/item/storage/fancy/shell/tranquilizer, +/obj/item/storage/toolbox/mechanical, +/obj/item/shield/riot, +/obj/item/storage/toolbox/mechanical, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "rYP" = ( @@ -96486,7 +98663,7 @@ /turf/simulated/floor/carpet/black, /area/station/service/chapel/bedroom) "rZD" = ( -/obj/effect/spawner/window/reinforced/grilled, +/obj/effect/spawner/window/reinforced/plasma/grilled, /obj/structure/cable{ d1 = 1; d2 = 8; @@ -96562,6 +98739,13 @@ /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/wood/oak, /area/station/maintenance/library) +"sah" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/public/locker) "san" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -96589,6 +98773,16 @@ icon_state = "neutralfull" }, /area/station/engineering/tech_storage) +"saz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/recharger/wallcharger{ + pixel_y = 24; + pixel_x = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/station/security/armory/secure) "saC" = ( /obj/structure/flora/rock/jungle, /obj/effect/decal/cleanable/dirt, @@ -96605,6 +98799,10 @@ /area/station/hallway/primary/port) "saO" = ( /obj/machinery/economy/vending/boozeomat, +/obj/item/toy/figure/crew/bartender{ + pixel_y = 16; + layer = 3.4 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -96635,6 +98833,8 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/oil_maybe, /obj/item/reagent_containers/glass/bucket, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -96754,7 +98954,7 @@ /obj/machinery/door_control/shutter{ pixel_y = -24; id = "GYM"; - req_one_access_txt = "1"; + req_access = list(1); name = "Interrogation Shutters Control" }, /obj/effect/decal/cleanable/dirt, @@ -96803,6 +99003,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -96861,6 +99064,23 @@ icon_state = "neutral" }, /area/station/maintenance/port) +"sfa" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/hallway/primary/port) "sfb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -96906,7 +99126,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, -/area/station/public/fitness) +/area/station/public/locker) "sfD" = ( /obj/structure/table/reinforced, /obj/item/radio/intercom/directional/north, @@ -96922,6 +99142,7 @@ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "green" @@ -97065,6 +99286,7 @@ network = list("Research","SS13"); pixel_y = -22 }, +/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel/dark, /area/station/security/detective) "sim" = ( @@ -97120,7 +99342,7 @@ /obj/machinery/access_button/south{ autolink_id = "engines_btn_int"; name = "interior access button"; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, @@ -97143,10 +99365,6 @@ "sjM" = ( /obj/structure/dresser, /obj/machinery/light_switch/north, -/obj/item/clothing/under/towel/long/alt/red, -/obj/item/clothing/head/towel/red{ - pixel_y = 7 - }, /turf/simulated/floor/carpet/black, /area/station/command/office/hos) "sjT" = ( @@ -97251,24 +99469,23 @@ "smh" = ( /obj/structure/table/reinforced, /obj/item/paper_bin{ - pixel_y = 4; - pixel_x = -6 + pixel_y = 2; + pixel_x = -8 }, /obj/item/pen/multi{ - pixel_y = 6; - pixel_x = -6 + pixel_y = 2; + pixel_x = -8 }, -/obj/item/taperecorder, -/obj/item/tape/random{ - pixel_x = 3; - pixel_y = -3 +/obj/item/taperecorder{ + pixel_x = 6; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, /area/station/science/misc_lab) "sml" = ( -/obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" @@ -97331,11 +99548,15 @@ /area/station/hallway/secondary/exit) "smZ" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/zipties, +/obj/item/storage/box/zipties{ + pixel_x = -4; + pixel_y = 1 + }, /obj/item/flash{ - pixel_x = 8; - pixel_y = 3 + pixel_x = 10; + pixel_y = 4 }, +/obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkred" @@ -97346,6 +99567,18 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel, /area/station/security/permabrig) +"snc" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light_switch/north, +/turf/simulated/floor/plasteel, +/area/station/engineering/control) "snj" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/carpet, @@ -97437,6 +99670,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "soY" = ( +/obj/structure/reagent_dispensers/peppertank/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" @@ -97582,7 +99816,14 @@ /area/station/maintenance/electrical) "sqA" = ( /obj/structure/table/reinforced, -/obj/item/book/manual/wiki/sop_service, +/obj/item/book/manual/wiki/sop_service{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 12; + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, @@ -97625,7 +99866,7 @@ /obj/machinery/access_button/west{ autolink_id = "atmostanks_btn_int"; name = "interior access button"; - req_access_txt = "32" + req_access = list(32) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plasteel, @@ -97677,7 +99918,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "ssg" = ( /obj/machinery/computer/crew{ dir = 4 @@ -97701,7 +99942,7 @@ }, /obj/machinery/newscaster/directional/south, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "ssy" = ( /obj/effect/turf_decal/arrows/black{ dir = 1 @@ -97820,7 +100061,7 @@ dir = 4; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "stG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -97839,7 +100080,6 @@ /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "suy" = ( -/obj/machinery/light/directional/west, /obj/item/kirbyplants, /obj/structure/sign/poster/random{ pixel_y = -32 @@ -97857,7 +100097,7 @@ int_door_link_id = "stationai_door_int"; pixel_y = -57; vent_link_id = "stationai_vent"; - req_access_txt = "13" + req_access = list(13) }, /obj/structure/cable{ d1 = 4; @@ -97876,17 +100116,16 @@ /turf/simulated/floor/plasteel/dark, /area/station/engineering/ai_transit_tube) "suE" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/light/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "caution" }, /area/station/public/fitness) "suI" = ( -/obj/machinery/light/directional/east, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/carpet, -/area/station/service/bar/atrium) +/area/station/service/bar) "suO" = ( /obj/structure/closet/secure_closet/security, /obj/effect/turf_decal/delivery/red, @@ -97924,10 +100163,13 @@ /area/station/command/bridge) "svf" = ( /obj/structure/rack, -/obj/item/storage/box/teargas, /obj/item/storage/box/teargas{ - pixel_x = -3; - pixel_y = -3 + pixel_x = 2; + pixel_y = 8 + }, +/obj/item/storage/box/teargas{ + pixel_x = -2; + pixel_y = 2 }, /obj/structure/cable{ d1 = 1; @@ -98047,6 +100289,7 @@ /area/station/medical/virology) "sxf" = ( /obj/structure/janitorialcart, +/obj/item/mop, /turf/simulated/floor/plasteel{ icon_state = "purple" }, @@ -98071,8 +100314,14 @@ /obj/effect/turf_decal/delivery/hollow, /obj/effect/turf_decal/stripes/line, /obj/structure/table/reinforced, -/obj/item/tank/jetpack/carbondioxide, -/obj/item/gps/engineering, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/gps/engineering{ + pixel_x = -8; + pixel_y = 2 + }, /obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) @@ -98086,7 +100335,15 @@ /obj/item/food/grown/poppy, /obj/item/food/grown/poppy, /turf/simulated/floor/carpet/black, -/area/station/service/chapel) +/area/station/service/chapel/funeral) +"sxG" = ( +/obj/machinery/power/apc/directional/east, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel/dark, +/area/station/public/fitness) "sxJ" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ @@ -98096,18 +100353,26 @@ "sxU" = ( /obj/structure/table/reinforced, /obj/item/stack/sheet/glass{ - amount = 20 + amount = 20; + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -8; + pixel_y = 10 }, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/key/janitor, /obj/machinery/light/small/directional/north, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/key/janitor{ + pixel_y = 3 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "purple" @@ -98129,7 +100394,7 @@ using_irrigation = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/south, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel, /area/station/security/permabrig) "syk" = ( @@ -98318,7 +100583,7 @@ }, /area/station/service/kitchen) "sAs" = ( -/obj/machinery/smartfridge, +/obj/machinery/smartfridge/food/chef, /obj/machinery/door/window/classic/normal{ dir = 4; name = "Kitchen Desk" @@ -98392,9 +100657,9 @@ /obj/machinery/door_control/shutter/west{ id = "justice_blast"; name = "Space Vent"; - req_one_access_txt = "2"; pixel_x = 24; - pixel_y = -5 + pixel_y = -5; + req_access = list(2) }, /obj/machinery/flasher_button{ id = "Execution"; @@ -98402,12 +100667,18 @@ pixel_y = 7 }, /obj/structure/table/reinforced, -/obj/item/reagent_containers/glass/bottle/morphine{ - pixel_x = 8 +/obj/item/reagent_containers/glass/bottle/facid{ + pixel_y = 10 }, -/obj/item/reagent_containers/glass/bottle/morphine, -/obj/item/reagent_containers/glass/bottle/facid, /obj/structure/cable, +/obj/item/reagent_containers/glass/bottle/morphine{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/item/reagent_containers/glass/bottle/morphine{ + pixel_x = -6; + pixel_y = 4 + }, /turf/simulated/floor/plasteel/dark, /area/station/security/execution) "sAP" = ( @@ -98450,6 +100721,7 @@ /obj/machinery/economy/vending/plasmaresearch, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/west, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel, /area/station/science/toxins/mixing) "sBw" = ( @@ -98472,7 +100744,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/window/reinforced/grilled, +/obj/effect/spawner/window/reinforced/plasma/grilled, /obj/structure/cable{ d2 = 2; icon_state = "0-2" @@ -98521,6 +100793,7 @@ /obj/machinery/door_timer/cell_1{ pixel_y = 32 }, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" }, @@ -98535,7 +100808,6 @@ /turf/simulated/floor/plasteel/dark, /area/station/science/robotics/chargebay) "sBV" = ( -/obj/machinery/light/directional/south, /obj/machinery/computer/scan_consolenew{ dir = 1 }, @@ -98682,13 +100954,14 @@ /obj/machinery/door_control/shutter/east{ pixel_y = -8; id = "QMLoaddoor2"; - req_one_access_txt = "79" + req_access = list(79) }, /obj/machinery/door_control/shutter/east{ pixel_y = 8; id = "QMLoaddoor"; - req_one_access_txt = "79" + req_access = list(79) }, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -98773,6 +101046,9 @@ /obj/machinery/atmospherics/portable/canister/oxygen, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/light/small/directional/north, +/obj/structure/sign/nosmoking_2{ + pixel_y = 32 + }, /turf/simulated/floor/plasteel, /area/station/engineering/atmos/control) "sFp" = ( @@ -98816,11 +101092,16 @@ "sGa" = ( /obj/structure/cable{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 8; + icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -98888,12 +101169,14 @@ /area/station/security/permabrig) "sHf" = ( /obj/structure/table/reinforced, -/obj/item/wrench, -/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/wrench{ + pixel_y = 2 + }, /obj/machinery/newscaster/directional/east, /obj/effect/turf_decal/delivery/hollow, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/mask/gas, +/obj/item/crowbar{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "caution" @@ -98972,6 +101255,7 @@ "sIj" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/north, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkred" @@ -98984,7 +101268,7 @@ /turf/simulated/floor/catwalk, /area/station/maintenance/dormitory_maintenance) "sIQ" = ( -/obj/machinery/alarm/directional/north, +/obj/structure/extinguisher_cabinet/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -99042,6 +101326,9 @@ d2 = 4; icon_state = "1-4" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "sJL" = ( @@ -99168,11 +101455,16 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "redcorner" }, -/area/station/security/storage) +/area/station/security/restroom) "sMh" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -99404,22 +101696,23 @@ "sQe" = ( /obj/machinery/alarm/directional/south, /obj/structure/table/reinforced, -/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags{ + pixel_x = 10; + pixel_y = 4 + }, /obj/item/assembly/signaler{ code = 6; - frequency = 1445 + frequency = 1445; + pixel_x = -4; + pixel_y = 6 }, /turf/simulated/floor/plasteel/dark, /area/station/security/execution) "sQf" = ( /obj/structure/table/reinforced, /obj/item/stack/rods{ - amount = 8 - }, -/obj/item/storage/box/lights/mixed, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 + amount = 8; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -99515,7 +101808,7 @@ icon_state = "4-8" }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "sRJ" = ( /obj/machinery/door/airlock/mining/glass, /obj/effect/mapping_helpers/airlock/autoname, @@ -99534,7 +101827,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/sorting) "sRU" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/library) "sSr" = ( @@ -99643,6 +101936,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fore2) "sUt" = ( +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkblue" @@ -99676,8 +101970,8 @@ int_button_link_id = "fpsolar_btn_int"; int_door_link_id = "fpsolar_door_int"; pixel_y = 25; - req_access_txt = "13"; - vent_link_id = "fpsolar_vent" + vent_link_id = "fpsolar_vent"; + req_access = list(13) }, /obj/structure/cable{ d1 = 4; @@ -99700,13 +101994,13 @@ /area/station/maintenance/port) "sVG" = ( /obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -4; + pixel_y = 2 }, -/obj/item/stack/sheet/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 4; + pixel_y = 2 }, /obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel{ @@ -99921,6 +102215,7 @@ /area/station/hallway/secondary/exit) "sZb" = ( /obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "red" @@ -100011,7 +102306,6 @@ /obj/item/storage/box/monkeycubes, /obj/item/storage/bag/bio, /obj/effect/turf_decal/delivery/hollow, -/obj/structure/sign/poster/official/random/south, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) "tam" = ( @@ -100172,11 +102466,7 @@ }, /area/station/security/main) "tdj" = ( -/obj/machinery/camera{ - c_tag = "Vault"; - dir = 4 - }, -/mob/living/simple_animal/mouse/brown/Tom, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel/dark, /area/station/command/vault) "tdo" = ( @@ -100244,7 +102534,7 @@ /area/station/medical/patients_rooms) "teg" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/virology_maint) "tep" = ( @@ -100281,7 +102571,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "teX" = ( /obj/effect/turf_decal/siding/wood/cherry{ dir = 8 @@ -100567,7 +102857,7 @@ dir = 4; icon_state = "redcorner" }, -/area/station/security/storage) +/area/station/security/restroom) "tjq" = ( /obj/machinery/door/airlock/public/glass, /obj/effect/mapping_helpers/airlock/autoname, @@ -100617,7 +102907,6 @@ /obj/effect/turf_decal/delivery/hollow, /obj/structure/bed/dogbed/pet, /mob/living/simple_animal/pet/slugcat/monk, -/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -100724,7 +103013,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "tlg" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -100754,7 +103043,14 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) +"tlq" = ( +/obj/structure/girder, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutral" + }, +/area/station/maintenance/port) "tls" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "atmostanks_vent" @@ -100765,12 +103061,18 @@ int_button_link_id = "atmostanks_btn_int"; int_door_link_id = "atmostanks_door_int"; pixel_x = 57; - req_access_txt = "32"; - vent_link_id = "atmostanks_vent" + vent_link_id = "atmostanks_vent"; + req_access = list(32) }, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/gravitygenerator) +"tlz" = ( +/obj/machinery/light/directional/east, +/turf/simulated/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/station/hallway/primary/central/nw) "tlB" = ( /obj/structure/sign/electricshock{ pixel_y = 32 @@ -100967,7 +103269,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "toG" = ( /obj/machinery/door/airlock/hydroponics, /obj/effect/mapping_helpers/airlock/autoname, @@ -101014,7 +103316,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "toU" = ( @@ -101098,8 +103400,10 @@ "tqd" = ( /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/item/dice/d12, -/obj/effect/decal/cleanable/dirt, +/obj/item/dice/d12{ + pixel_y = 4 + }, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet, /area/station/security/permabrig) "tqg" = ( @@ -101237,15 +103541,8 @@ }, /area/station/maintenance/old_detective) "trX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/directional/north, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "red" - }, -/area/station/security/brig) +/turf/simulated/wall/r_wall, +/area/station/security/restroom) "tsc" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -101279,9 +103576,6 @@ "tsr" = ( /obj/structure/closet/secure_closet/security, /obj/effect/turf_decal/delivery/red, -/obj/machinery/recharger/wallcharger{ - pixel_x = -27 - }, /obj/item/clothing/mask/balaclava, /obj/structure/window/reinforced{ dir = 8 @@ -101357,7 +103651,7 @@ dir = 4; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "ttS" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/machinery/door/poddoor/preopen{ @@ -101385,9 +103679,12 @@ /obj/item/clothing/mask/cigarette/cigar, /obj/item/lighter/zippo/engraved{ pixel_x = 8; - pixel_y = 9 + pixel_y = 8 + }, +/obj/item/ashtray/bronze{ + pixel_x = -4; + pixel_y = 4 }, -/obj/item/ashtray/bronze, /turf/simulated/floor/carpet/orange, /area/station/supply/qm) "tuq" = ( @@ -101407,7 +103704,7 @@ }, /area/station/engineering/control) "tuF" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/structure/barricade/wooden, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -101416,6 +103713,11 @@ /obj/item/camera, /turf/simulated/floor/wood/parquet, /area/station/service/library) +"tuK" = ( +/obj/structure/table/wood, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/abandonedbar) "tuP" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -101601,8 +103903,9 @@ /area/station/maintenance/fsmaint) "tyf" = ( /obj/machinery/light/nightshifted/west, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "tyw" = ( /turf/simulated/floor/plasteel{ icon_state = "red" @@ -101625,6 +103928,7 @@ /obj/effect/turf_decal/siding/blue{ dir = 4 }, +/obj/machinery/light/small/directional/east, /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "tyJ" = ( @@ -101662,7 +103966,6 @@ /obj/structure/extinguisher_cabinet/directional/east, /obj/structure/closet/radiation, /obj/effect/turf_decal/delivery/hollow, -/obj/item/clothing/glasses/meson, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "tzq" = ( @@ -101750,7 +104053,6 @@ /obj/item/instrument/bikehorn{ pixel_y = -3 }, -/obj/machinery/light/small/directional/south, /turf/simulated/floor/plasteel/dark, /area/station/security/interrogation) "tBu" = ( @@ -101784,18 +104086,33 @@ }, /area/station/engineering/atmos) "tBN" = ( -/obj/structure/rack, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/sheet/plasteel{ - amount = 25 - }, +/obj/structure/shelf/science, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/stack/sheet/plasteel/fifteen{ + pixel_y = -4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_y = 8 + }, +/obj/item/stock_parts/cell/high/plus{ + pixel_x = 8; + pixel_y = 8 + }, /turf/simulated/floor/plasteel/dark, /area/station/science/robotics/chargebay) "tCb" = ( @@ -101888,7 +104205,7 @@ dir = 1; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "tDw" = ( /turf/simulated/wall, /area/station/medical/reception) @@ -101899,16 +104216,20 @@ /area/station/maintenance/old_kitchen) "tDR" = ( /obj/structure/table, -/obj/item/stamp/granted{ - pixel_x = 3; - pixel_y = -4 - }, /obj/item/stamp/denied{ - pixel_x = -4; - pixel_y = 4 + pixel_x = 6; + pixel_y = 8 }, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/east, +/obj/machinery/firealarm/directional/east, +/obj/item/stamp/granted{ + pixel_x = 6 + }, +/obj/item/destTagger{ + pixel_x = -10; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -101943,10 +104264,13 @@ "tEi" = ( /obj/structure/table/wood, /obj/item/toy/figure/crew/hos{ - pixel_x = 2; + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/reagent_containers/drinks/mug/hos{ + pixel_x = -4; pixel_y = 7 }, -/obj/item/reagent_containers/drinks/mug/hos, /obj/machinery/camera{ c_tag = "Brig Head of Security's Bedroom"; dir = 1 @@ -102005,7 +104329,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "tEA" = ( /turf/simulated/floor/plasteel{ icon_state = "barber" @@ -102048,10 +104372,10 @@ }, /area/station/security/warden) "tFf" = ( -/obj/structure/extinguisher_cabinet/directional/north, /obj/machinery/camera{ c_tag = "Cargo Dock North" }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -102059,7 +104383,7 @@ /area/station/supply/storage) "tFi" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall/r_wall, /area/station/maintenance/starboard2) "tFq" = ( @@ -102084,18 +104408,15 @@ }, /area/station/supply/expedition) "tFP" = ( -/obj/machinery/light/small/directional/south, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkredcorners" - }, -/area/station/security/prison/cell_block/A) +/turf/simulated/wall/r_wall, +/area/station/engineering/atmos/distribution) "tFR" = ( /obj/machinery/economy/vending/cigarette, /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel, /area/station/public/pool) "tGh" = ( @@ -102225,8 +104546,13 @@ /area/station/science/xenobiology) "tHZ" = ( /obj/structure/table/wood, -/obj/item/kitchen/utensil/fork, -/obj/item/kitchen/utensil/spoon, +/obj/item/kitchen/utensil/fork{ + pixel_y = 4 + }, +/obj/item/kitchen/utensil/spoon{ + pixel_x = 8; + pixel_y = 4 + }, /turf/simulated/floor/carpet/orange, /area/station/service/bar/atrium) "tIf" = ( @@ -102339,7 +104665,7 @@ /obj/machinery/door_control/shutter/west{ id = "rndstorage"; name = "RnD Secure Storage Control"; - req_access_txt = "8" + req_access = list(8) }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -102392,7 +104718,7 @@ }, /area/station/maintenance/port) "tLi" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/starboard) "tLw" = ( @@ -102709,7 +105035,7 @@ /obj/machinery/access_button/west{ autolink_id = "assolar_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -102732,7 +105058,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 10 }, -/obj/machinery/light/small/directional/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/wood, /area/station/command/office/hos) "tSn" = ( @@ -102778,6 +105104,7 @@ name = "Test Igniter"; pixel_x = 25 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/engine, /area/station/science/test_chamber) "tST" = ( @@ -102844,7 +105171,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/security/brig, /turf/simulated/floor/plating, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "tUs" = ( /obj/structure/cable{ d1 = 1; @@ -102867,7 +105194,9 @@ "tUS" = ( /obj/machinery/ai_status_display/east, /obj/structure/table, -/obj/item/storage/fancy/donut_box, +/obj/item/storage/fancy/donut_box{ + pixel_y = 2 + }, /obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 5; @@ -103061,7 +105390,9 @@ /area/station/security/execution) "tXq" = ( /obj/structure/table/reinforced, -/obj/item/storage/fancy/donut_box, +/obj/item/storage/fancy/donut_box{ + pixel_y = 2 + }, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -103437,7 +105768,7 @@ dir = 1; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "ubk" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -103481,7 +105812,7 @@ /obj/machinery/access_button/north{ autolink_id = "apmaint2_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plasteel, @@ -103507,7 +105838,7 @@ dir = 4; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "udb" = ( /obj/structure/falsewall, /turf/simulated/floor/plating, @@ -103732,7 +106063,7 @@ }, /area/station/medical/virology) "ugI" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "uho" = ( @@ -103952,7 +106283,7 @@ /obj/machinery/access_button/south{ autolink_id = "fpsolar_btn_ext"; name = "exterior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -103996,7 +106327,7 @@ /turf/simulated/floor/wood/parquet/tile, /area/station/service/library) "ukT" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fore2) "uld" = ( @@ -104180,17 +106511,31 @@ /turf/simulated/floor/plating, /area/station/engineering/ai_transit_tube) "unT" = ( -/obj/structure/rack, +/obj/structure/shelf/supply, /obj/effect/turf_decal/delivery/hollow, -/obj/item/storage/toolbox/emergency{ - pixel_y = 10 - }, -/obj/item/storage/toolbox/emergency, -/obj/item/shovel, -/obj/item/shovel, -/obj/item/pickaxe, -/obj/item/pickaxe, /obj/effect/decal/cleanable/dirt, +/obj/item/pickaxe{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/pickaxe{ + pixel_y = -6 + }, +/obj/item/pickaxe{ + pixel_y = -6; + pixel_x = 8 + }, +/obj/item/shovel{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/shovel{ + pixel_y = 8 + }, +/obj/item/shovel{ + pixel_y = 8; + pixel_x = 8 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "brown" @@ -104280,10 +106625,10 @@ /turf/simulated/floor/engine, /area/station/engineering/engine/supermatter) "upe" = ( -/obj/machinery/light/directional/west, /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery/hollow, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "upf" = ( @@ -104473,15 +106818,33 @@ }, /area/station/hallway/primary/central) "uro" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/obj/structure/shelf/engineering, +/obj/item/storage/toolbox/electrical{ + pixel_x = -6; + pixel_y = -6 + }, +/obj/item/multitool{ + pixel_y = -6 + }, +/obj/item/clothing/gloves/color/yellow{ + pixel_x = 6; + pixel_y = -6 + }, +/obj/item/storage/toolbox/electrical{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/multitool{ + pixel_y = 8 + }, +/obj/item/clothing/gloves/color/yellow{ + pixel_x = 6; + pixel_y = 8 }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/tech_storage) "urp" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -104565,6 +106928,7 @@ /obj/effect/turf_decal/siding/blue{ dir = 5 }, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/carpet/arcade, /area/station/public/arcade) "usY" = ( @@ -104665,7 +107029,7 @@ /obj/structure/sign/poster/official/random/north, /obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "uvM" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6 @@ -104740,7 +107104,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) "uxq" = ( @@ -104791,9 +107155,8 @@ /turf/simulated/floor/mineral/tranquillite, /area/station/maintenance/starboard2) "uyC" = ( -/obj/machinery/light_switch/south, -/turf/simulated/floor/plasteel/grimy, -/area/station/security/detective) +/turf/simulated/wall/r_wall, +/area/station/security/prisonershuttle) "uzb" = ( /obj/machinery/firealarm/directional/east, /turf/simulated/floor/plasteel{ @@ -104920,19 +107283,12 @@ /turf/simulated/floor/plasteel/dark, /area/station/science/rnd) "uAY" = ( -/obj/machinery/light/directional/south, /obj/structure/table/reinforced, /obj/structure/extinguisher_cabinet/directional/south, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine{ - pixel_x = 2; - pixel_y = 1 - }, -/obj/item/clothing/glasses/meson/engine{ - pixel_x = 4; +/obj/effect/turf_decal/delivery/hollow, +/obj/item/wrench{ pixel_y = 2 }, -/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "uBa" = ( @@ -105033,7 +107389,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "uCM" = ( /obj/structure/cable{ d1 = 1; @@ -105125,6 +107481,13 @@ }, /turf/simulated/floor/plasteel, /area/station/security/permabrig) +"uFj" = ( +/obj/machinery/light_switch/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/station/science/research) "uFx" = ( /obj/structure/cable{ d1 = 1; @@ -105160,7 +107523,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, @@ -105189,7 +107551,7 @@ dir = 8; icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "uGm" = ( /obj/effect/turf_decal/siding/wood/cherry/corner{ dir = 4 @@ -105198,10 +107560,10 @@ /area/station/legal/lawoffice) "uGp" = ( /obj/item/kirbyplants, -/obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/siding/wood{ dir = 9 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/wood/fancy, /area/station/public/sleep_female) "uGY" = ( @@ -105363,6 +107725,11 @@ pixel_y = 6; pixel_x = -4 }, +/obj/machinery/firealarm/directional/south, +/obj/item/flashlight/lamp{ + pixel_y = 6; + pixel_x = 10 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitegreencorner" @@ -105377,7 +107744,7 @@ dir = 1 }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "uJa" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -105462,7 +107829,6 @@ /area/station/medical/morgue) "uKq" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/east, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, @@ -105561,7 +107927,7 @@ /obj/item/storage/toolbox/electrical, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "uLC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -105636,6 +108002,9 @@ /area/station/maintenance/starboard2) "uMM" = ( /obj/structure/table/wood, +/obj/item/clipboard{ + pixel_y = 4 + }, /turf/simulated/floor/carpet, /area/station/security/detective) "uMO" = ( @@ -105796,15 +108165,16 @@ /turf/simulated/floor/plasteel{ icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "uOh" = ( /obj/structure/table/reinforced, /obj/item/storage/box/zipties, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "uOC" = ( /obj/machinery/light/directional/north, /obj/structure/table, @@ -105903,7 +108273,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/landmark/spawner/prisoner, /turf/simulated/floor/plasteel/dark, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "uPY" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -105983,7 +108353,7 @@ /obj/machinery/access_button/south{ autolink_id = "stationai_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -106010,16 +108380,15 @@ /area/station/maintenance/old_kitchen) "uQW" = ( /obj/structure/table/reinforced, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/analyzer, /obj/effect/turf_decal/delivery/hollow, /obj/structure/cable{ d1 = 2; d2 = 8; icon_state = "2-8" }, +/obj/item/analyzer{ + pixel_y = 3 + }, /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "uRf" = ( @@ -106105,37 +108474,29 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/port2) "uSp" = ( -/obj/structure/rack, +/obj/structure/shelf/security, +/obj/item/clothing/suit/armor/riot/sec{ + pixel_x = -6 + }, /obj/item/clothing/suit/armor/riot/sec, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/suit/armor/bulletproof/sec, -/obj/item/clothing/head/helmet/alt, -/obj/item/shield/riot{ - pixel_x = -3; - pixel_y = -3 +/obj/item/clothing/suit/armor/riot/sec{ + pixel_x = 6 }, -/obj/structure/window/reinforced{ - dir = 4 +/obj/item/clothing/head/helmet/riot{ + pixel_y = 8; + pixel_x = -6 }, -/obj/structure/window/reinforced, -/obj/machinery/door/window/reinforced/normal{ - dir = 8 +/obj/item/clothing/head/helmet/riot{ + pixel_y = 8 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_y = 8; + pixel_x = 6 }, /obj/effect/turf_decal/delivery/red/hollow, /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/suit/armor/bulletproof/sec, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/suit/armor/riot/sec, -/obj/item/shield/riot{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/effect/mapping_helpers/airlock/windoor/access/any/security/general{ - dir = 8 - }, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "uSu" = ( @@ -106246,7 +108607,7 @@ /turf/simulated/floor/plasteel{ icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "uTz" = ( /obj/structure/chair/stool{ dir = 8 @@ -106272,14 +108633,13 @@ dir = 6 }, /obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/window/reinforced{ - dir = 8 +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +/obj/item/pen{ + pixel_x = -4; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -106453,8 +108813,8 @@ int_button_link_id = "engines_btn_int"; int_door_link_id = "engines_door_int"; pixel_y = 25; - req_access_txt = "10;13"; - vent_link_id = "engines_vent" + vent_link_id = "engines_vent"; + req_access = list(10,13) }, /obj/structure/cable/yellow{ d1 = 4; @@ -106615,13 +108975,16 @@ "uXC" = ( /obj/structure/table/wood, /obj/item/folder/blue{ - pixel_x = 5; - pixel_y = 5 + pixel_x = 7; + pixel_y = 2 + }, +/obj/item/folder/yellow{ + pixel_x = 1; + pixel_y = 2 }, -/obj/item/folder/yellow, /obj/item/folder/red{ - pixel_x = -5; - pixel_y = -5 + pixel_x = -6; + pixel_y = 2 }, /obj/structure/cable{ d1 = 4; @@ -106669,10 +109032,10 @@ ext_door_link_id = "vir_outer_door"; int_button_link_id = "vir_int_button"; int_door_link_id = "vir_int_door"; - req_access_txt = "13"; vent_link_id = "vir_vent"; pixel_x = 25; - ext_button_link_id = "vir_outer_button" + ext_button_link_id = "vir_outer_button"; + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "vir_vent"; @@ -106752,6 +109115,9 @@ /area/station/maintenance/starboard2) "uZz" = ( /obj/effect/landmark/start/janitor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, /turf/simulated/floor/plasteel, /area/station/service/janitor) "vab" = ( @@ -106767,6 +109133,7 @@ /obj/machinery/door/window/classic/normal{ name = "Cryo Tank Storage" }, +/obj/effect/mapping_helpers/airlock/windoor/access/any/medical/general, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "whiteblue" @@ -106853,9 +109220,7 @@ "vbK" = ( /obj/structure/closet/bombclosetsecurity, /obj/effect/turf_decal/delivery/red/hollow, -/obj/machinery/recharger/wallcharger{ - pixel_x = 32 - }, +/obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "vbQ" = ( @@ -106921,7 +109286,7 @@ /turf/simulated/floor/plasteel{ icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "vdk" = ( /obj/machinery/status_display/directional/north, /turf/simulated/floor/plasteel{ @@ -106953,14 +109318,14 @@ /obj/structure/closet/crate/can, /obj/effect/decal/cleanable/dirt, /obj/item/wirecutters, -/obj/machinery/firealarm/directional/west, +/obj/item/radio/intercom/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" }, /area/station/security/permabrig) "vdP" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, @@ -107076,6 +109441,17 @@ icon_state = "white" }, /area/station/medical/medbay) +"vgD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/station/engineering/break_room/secondary) "vgU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -107103,9 +109479,9 @@ /obj/machinery/access_button/south{ autolink_id = "perma_btn_int"; name = "Prison Wing Access Button"; - req_one_access_txt = "2"; pixel_y = 0; - pixel_x = -24 + pixel_x = -24; + req_access = list(2) }, /obj/machinery/door/firedoor, /obj/effect/decal/cleanable/dirt, @@ -107120,19 +109496,13 @@ /turf/simulated/floor/engine, /area/station/science/misc_lab) "vhK" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/spray/pestspray, -/obj/item/reagent_containers/spray/pestspray, -/obj/item/clothing/gloves/botanic_leather, -/obj/item/cultivator, -/obj/item/cultivator, -/obj/item/shovel/spade, +/obj/structure/shelf, /obj/item/shovel/spade, +/obj/item/cultivator, /obj/item/plant_analyzer, -/obj/effect/decal/cleanable/dirt, +/obj/item/shovel/spade, +/obj/item/cultivator, +/obj/item/clothing/gloves/botanic_leather, /obj/structure/cable{ d1 = 1; d2 = 4; @@ -107143,17 +109513,13 @@ d2 = 8; icon_state = "1-8" }, -/obj/item/storage/bag/plants/seed_sorting_tray, /turf/simulated/floor/plasteel, /area/station/security/permabrig) "vhM" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/chair{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/east, -/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet, /area/station/security/permabrig) "vhS" = ( @@ -107273,7 +109639,7 @@ }, /area/station/maintenance/electrical) "vjX" = ( -/obj/effect/spawner/random_barrier/possibly_welded_airlock, +/obj/effect/spawner/random/barrier/possibly_welded_airlock, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -107432,6 +109798,10 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/medmaint) +"vlX" = ( +/obj/effect/turf_decal/stripes/line, +/turf/simulated/floor/plating/airless, +/area/station/science/toxins/test) "vma" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -107527,13 +109897,14 @@ /area/station/medical/storage) "vnb" = ( /obj/structure/table/wood, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/effect/decal/cleanable/dust, +/obj/machinery/light/directional/south, /turf/simulated/floor/wood/oak, /area/station/security/permabrig) "vnh" = ( @@ -107748,7 +110119,7 @@ name = "KEEP CLEAR: DOCKING AREA" }, /turf/simulated/wall/r_wall, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "vrH" = ( /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -107769,7 +110140,7 @@ }, /obj/machinery/newscaster/directional/south, /turf/simulated/floor/wood/oak, -/area/station/service/theatre) +/area/station/service/bar/atrium) "vrM" = ( /obj/machinery/suit_storage_unit/security/secure, /obj/machinery/light/small/directional/north, @@ -107899,9 +110270,7 @@ dir = 1 }, /obj/structure/table_frame, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /obj/item/stack/rods, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -107998,17 +110367,15 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/machinery/alarm/directional/west, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "vxh" = ( -/obj/structure/chair/sofa/pew/left{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "chapel" + dir = 4; + icon_state = "darkred" }, /area/station/security/permabrig) "vxl" = ( @@ -108023,7 +110390,7 @@ /area/station/hallway/secondary/exit) "vxn" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/medmaint) "vxw" = ( @@ -108034,7 +110401,7 @@ }, /obj/effect/landmark/spawner/prisoner, /turf/simulated/floor/plasteel/dark, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "vxH" = ( /obj/structure/chair/office{ dir = 8 @@ -108128,13 +110495,13 @@ }, /area/station/medical/chemistry) "vzf" = ( -/obj/structure/table, /obj/structure/window/reinforced{ dir = 1 }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/structure/table, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -108157,8 +110524,8 @@ int_button_link_id = "fssolar_btn_int"; int_door_link_id = "fssolar_door_int"; pixel_y = 25; - req_access_txt = "13"; - vent_link_id = "fssolar_vent" + vent_link_id = "fssolar_vent"; + req_access = list(13) }, /obj/effect/turf_decal/delivery, /obj/structure/cable{ @@ -108426,18 +110793,6 @@ /area/station/service/hydroponics) "vDZ" = ( /obj/structure/closet/wardrobe/coroner, -/obj/item/storage/box/bodybags{ - pixel_y = 2 - }, -/obj/item/storage/box/bodybags{ - pixel_y = 2 - }, -/obj/item/storage/box/bodybags{ - pixel_y = 2 - }, -/obj/item/storage/box/gloves{ - pixel_y = -6 - }, /obj/structure/extinguisher_cabinet/directional/east, /turf/simulated/floor/plasteel{ dir = 5; @@ -108608,6 +110963,12 @@ }, /turf/simulated/floor/plasteel, /area/station/security/permabrig) +"vGK" = ( +/obj/machinery/light_switch/west, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/station/security/prison/cell_block/A) "vGZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -108881,7 +111242,7 @@ /obj/machinery/access_button/east{ autolink_id = "escape_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -108957,8 +111318,14 @@ /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/delivery/hollow, /obj/structure/table/reinforced, -/obj/item/tank/jetpack/carbondioxide, -/obj/item/gps/engineering, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/gps/engineering{ + pixel_x = -8; + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "vLX" = ( @@ -109200,7 +111567,7 @@ }, /obj/structure/sink/directional/north, /turf/simulated/floor/plasteel, -/area/station/service/theatre) +/area/station/public/toilet/unisex) "vPY" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -109255,12 +111622,16 @@ "vQw" = ( /obj/structure/table/reinforced, /obj/machinery/light/small/directional/north, -/obj/item/stack/sheet/plasteel, -/obj/item/wrench, +/obj/item/wrench{ + pixel_y = 2 + }, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/crowbar/engineering{ + pixel_y = 2 + }, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "vQN" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/reinforced/normal{ @@ -109333,19 +111704,29 @@ /turf/simulated/floor/plating, /area/station/maintenance/abandonedbar) "vRU" = ( -/obj/structure/table/reinforced, +/obj/structure/shelf/engineering, +/obj/item/airalarm_electronics{ + pixel_x = -6; + pixel_y = -4 + }, /obj/item/stack/sheet/plasteel{ - amount = 5 + amount = 5; + pixel_y = -4 }, -/obj/item/stack/sheet/rglass{ - amount = 50 +/obj/item/firealarm_electronics{ + pixel_x = 6; + pixel_y = -4 }, -/obj/structure/window/reinforced{ - dir = 4 +/obj/item/airalarm_electronics{ + pixel_x = -6; + pixel_y = 8 }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 +/obj/item/stack/sheet/rglass/fifty{ + pixel_y = 6 + }, +/obj/item/firealarm_electronics{ + pixel_x = 6; + pixel_y = 8 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -109373,7 +111754,9 @@ /area/station/science/explab/chamber) "vTi" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/monkeycubes, +/obj/item/storage/box/monkeycubes{ + pixel_y = 4 + }, /obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ icon_state = "darkred" @@ -109465,7 +111848,7 @@ dir = 1; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "vUj" = ( /obj/structure/cable{ d1 = 1; @@ -109531,7 +111914,7 @@ /obj/machinery/door_control/shutter{ pixel_y = 24; id = "evidence"; - req_one_access_txt = "1"; + req_access = list(1); name = "Evidence Shutters Control"; pixel_x = -24 }, @@ -109667,15 +112050,17 @@ /obj/machinery/ai_status_display/south, /obj/structure/table/reinforced, /obj/effect/turf_decal/delivery/hollow, -/obj/item/painter, -/obj/item/painter{ - pixel_x = 2; - pixel_y = 2 +/obj/item/clothing/glasses/meson/engine{ + pixel_x = 4; + pixel_y = 8 }, -/obj/item/painter{ +/obj/item/clothing/glasses/meson/engine{ pixel_x = 4; pixel_y = 4 }, +/obj/item/clothing/glasses/meson/engine{ + pixel_x = 4 + }, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "vWv" = ( @@ -109765,6 +112150,7 @@ /area/station/legal/magistrate) "vXr" = ( /obj/structure/railing, +/obj/machinery/light/small/directional/west, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -109804,11 +112190,12 @@ }, /area/station/maintenance/old_detective) "vYm" = ( -/obj/structure/flora/rock/jungle, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/north, -/turf/simulated/floor/grass, -/area/station/security/permabrig) +/obj/machinery/firealarm/directional/south, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredcorners" + }, +/area/station/security/prison/cell_block/A) "vYt" = ( /obj/machinery/atmospherics/air_sensor{ autolink_id = "co2_sensor" @@ -109942,7 +112329,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "wah" = ( /obj/item/radio/intercom/directional/south, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -109962,7 +112349,7 @@ "waz" = ( /obj/effect/landmark/spawner/prisoner, /turf/simulated/floor/plasteel/dark, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "waQ" = ( /obj/structure/cable{ d1 = 1; @@ -109975,6 +112362,7 @@ /area/station/engineering/controlroom) "waT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/mob/living/simple_animal/mouse/brown/Tom, /turf/simulated/floor/greengrid, /area/station/command/vault) "wbd" = ( @@ -110045,11 +112433,12 @@ }, /obj/effect/landmark/start/security_officer, /obj/structure/sign/poster/official/random/east, +/obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "wbY" = ( /obj/structure/cable{ d1 = 1; @@ -110146,7 +112535,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "wdX" = ( /obj/machinery/computer/mech_bay_power_console, /turf/simulated/floor/plasteel{ @@ -110312,18 +112701,35 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/structure/rack, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/sheet/glass/fifty, +/obj/structure/shelf/engineering, /obj/effect/turf_decal/delivery/hollow, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 4; + pixel_x = -6 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = 4; + pixel_x = 6 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = -4; + pixel_x = -6 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = -4 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_y = -4; + pixel_x = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "yellowfull" }, @@ -110428,6 +112834,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel/grimy, /area/station/security/detective) "wiJ" = ( @@ -110583,6 +112990,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -110658,7 +113066,6 @@ /turf/simulated/floor/plasteel/dark, /area/station/science/robotics) "wmx" = ( -/obj/machinery/firealarm/directional/west, /obj/machinery/disposal{ name = "Deathposal" }, @@ -110666,6 +113073,7 @@ pixel_y = 32 }, /obj/structure/disposalpipe/trunk, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitegreencorner" @@ -110692,7 +113100,7 @@ /turf/simulated/floor/plasteel{ icon_state = "Dark" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "wny" = ( /obj/machinery/door_control/shutter/south{ id = "kitchenhall"; @@ -110781,7 +113189,7 @@ /obj/machinery/access_button/north{ autolink_id = "engines_btn_ext"; name = "exterior access button"; - req_access_txt = "10;13" + req_access = list(10,13) }, /obj/effect/mapping_helpers/airlock/access/all/engineering/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/construction, @@ -110821,11 +113229,15 @@ /turf/simulated/floor/plasteel{ icon_state = "neutral" }, -/area/station/public/fitness) +/area/station/public/locker) "wpc" = ( /obj/effect/spawner/random_spawners/wall_rusted_maybe, /turf/simulated/wall, /area/station/science/break_room) +"wpe" = ( +/obj/effect/turf_decal/delivery/hollow, +/turf/simulated/floor/plasteel, +/area/station/engineering/hardsuitstorage) "wpg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -110890,7 +113302,7 @@ dir = 6 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/plasteel, /area/station/security/permabrig) "wqN" = ( @@ -110930,7 +113342,7 @@ int_door_link_id = "apmaint2_door_int"; pixel_y = 25; vent_link_id = "apmaint2_vent"; - req_access_txt = "13" + req_access = list(13) }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ autolink_id = "apmaint2_vent"; @@ -110942,8 +113354,10 @@ "wrE" = ( /obj/structure/table/reinforced, /obj/machinery/alarm/directional/south, +/obj/item/stack/packageWrap{ + pixel_y = 6 + }, /obj/item/hand_labeler, -/obj/item/stack/packageWrap, /turf/simulated/floor/plasteel/dark, /area/station/command/office/ce) "wrR" = ( @@ -110952,6 +113366,13 @@ icon_state = "red" }, /area/station/security/brig) +"wsc" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/effect/spawner/window/reinforced/grilled, +/turf/simulated/floor/plating, +/area/station/engineering/atmos/distribution) "wsy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -111016,17 +113437,16 @@ dir = 8 }, /obj/effect/landmark/start/security_officer, -/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "wtV" = ( /turf/simulated/floor/plasteel{ icon_state = "greencorner" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "wua" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/damageturf, @@ -111197,7 +113617,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "wvY" = ( /obj/effect/turf_decal/delivery/partial{ dir = 4 @@ -111282,7 +113702,7 @@ }, /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "wwX" = ( /obj/machinery/economy/vending/clothing, /obj/effect/decal/cleanable/dirt, @@ -111303,7 +113723,7 @@ dir = 1; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "wyf" = ( /obj/structure/chair/office{ dir = 1 @@ -111338,7 +113758,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plasteel, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "wyG" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -111396,7 +113816,7 @@ /obj/machinery/access_button/north{ autolink_id = "fpsolar_btn_int"; name = "interior access button"; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -111482,7 +113902,7 @@ dir = 5; icon_state = "darkred" }, -/area/station/security/brig) +/area/station/security/lobby) "wAw" = ( /obj/structure/table, /obj/item/folder, @@ -111556,8 +113976,10 @@ /area/station/maintenance/medmaint) "wCj" = ( /obj/structure/table, -/obj/machinery/recharger, /obj/machinery/light/directional/north, +/obj/machinery/kitchen_machine/microwave{ + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" @@ -111593,18 +114015,13 @@ "wCZ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" +/obj/structure/disposalpipe/segment/corner{ + dir = 2 }, /obj/structure/cable{ - d1 = 1; + d1 = 4; d2 = 8; - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment/corner{ - dir = 2 + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ icon_state = "darkredfull" @@ -111739,7 +114156,7 @@ /turf/simulated/floor/grass/no_creep, /area/station/hallway/secondary/exit) "wFg" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fore) "wFh" = ( @@ -111836,6 +114253,9 @@ /area/station/maintenance/starboard2) "wGi" = ( /obj/machinery/light/nightshifted/east, +/obj/structure/disposalpipe/segment/corner{ + dir = 8 + }, /turf/simulated/floor/carpet/black, /area/station/service/chapel) "wGn" = ( @@ -111948,8 +114368,16 @@ volume = 200 }, /obj/effect/turf_decal/delivery/red/hollow, +/obj/item/radio/intercom/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/security/execution) +"wHR" = ( +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, +/obj/machinery/light_switch/east, +/turf/simulated/floor/carpet/black, +/area/station/service/chapel/study) "wHZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -111968,8 +114396,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/plasteel/dark, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "wIe" = ( /obj/structure/table/wood, /obj/item/pen/multi/fountain, @@ -112015,7 +114448,7 @@ dir = 1; icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) "wIR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -112108,14 +114541,14 @@ /area/station/maintenance/electrical) "wKu" = ( /obj/structure/table/reinforced, -/obj/item/stack/packageWrap{ - pixel_y = 7 - }, -/obj/item/reagent_containers/condiment/enzyme, /obj/item/reagent_containers/glass/bucket{ - pixel_x = 6 + pixel_y = 4 }, /obj/machinery/light/directional/south, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = -12; + pixel_y = 6 + }, /turf/simulated/floor/plasteel/white, /area/station/service/kitchen) "wKy" = ( @@ -112141,6 +114574,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "wLp" = ( @@ -112153,14 +114589,20 @@ /area/station/engineering/hardsuitstorage) "wLq" = ( /obj/structure/table/reinforced, -/obj/item/folder/red, -/obj/item/pen, +/obj/item/folder/red{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -6; + pixel_y = 6 + }, /obj/machinery/alarm/directional/west, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "wLR" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, @@ -112179,6 +114621,16 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/west) +"wMr" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 8 + }, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -8 + }, +/turf/simulated/floor/carpet/orange, +/area/station/service/bar/atrium) "wMt" = ( /obj/effect/spawner/random_spawners/oil_maybe, /obj/effect/decal/cleanable/dirt, @@ -112233,6 +114685,55 @@ icon_state = "dark" }, /area/station/supply/expedition) +"wNF" = ( +/obj/structure/shelf/engineering, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_y = -4; + pixel_x = -8 + }, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_y = -4 + }, +/obj/item/clothing/suit/storage/hazardvest{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/clothing/mask/gas{ + pixel_y = 8; + pixel_x = -8 + }, +/obj/item/clothing/mask/gas{ + pixel_y = 8 + }, +/obj/item/clothing/mask/gas{ + pixel_y = 8; + pixel_x = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellow" + }, +/area/station/engineering/hallway) +"wNN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/station/hallway/secondary/bridge) "wNW" = ( /obj/machinery/hydroponics/constructable{ desc = "These are connected with an irrigation tube. You see a little pipe connecting the trays."; @@ -112285,13 +114786,13 @@ /obj/machinery/button/windowtint/south{ id = "RD"; pixel_x = -6; - req_one_access_txt = "30" + req_access = list(30) }, /obj/effect/turf_decal/delivery/hollow, /obj/machinery/door_control/normal/south{ id = "rdofficedoor"; name = "Office Door"; - req_one_access_txt = "30"; + req_access = list(30); pixel_x = 6 }, /turf/simulated/floor/plasteel{ @@ -112300,6 +114801,8 @@ /area/station/command/office/rd) "wOT" = ( /obj/effect/landmark/damageturf, +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -112493,13 +114996,14 @@ icon_state = "2-8" }, /obj/effect/landmark/start/prisoner, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet, /area/station/security/permabrig) "wRE" = ( -/obj/machinery/light/directional/west, /obj/structure/sign/holy{ pixel_x = -32 }, +/obj/machinery/light/small/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "green" @@ -112561,7 +115065,7 @@ dir = 4; icon_state = "darkredcorners" }, -/area/station/security/brig) +/area/station/security/lobby) "wSu" = ( /obj/item/flag/sec, /turf/simulated/floor/plasteel{ @@ -112612,25 +115116,23 @@ }, /area/station/hallway/secondary/entry) "wSY" = ( -/obj/structure/rack, +/obj/structure/shelf/security, /obj/effect/turf_decal/delivery/red/hollow, +/obj/item/clothing/accessory/holster, /obj/item/clothing/accessory/holster{ - pixel_x = -6; - pixel_y = 6 + pixel_x = -8; + pixel_y = 12 }, /obj/item/clothing/accessory/holster{ - pixel_x = -3; - pixel_y = 3 + pixel_x = 8; + pixel_y = 12 }, /obj/item/clothing/accessory/holster{ - pixel_x = 3; - pixel_y = -3 + pixel_x = 8 }, /obj/item/clothing/accessory/holster{ - pixel_x = 6; - pixel_y = -6 + pixel_x = -8 }, -/obj/item/clothing/accessory/holster, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkred" @@ -112691,6 +115193,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 6 }, +/obj/machinery/firealarm/directional/east, /turf/simulated/floor/wood/fancy, /area/station/public/sleep_female) "wTO" = ( @@ -112782,7 +115285,11 @@ /turf/simulated/floor/plasteel{ icon_state = "brown" }, -/area/station/hallway/primary/fore) +/area/station/supply/lobby) +"wVq" = ( +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel, +/area/station/engineering/break_room/secondary) "wVC" = ( /obj/structure/chair/sofa/corner{ dir = 1 @@ -112811,13 +115318,6 @@ }, /area/station/security/range) "wVM" = ( -/obj/machinery/access_button{ - autolink_id = "enginen_btn_int"; - name = "interior access button"; - pixel_x = -20; - pixel_y = -20; - req_access_txt = "10;13" - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -112831,36 +115331,29 @@ }, /area/station/engineering/control) "wVR" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/riot/sec, -/obj/item/clothing/head/helmet/riot, +/obj/structure/shelf/security, +/obj/item/clothing/suit/armor/bulletproof/sec{ + pixel_x = -6 + }, /obj/item/clothing/suit/armor/bulletproof/sec, -/obj/item/clothing/head/helmet/alt, -/obj/item/shield/riot{ - pixel_x = -3; - pixel_y = -3 +/obj/item/clothing/suit/armor/bulletproof/sec{ + pixel_x = 6 }, -/obj/structure/window/reinforced{ - dir = 4 +/obj/item/clothing/head/helmet/alt{ + pixel_y = 8; + pixel_x = -6 }, -/obj/machinery/door/window/reinforced/normal{ - dir = 8 +/obj/item/clothing/head/helmet/alt{ + pixel_y = 8 + }, +/obj/item/clothing/head/helmet/alt{ + pixel_y = 8; + pixel_x = 6 }, /obj/effect/turf_decal/delivery/red/hollow, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/suit/armor/bulletproof/sec, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/suit/armor/riot/sec, -/obj/item/shield/riot{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/effect/mapping_helpers/airlock/windoor/access/any/security/general{ - dir = 8 - }, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "wVT" = ( @@ -113033,7 +115526,7 @@ dir = 4; icon_state = "chapel" }, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "wXn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -113060,11 +115553,16 @@ /turf/simulated/floor/wood, /area/station/command/office/hos) "wXE" = ( +/obj/machinery/power/apc/directional/east, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "wXF" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -113146,7 +115644,7 @@ "wYP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "wYQ" = ( @@ -113256,6 +115754,12 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/security/range) +"wZU" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/station/science/toxins/test) "wZX" = ( /turf/simulated/wall/r_wall, /area/station/science/server/coldroom) @@ -113263,6 +115767,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/structure/rack, +/obj/item/gun/energy/ionrifle, +/obj/item/clothing/suit/hooded/ablative, +/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel/dark, /area/station/security/armory/secure) "xag" = ( @@ -113483,7 +115991,7 @@ dir = 8; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "xdY" = ( /obj/machinery/power/apc/directional/south, /obj/structure/disposalpipe/segment/corner{ @@ -113532,7 +116040,7 @@ /obj/machinery/door_control/shutter{ id = "xeno8"; name = "Containment Control"; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/turf_decal/delivery/hollow, /obj/structure/window/reinforced{ @@ -113611,11 +116119,16 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "red" }, -/area/station/security/storage) +/area/station/security/restroom) "xgW" = ( /obj/structure/chair/sofa/pew/left{ dir = 4 @@ -113626,7 +116139,7 @@ }, /area/station/security/permabrig) "xha" = ( -/obj/structure/sign/poster/official/random/south, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ icon_state = "red" }, @@ -113733,6 +116246,7 @@ /area/station/command/office/hop) "xif" = ( /obj/structure/railing/corner, +/obj/machinery/light_switch/north, /turf/simulated/floor/wood/fancy, /area/station/service/theatre) "xiD" = ( @@ -113769,7 +116283,7 @@ /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, -/area/station/public/fitness) +/area/station/public/locker) "xjx" = ( /obj/structure/cable{ d2 = 8; @@ -113792,7 +116306,10 @@ /area/station/legal/magistrate) "xkw" = ( /obj/structure/table/wood, -/obj/item/storage/fancy/cigarettes/cigpack_robust, +/obj/item/storage/fancy/cigarettes/cigpack_robust{ + pixel_x = -4; + pixel_y = 2 + }, /obj/item/lighter/zippo{ pixel_x = 8; pixel_y = 4 @@ -113804,7 +116321,7 @@ dir = 8; icon_state = "redcorner" }, -/area/station/security/storage) +/area/station/security/restroom) "xkE" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -113857,7 +116374,7 @@ dir = 9; icon_state = "green" }, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "xli" = ( /obj/machinery/suit_storage_unit/mime/secure, /obj/machinery/door_control/shutter/west{ @@ -113952,6 +116469,7 @@ /obj/structure/closet/secure_closet/security, /obj/machinery/power/apc/directional/south, /obj/structure/cable, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "red" @@ -114029,6 +116547,13 @@ icon_state = "caution" }, /area/station/public/fitness) +"xnB" = ( +/obj/machinery/camera{ + c_tag = "Vault"; + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/station/command/vault) "xnE" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -114352,7 +116877,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fore) "xrZ" = ( -/obj/effect/spawner/random_barrier/wall_probably, +/obj/effect/spawner/random/barrier/wall_probably, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "xse" = ( @@ -114439,9 +116964,7 @@ }, /area/station/maintenance/port) "xtg" = ( -/obj/item/kirbyplants, -/obj/machinery/alarm/directional/west, -/obj/machinery/light/directional/west, +/obj/machinery/light/small/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -114481,11 +117004,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -114532,7 +117050,7 @@ }, /area/station/maintenance/fsmaint) "xtZ" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/library) "xui" = ( @@ -114646,7 +117164,7 @@ "xvU" = ( /obj/machinery/firealarm/directional/east, /turf/simulated/floor/carpet/black, -/area/station/service/chapel) +/area/station/service/chapel/funeral) "xwx" = ( /obj/structure/railing{ dir = 4 @@ -114888,21 +117406,19 @@ /turf/simulated/floor/wood/oak, /area/station/maintenance/old_kitchen) "xAg" = ( -/obj/structure/rack, +/obj/structure/shelf/engineering, /obj/effect/turf_decal/delivery/hollow, -/obj/item/stack/sheet/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass{ - pixel_x = -3; - pixel_y = -3 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/north, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/stack/sheet/glass{ + amount = 10; + pixel_y = -4 + }, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/electrical) "xAi" = ( @@ -114939,7 +117455,7 @@ }, /area/station/hallway/secondary/exit) "xAF" = ( -/obj/machinery/light_switch/south, +/obj/machinery/light/small/directional/south, /turf/simulated/floor/carpet/red, /area/station/command/office/hos) "xAW" = ( @@ -114953,8 +117469,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/mapping_helpers/airlock/access/any/security/general, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel/dark, -/area/station/security/storage) +/area/station/security/restroom) "xBx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -115237,9 +117758,16 @@ icon_state = "1-2" }, /obj/item/clipboard{ - pixel_y = 3 + pixel_x = -4 + }, +/obj/item/stamp/hos{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/lighter/zippo/hos{ + pixel_x = -4; + pixel_y = 18 }, -/obj/item/stamp/hos, /turf/simulated/floor/carpet/red, /area/station/command/office/hos) "xFt" = ( @@ -115324,7 +117852,7 @@ "xGG" = ( /obj/structure/table, /obj/machinery/atmospherics/unary/outlet_injector/on, -/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet, /area/station/security/permabrig) "xGI" = ( @@ -115377,7 +117905,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/station/service/chapel) +/area/station/service/chapel/office) "xHN" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/oil_maybe, @@ -115408,6 +117936,7 @@ /obj/effect/mapping_helpers/airlock/windoor/access/any/security/brig{ dir = 8 }, +/obj/machinery/light/directional/east, /turf/simulated/floor/plasteel/dark, /area/station/security/permabrig) "xIf" = ( @@ -115420,7 +117949,7 @@ /turf/simulated/floor/wood/fancy/cherry, /area/station/public/vacant_store) "xIh" = ( -/obj/effect/spawner/window/reinforced/grilled, +/obj/effect/spawner/window/reinforced/plasma/grilled, /obj/structure/cable{ d2 = 8; icon_state = "0-8" @@ -115511,9 +118040,9 @@ /obj/machinery/door_control/shutter/east{ id = "Prison Gate"; name = "Prison Wing Lockdown"; - req_one_access_txt = "2"; pixel_y = 8; - pixel_x = 38 + pixel_x = 38; + req_access = list(2) }, /obj/machinery/door_control/shutter/east{ id = "Secure Gate"; @@ -115705,16 +118234,22 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/port) "xKV" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/rock/jungle, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/outlet_injector/on{ - dir = 4 - }, +/obj/structure/shelf, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/spray/pestspray, +/obj/item/storage/bag/plants/seed_sorting_tray, +/obj/item/reagent_containers/spray/pestspray, /turf/simulated/floor/grass, /area/station/security/permabrig) "xKX" = ( /obj/structure/table, +/obj/machinery/requests_console/directional/east, +/obj/item/clothing/head/welding{ + pixel_x = -6; + pixel_y = 6 + }, /obj/item/paper_bin{ pixel_y = 4; pixel_x = 6 @@ -115723,7 +118258,6 @@ pixel_x = 5; pixel_y = 6 }, -/obj/machinery/requests_console/directional/east, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -115767,8 +118301,8 @@ pixel_x = -26 }, /obj/effect/turf_decal/delivery/hollow, -/obj/machinery/firealarm/directional/north, /obj/effect/landmark/start/assistant, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "hydrofloor" }, @@ -115856,7 +118390,7 @@ dir = 9; icon_state = "yellow" }, -/area/station/engineering/break_room) +/area/station/engineering/hallway) "xNW" = ( /obj/structure/cable{ d1 = 4; @@ -115960,20 +118494,34 @@ /turf/simulated/wall, /area/station/maintenance/abandonedbar) "xPq" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters{ - dir = 2; - id_tag = "Secure Armory"; - name = "Secure Armory Shutters" +/obj/structure/shelf/science, +/obj/effect/turf_decal/delivery/hollow, +/obj/item/assembly/prox_sensor{ + pixel_y = -4; + pixel_x = -6 }, -/obj/machinery/door/window/reinforced/normal, -/obj/machinery/door/poddoor/preopen{ - id_tag = "ArmoryLock"; - name = "Armory Lockdown" +/obj/item/assembly/prox_sensor{ + pixel_y = -4; + pixel_x = 1 + }, +/obj/item/assembly/prox_sensor{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/stack/cable_coil/random{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/assembly/prox_sensor{ + pixel_y = 8; + pixel_x = 1 + }, +/obj/item/stack/cable_coil/random{ + pixel_x = 8; + pixel_y = 8 }, -/obj/effect/mapping_helpers/airlock/windoor/access/any/security/general, /turf/simulated/floor/plasteel/dark, -/area/station/security/armory/secure) +/area/station/science/robotics) "xPs" = ( /obj/structure/chair/comfy/teal{ dir = 8 @@ -115998,7 +118546,7 @@ /obj/effect/turf_decal/delivery/hollow, /obj/machinery/light/directional/north, /turf/simulated/floor/plasteel, -/area/station/command/bridge/checkpoint/south) +/area/station/hallway/secondary/exit) "xPS" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -116214,21 +118762,23 @@ }, /area/station/hallway/primary/central/sw) "xTw" = ( +/obj/structure/shelf/security, +/obj/effect/turf_decal/delivery/red/hollow, +/obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper{ - pixel_x = -8 + pixel_x = -8; + pixel_y = 12 }, /obj/item/reagent_containers/spray/pepper{ - pixel_x = -4 + pixel_x = 8; + pixel_y = 12 }, -/obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper{ - pixel_x = 4 + pixel_x = 8 }, /obj/item/reagent_containers/spray/pepper{ - pixel_x = 8 + pixel_x = -8 }, -/obj/structure/rack, -/obj/effect/turf_decal/delivery/red/hollow, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkred" @@ -116255,8 +118805,14 @@ /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/delivery/hollow, /obj/structure/table/reinforced, -/obj/item/tank/jetpack/carbondioxide, -/obj/item/gps/engineering, +/obj/item/tank/jetpack/carbondioxide{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/gps/engineering{ + pixel_x = -8; + pixel_y = 2 + }, /turf/simulated/floor/plasteel, /area/station/engineering/hardsuitstorage) "xTU" = ( @@ -116404,7 +118960,7 @@ dir = 1; icon_state = "darkred" }, -/area/station/security/permabrig) +/area/station/security/prisonershuttle) "xVQ" = ( /obj/machinery/economy/vending/secdrobe, /obj/effect/turf_decal/delivery/red/hollow, @@ -116593,7 +119149,7 @@ icon_state = "0-4" }, /turf/simulated/floor/plating, -/area/station/medical/virology/lab) +/area/station/medical/virology/test_room) "xYy" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -116779,7 +119335,7 @@ dir = 8; icon_state = "redcorner" }, -/area/station/security/storage) +/area/station/security/restroom) "ycb" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -116799,24 +119355,10 @@ }, /area/station/medical/virology/lab) "ycf" = ( -/obj/structure/rack, -/obj/item/storage/box/teargas{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/seccarts{ - pixel_x = 3; - pixel_y = 2 - }, -/obj/effect/turf_decal/delivery/red/hollow, -/turf/simulated/floor/plasteel/dark, -/area/station/security/armory/secure) +/obj/effect/spawner/random/storage, +/obj/effect/spawner/random/maintenance, +/turf/simulated/floor/plating, +/area/station/maintenance/starboard2) "ycB" = ( /obj/machinery/hydroponics/constructable, /obj/effect/turf_decal/delivery/hollow, @@ -116897,7 +119439,6 @@ "yeb" = ( /obj/structure/dispenser/oxygen, /obj/effect/turf_decal/delivery/blue, -/obj/machinery/light/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whiteblue" @@ -116912,6 +119453,7 @@ "yeA" = ( /obj/machinery/atmospherics/pipe/manifold4w/visible, /obj/machinery/atmospherics/meter, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "caution" @@ -116964,7 +119506,7 @@ }, /area/station/security/processing) "yfx" = ( -/obj/machinery/light/small/directional/west, +/obj/machinery/light/directional/west, /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" }, @@ -117077,14 +119619,15 @@ pixel_y = 32 }, /obj/machinery/light/small/directional/north, -/obj/item/wrench, -/obj/item/crowbar, -/obj/effect/turf_decal/delivery/hollow, -/obj/item/stack/sheet/metal{ - amount = 10 +/obj/item/wrench{ + pixel_y = 2 + }, +/obj/item/crowbar{ + pixel_y = 2 }, +/obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, -/area/station/engineering/break_room) +/area/station/engineering/break_room/secondary) "ygY" = ( /obj/structure/cable{ d1 = 2; @@ -117188,7 +119731,6 @@ "yif" = ( /obj/machinery/photocopier, /obj/machinery/requests_console/directional/east, -/obj/machinery/light/directional/east, /turf/simulated/floor/carpet/red, /area/station/command/office/hos) "yil" = ( @@ -117197,7 +119739,7 @@ /obj/machinery/door_control/shutter/north{ id = "transitlock"; name = "Transit Tube Lockdown Control"; - req_access_txt = "11" + req_access = list(11) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -117230,7 +119772,6 @@ /obj/structure/closet/cardboard, /obj/effect/spawner/random/maintenance, /obj/effect/spawner/random/trash, -/obj/effect/spawner/random/trash, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -126294,9 +128835,9 @@ dyn hvs dzv daK -pbn -pbn -pbn +giC +oEM +wZU daK dFf uLA @@ -126551,9 +129092,9 @@ cxM dAH dzv pbn -pbn -dyn -pbn +vlX +aOX +gQs pbn dFf dAH @@ -126808,9 +129349,9 @@ byy dAH dzv pbn -pbn +vlX rfI -pbn +gQs pbn dFf dAH @@ -127065,9 +129606,9 @@ cxM dAH dzv pbn +vlX pbn -pbn -pbn +gQs pbn dFf dAH @@ -127322,9 +129863,9 @@ dyn qym dzv daK +vlX pbn -pbn -pbn +gQs daK dFf hMv @@ -134241,7 +136782,7 @@ pyi rkv dsr cLz -yeh +rQi swI dcX yeh @@ -135016,7 +137557,7 @@ dah lAm lTi dcX -dcX +oUT dcX dfN dfN @@ -135026,7 +137567,7 @@ iFl lTi lTi yeh -yeh +rQi dbz abj dCA @@ -137076,7 +139617,7 @@ dcX yeh rlI dkv -dlK +tuK dlK daf yeh @@ -137521,18 +140062,18 @@ aYO bmN aOb baj -aOg -baj -aOb -bmN -aOg -aOg -bwP -byl -byl -byl +tFP +mRw +qnp +wsc +tFP +tFP +tFP +mlR +mlR +mlR bEJ -byl +mlR bGz bIq bKd @@ -137784,10 +140325,10 @@ olZ btg buo bvD -bwP +tFP ygX bzN -bIx +vgD bDm bET bGz @@ -138043,7 +140584,7 @@ bup bvE bwQ byn -bzN +wVq poK klz bEQ @@ -138292,15 +140833,15 @@ aYy bdo bkz bmv -aUi +kAy bpA brB -aTZ -ban +gWl +pUO bvF -bwP +tFP bzO -bzN +wVq bBy bDo bER @@ -138555,9 +141096,9 @@ brC bti buq bvG -bwP +tFP fBT -bzN +wVq ebH fGU bES @@ -138800,13 +141341,13 @@ aYA aYA aYA pwZ -eqO +aYA bgc aXk biO bkB bmx -aUi +kAy bpC brD btj @@ -138826,7 +141367,7 @@ bUl bUl bRZ bUl -bIq +dfU bXU fEo cbi @@ -139033,8 +141574,8 @@ atd avx uQW ePt -kur -kur +rAC +rAC wwE kuJ vJN @@ -139061,20 +141602,20 @@ ban ban bhj biP -bkB +pvZ bmy bnV bpD brE -ban -bus +pUO +mIs bvI -bwP -byl -byl -byl +tFP +mlR +mlR +mlR bDr -byl +mlR bGz bQi bKk @@ -139287,7 +141828,7 @@ pAQ tEe mPO atd -aLs +fNN aFd axI aFd @@ -139332,10 +141873,10 @@ gwB bBA fCc eIk -byl +kur bIx bKC -bIx +cRW bGz qWx bSb @@ -139561,7 +142102,7 @@ lZR aLs aML aOg -aQZ +mwK aQT aSD oQJ @@ -139574,21 +142115,21 @@ hTC beK thy bhk -biT +tBD jtK bmA -aOb +qnp bpF -aOb -aOg -aOg -aOg -bwP +qnp +tFP +tFP +tFP +tFP cLT bKr bKr ndD -bKr +mmE bGA bIy blx @@ -139841,13 +142382,13 @@ btm buu aOg xNC -bQt -bQt -bQt +aFL +aFL +aFL bKl -bQt +aFL bQp -bQt +aFL bKl jsE bGz @@ -140099,12 +142640,12 @@ buv aOg wxg gEt -bIA -bIA +bFp +bFp bDu bEW -bIA -bIA +bFp +bFp bKp bMu bGz @@ -140361,7 +142902,7 @@ bBE bKp bEX bGD -bIA +bFp bKp vdh bGz @@ -140611,9 +143152,9 @@ brJ btn bux aOg -byl -byl -byl +kur +kur +kur nEp uCF bEX @@ -140873,7 +143414,7 @@ bOg eLd bBG bKp -bIA +bFp bGF bEX bKp @@ -141113,7 +143654,7 @@ bbR qYa qYa qYa -bbR +rKn aXn bhk biU @@ -141384,14 +143925,14 @@ byu aOk ixA bOi -eLd +caH bBI bDy bBE bGH bHh -bIA -bMu +bFp +wNF bOi bRS cAB @@ -141421,7 +143962,7 @@ cCr byr lJP jSH -drn +knX riO dmf cKq @@ -141646,16 +144187,16 @@ wkD wkD bFb bGI -bIA -bIA +bFp +bFp bMv +kur byl -bQr bWt kkD bWt -bQr -bZA +byl +snc rBT cdl wzK @@ -141671,9 +144212,9 @@ cmV nNM wLp edl -kpD +wpe cCd -kpD +wpe eVs jim lJP @@ -141903,10 +144444,10 @@ vbB wkD oon bGH -bKr +mqW duC acn -byl +kur bOn bQt lwE @@ -142158,12 +144699,12 @@ wpz kdI vPa wkD -gsw +guQ iud -cSk -byl -byl -byl +pCV +kur +kur +kur wCj bIA pAv @@ -142418,7 +144959,7 @@ wkD bFd bGK bID -byl +kur taB bgw jkP @@ -142675,11 +145216,11 @@ wkD bFe bGM kIs -byl +kur gVE bIA bIA -uro +bIA ffq bWx bwP @@ -142896,7 +145437,7 @@ aEl ygd exZ aHp -aJD +aMM gBF auK qaS @@ -142932,7 +145473,7 @@ wkD bFf bGL bII -byl +kur bMA lxJ fwJ @@ -143177,8 +145718,8 @@ bkQ aOW wkD wkD -wkD qaQ +wkD iyh uqf yhb @@ -143191,9 +145732,9 @@ bGN bIK ePn bwP +gsw iHf -iHf -iHf +cSk bwP bwP bwP @@ -143449,7 +145990,7 @@ bWz bWz bOh bWz -bWz +kvm bWz bUA bWz @@ -143457,7 +145998,7 @@ bYe cHA cby cdr -cdr +lxT drn cLA cQu @@ -143706,7 +146247,7 @@ wtk wtk wtk wtk -wtk +sfa wtk bUB shr @@ -143719,7 +146260,7 @@ rNU xDT jlS nNM -cnd +npj cou cpB cnb @@ -144436,7 +146977,7 @@ ayC aVK qIE igI -ayX +qxU azb aCo aCl @@ -144751,8 +147292,8 @@ drn drn dhG dpX -cLA -drn +tlq +aqD drn drn drn @@ -144762,7 +147303,7 @@ dhG drn drn gJG -cQD +awL riO cIM cIM @@ -144953,7 +147494,7 @@ aor awX awX awX -azb +rXQ wuK ayC awX @@ -145003,12 +147544,12 @@ nCT tUs glK uyc -xDT +eqO rua xDT tUs tUs -glK +cKc xDT xKL hoj @@ -145208,7 +147749,7 @@ aVK nQL azb gZU -oEi +oDU aCl aCl rOm @@ -145229,7 +147770,7 @@ vYE oci aEt kRd -hSa +mrP hSa vMo tXZ @@ -145474,7 +148015,7 @@ atx awX mzd aor -aor +mEH kno gGM azb @@ -145502,7 +148043,7 @@ bDJ bFk mCN bIO -bBR +uro bBR bOt bxh @@ -145593,7 +148134,7 @@ dRQ dBC dSG dUl -dTW +aKL aaa dij aaa @@ -145787,7 +148328,7 @@ cxW crn cAT bYj -czF +exk drn efk dmq @@ -146477,7 +149018,7 @@ gEs adb abj apG -aqD +aqy arr ars arr @@ -146495,11 +149036,11 @@ wRZ awM axY wRZ -aOx -aOx -aOx -aOx -aOx +gSs +gSs +gSs +gSs +gSs mTQ aor baF @@ -146571,7 +149112,7 @@ cgZ cKr cKr cTM -kjr +cKr cKr cKr cND @@ -146752,11 +149293,11 @@ ayX aor aor aor -aOx +gSs uvE -aOx +gSs bLk -aOx +gSs mTQ aor baF @@ -146831,7 +149372,7 @@ iZl cWI cWU cKr -daF +uFj cMm omA tiL @@ -147009,11 +149550,11 @@ aor xej teK teK -aOx +gSs rvI -aOx +gSs aMY -aOx +gSs mlS lfd aRm @@ -147263,14 +149804,14 @@ xFt awX eFG aor -aOx -aOx -aOx -aOx +yed +yed +yed +gSs fzq qBu ssw -aOx +gSs aMV aor baF @@ -147520,10 +150061,10 @@ oky aVK ctu aor -aOx +yed gAq mUr -aOx +gSs vPO pbl rFg @@ -147780,11 +150321,11 @@ rwU rwU aPW oFY -aOx +gSs bfa bfd ley -aOx +gSs aNe aor uIo @@ -147812,7 +150353,7 @@ cNy rXX bCa bDN -bFp +bFo bGZ bHb oWx @@ -147902,7 +150443,7 @@ dJx dOR dTZ tzW -dRJ +wHR dLs dRk dKZ @@ -148035,15 +150576,15 @@ upD lSK jql ipz -dBq -dBq -aOx -aOx +gRS +gRS +gSs +gSs lfg -aOx -aOx -aOx -aOx +gSs +gSs +yed +yed aYZ lLj aYZ @@ -148292,14 +150833,14 @@ oHD sCp tEA wYw -dBq -dBq +gRS +gRS kaM qzy eGT -gWl +nBa dRR -mwK +dDJ hpS aYZ orj @@ -148406,7 +150947,7 @@ dKY dLq dLq dLq -dLq +ruY dfa hRF cjf @@ -148420,11 +150961,11 @@ dQl dXV qOs dTm -dJx +dIx dUJ dPD rRm -dJx +dIx abj aaa aaa @@ -148551,12 +151092,12 @@ tNm ipz dDJ jJh -dBq -dBq +gRS +gRS fTl leM leM -hUV +leM ldm rrL qpZ @@ -148677,11 +151218,11 @@ aMt fTn dRM ozL -dJx +dIx dUK dQh dUK -dJx +dIx abj aaa aaa @@ -148810,9 +151351,9 @@ aOx gTc knP gEo -lSB +aDQ aPS -kAy +fbs aPS czL aYZ @@ -148868,7 +151409,7 @@ rfY fdG iXl bYj -drn +imy olO dlM omB @@ -149061,13 +151602,13 @@ cLp xli aIU hrB -jnT +phV qgP kEO jZx idp aKl -kAy +tHZ eiG lSB hEG @@ -149172,12 +151713,12 @@ dEC dEC ryd dCJ -dPw +hAn ssL dQn dKh dJx -mbB +dPE dXx dMW nnE @@ -149191,11 +151732,11 @@ jdM dSf iwO dTp -dJx +dIx dUM dTX oei -dJx +dIx abj aaa aaa @@ -149324,8 +151865,8 @@ aOx uDK xeo aKl -dBq -dBq +gRS +gRS qxj hFB irn @@ -149339,7 +151880,7 @@ pti baM gJC lhR -nSQ +bdP blc spF aYZ @@ -149448,11 +151989,11 @@ kbO tNn hxF dTq -dJx +dIx dUN xHF dMn -dJx +dIx abj aaa aaa @@ -149581,9 +152122,9 @@ fKW fSl idp aKl -lSB +aDQ aPS -kAy +fbs fiz nkM aYZ @@ -149693,7 +152234,7 @@ ddy dJx dKk dOr -uVI +dMS dOX dMT nLi @@ -149705,7 +152246,7 @@ qux tNn auH dQi -dJx +dIx dMU dSj hqq @@ -149842,7 +152383,7 @@ hEO qsu hEO poa -mmE +mDu aXB kdu qGF @@ -149870,7 +152411,7 @@ fFM wym jZM uzb -eKe +tlz eKe jiy eKe @@ -149950,7 +152491,7 @@ osJ dJx uld dUQ -guQ +dMS obq dMS kfx @@ -149962,11 +152503,11 @@ dIx dSh dSh dIx -dJx -dJx -dJx +dIx +dIx +dIx duw -dJx +dIx abj abj aaa @@ -150095,11 +152636,11 @@ fKW aHI idp aKl -kAy +tHZ hEG lSB hEG -mmE +mDu aXB lDp dwU @@ -150207,23 +152748,23 @@ itL dJx dLu dPF -guQ +dMS dOW dMS dMk dPF -dSJ +mbB dQY dXI cHR jGH -dPE +leL ltX jGH uIU tyf dRv -dSJ +mbB abj aaa aaa @@ -150352,12 +152893,12 @@ aOx aHJ xeo aKl -dBq -dBq +gRS +gRS aOA aPU aRw -aOx +yed aXB aWe aXB @@ -150403,7 +152944,7 @@ xbU qHO cno bSE -kKU +wNN cvE csK lIM @@ -150464,12 +153005,12 @@ ssL dJx lmA dQV -guQ +dMS dOW dMS lmA pbQ -dJx +dGU eHn wIc dRO @@ -150480,7 +153021,7 @@ dPB qzV dRv dRv -dSJ +mbB abj aaa aaa @@ -150609,14 +153150,14 @@ kEO jZx idp aKl -lSB +aDQ aPS -kAy +fbs aPS -dBq -dDJ -dBq -dBq +gRS +biT +gRS +gRS dDJ nzV baQ @@ -150696,7 +153237,7 @@ mod mod mod wIw -mod +cme drI cHi ryH @@ -150721,7 +153262,7 @@ dlJ dJx vdk dPE -guQ +dMS dOW dMS dPE @@ -150737,7 +153278,7 @@ dTg dSi dRv dRv -dSJ +mbB abj aaa aaa @@ -150866,15 +153407,15 @@ aOx xif aIW aIX -kAy +tHZ hEG lSB eiG -dBq -dBq -dBq -dBq -dBq +gRS +gRS +gRS +gRS +gRS nzV bcs bcq @@ -150978,23 +153519,23 @@ ddy dJx miU suP -rQi +dOq dMm dMW rVZ tSr -dJx +dGU lbT dRv sxB -dUh -dMS +mIZ +gOs dUg -dUh -dJx +mIZ +dGU dMQ dTY -dJx +dGU abj abj abj @@ -151123,22 +153664,22 @@ aGy cnC rza efP -dBq -dBq -dBq -dBq -dBq -dBq -dBq -dBq +gRS +gRS +gRS +gRS +gRS +gRS +gRS +gRS aXE aYZ aYZ bcr aYZ +aph rZF -mlR -rZF +jEw rZF blj aYZ @@ -151177,7 +153718,7 @@ bSE kKU dBK csK -cEs +lzD cEr sZr oiT @@ -151203,7 +153744,7 @@ oVj wXn nDH sgX -dfm +dgv xuW dgv dgv @@ -151235,19 +153776,19 @@ sim dJx qXz dOr -guQ +uVI wGi dMS dMj wIe -dSJ +mbB dKi dRv xvU dSm dSN dUf -dUh +mIZ dYU lGh kZc @@ -151392,7 +153933,7 @@ gRS gpy nBa bcv -gRS +hNj gRS gRS gRS @@ -151497,18 +154038,18 @@ dJx chV dSJ dJx -dJx -dJx -dJx -dJx -dJx -dJx -dJx -dJx -dJx -dJx -dJx -dJx +dGU +dGU +dGU +dGU +dGU +dGU +dGU +dGU +dGU +dGU +dGU +dGU dIH dIH abj @@ -151642,7 +154183,7 @@ hly hly hly suI -rWV +hUe aRA gRS rWV @@ -151691,7 +154232,7 @@ bSE kKU eDZ csK -cEs +hOu cEr occ amy @@ -151726,7 +154267,7 @@ vWv nBZ dqj eTE -dsJ +xPq dvr dwq cNL @@ -151761,7 +154302,7 @@ dUp wAX dRl dJH -mux +nUQ iex dIH sYX @@ -151906,11 +154447,11 @@ rWV rWV gRS bcv -tHZ -bdQ +gWb +wMr bgy bdQ -tHZ +ldC gRS sKr emt @@ -151981,7 +154522,7 @@ dSC eeP pML nBZ -drE +dsJ dxB dsK drg @@ -152140,7 +154681,7 @@ uSu fTR hSW aAw -aAw +vtq uZz aFy aES @@ -152205,7 +154746,7 @@ bSE lqv cvE csK -cEs +cEr cEr cEr cBk @@ -152397,7 +154938,7 @@ syT foa kHz mfW -vtq +aAw aAB azq aES @@ -152506,7 +155047,7 @@ dAa dwn dwn dqp -nMo +rac dbB dCU dNS @@ -152736,12 +155277,12 @@ quL dLB cPu dLB -kiB +vKB cTR cVv mNb sHY -cZB +nah daL ckd ddG @@ -152766,7 +155307,7 @@ dnn jJs dPw iTK -dPb +dKr dGf mzk ilJ @@ -152935,10 +155476,10 @@ pXW aVQ bdR bdQ -tHZ +ldC bhN -tHZ -bdQ +gWb +wMr lEV yed xfy @@ -153212,7 +155753,7 @@ byU bFy bHo bOT -bKP +bQN bMW bOO bQK @@ -153266,7 +155807,7 @@ fkr oRg tBN nBZ -drE +dsJ dxB duf nBl @@ -153277,7 +155818,7 @@ dav dyS dzZ dqp -dNS +nXm dBT xlu djA @@ -153797,7 +156338,7 @@ rgY dfu ddy ddy -ilJ +dIH xPQ dWL hTr @@ -154056,9 +156597,9 @@ doY doY dXj mfJ -mIZ -dGU -mIZ +dKo +dNO +dKo fOr pEY kbj @@ -154332,12 +156873,12 @@ dTH eFE dTH dTH -fFy +aJD dTH frp -dKo +ofS pMe -dIO +dXn abj aaa aaa @@ -154570,9 +157111,9 @@ cmn cmn cRc mfJ -mIZ -pOK -mIZ +dKo +gQL +dKo cVc pEY dSV @@ -154825,7 +157366,7 @@ aRT dfu dfu dfu -ilJ +dIH dFb dWL hTr @@ -155268,7 +157809,7 @@ byU bFy bHw bOT -bKP +bQN bNa bOS bQN @@ -155505,7 +158046,7 @@ lSZ baX aZs bdX -qvT +eel fgI fPx bfu @@ -155841,7 +158382,7 @@ aSl xVm hOG dmi -hWg +kwr pGJ uKp qbL @@ -157284,9 +159825,9 @@ azF aCH aBM aCJ -aDQ -aph -aFL +aCJ +aFp +hPm hPm aIc xII @@ -158054,16 +160595,16 @@ aKJ aFO aFO aBQ -xII lsi +xII aDW -ijz xII +ijz aIc xII rPY tZJ -aFL +hPm gxr bbe aRV @@ -158313,7 +160854,7 @@ xII kKH xII xII -xII +qCX xII aSw aIc @@ -158417,7 +160958,7 @@ siO duk duk duk -dBY +nLU qhX dDr jcU @@ -158569,10 +161110,10 @@ aCJ aDS kKH jya -aDQ +aCJ aDS xII -aSw +nSQ ilO aBS aNw @@ -158826,11 +161367,11 @@ aCJ pwX iFA uST -aFL +hPm hPm xII -aSw -aKL +nSQ +xII ipa rPY aCN @@ -159086,11 +161627,11 @@ xII xII ooI xII -aSw +nSQ xII xII rPY -ldC +aCN hqL eLg bbe @@ -159344,7 +161885,7 @@ aEQ sDJ aEQ qpk -aEQ +erh pss jRG bxK @@ -159637,7 +162178,7 @@ pFd uXC bLi jvs -bLi +nRC uXC bPd bNz @@ -159664,7 +162205,7 @@ bmW evi iRd iRd -kwr +cjy aFx qVF nFk @@ -159681,7 +162222,7 @@ cUd dch ntR gXj -tjY +gYQ stu wwC cXJ @@ -160139,7 +162680,7 @@ btL btL tdj lnY -bwv +xnB btL btL aaa @@ -160178,7 +162719,7 @@ ucc fgE gLi wiJ -alT +rfK aFx oCX kcc @@ -160949,7 +163490,7 @@ bmW lpo wiJ wiJ -cAf +alT aFx cRb fLM @@ -161465,7 +164006,7 @@ pvq nMa btF yfP -nIw +xWz aGs pjq bPf @@ -161722,7 +164263,7 @@ iIZ aNr pRL yfP -gYQ +cFg nwC ctq rVP @@ -162269,7 +164810,7 @@ dmr vYR dmr qTY -nHS +dmr ntt cKY diz @@ -162524,7 +165065,7 @@ nSC rQD nSC nSC -iMT +omV ieo omV omV @@ -162979,7 +165520,7 @@ bLp dDN fIy dZO -uyC +dDN bLn bLn iri @@ -163708,12 +166249,12 @@ gSH xtU ijO aSX -wzJ +lGa eyN cYe rMi dGo -rMi +gnP qQE wzJ baf @@ -163779,7 +166320,7 @@ cyN jez aWn fxS -nBr +xVX ixf dqv wNd @@ -164036,12 +166577,12 @@ cBQ cDm bgt guw -cGP -csi -csi -csi -csi -csi +nBr +cnP +cnP +cnP +cnP +cnP fhQ boG hhF @@ -164294,11 +166835,11 @@ pPC cvV cIb cGP -csi +cnP cuy avC cuy -csi +cnP reo dka bvP @@ -164491,7 +167032,7 @@ dCQ byC vXI aZu -bWr +jhx ePp tpP eNt @@ -164551,7 +167092,7 @@ hZL cvV cFm cnP -csi +cnP nae gss qmT @@ -164560,7 +167101,7 @@ cxn cxn cxn cxn -ixf +cxn rxe nTE nTE @@ -164593,7 +167134,7 @@ lhF tld sfI sfI -qwI +nHS cYM plL dfw @@ -164778,7 +167319,7 @@ kjl wwx riP lrg -yfx +vGK lrg jfN bTb @@ -164809,7 +167350,7 @@ cuw cqw cqw uGe -xSg +aKh bNn wdQ cxn @@ -164817,7 +167358,7 @@ xLK pHK pHK fxV -ixf +cxn rxe xNa vRa @@ -165041,8 +167582,8 @@ xgA bTb tYa bXc -aHr hDP +byK hDP cet cgh @@ -165289,7 +167830,7 @@ wBK bZF wBK nyq -tFP +qwK wBK bZF wBK @@ -165298,12 +167839,12 @@ wBK xTE qRt lsv -hKT +nIw iDa qdh iDa cgi -hKT +nIw wpW cmr wpW @@ -165560,7 +168101,7 @@ beo jWd cgr hJo -hKT +nIw veK eVf eVf @@ -165579,9 +168120,9 @@ klf brS oxu jTS -csi +cnP azM -rfK +pZs hEh cxn vsc @@ -165817,7 +168358,7 @@ bXV bXW ryK cgk -hKT +nIw cjq cuI dPi @@ -165836,9 +168377,9 @@ klf cEt gLB bqu -csj -xSg -rfK +trG +aKh +pZs cAu cxn iQt @@ -166060,7 +168601,7 @@ wBK tVj wBK hIQ -qwK +vYm wBK tVj wBK @@ -166069,12 +168610,12 @@ wBK aBP tUU wQp -hKT +nIw fen bsG erF bfN -hKT +nIw nhe nhe nhe @@ -166093,9 +168634,9 @@ qSo trG trG trG -csi +cnP gjZ -rfK +pZs cMM cxn vsc @@ -166331,7 +168872,7 @@ vUg bNt jZT rUo -hKT +nIw qxv vGb mhL @@ -166350,13 +168891,13 @@ cCb cCb cCb cCb -csj -xSg -rfK +trG +aKh +pZs cAu cxn iQt -csh +kiB cxn cxn cxn @@ -166555,7 +169096,7 @@ aaa abj ygI eJl -rpF +dPb iiH rpF fkB @@ -166588,7 +169129,7 @@ tDs bPc eSS uOa -hKT +nIw uYg vGb sBg @@ -166607,9 +169148,9 @@ cCb cCb cCb cCb -csj -xSg -rfK +trG +aKh +pZs fdj cxn bmg @@ -166651,7 +169192,7 @@ sfI sfI lPW cup -whX +iMT whX whX abj @@ -166840,12 +169381,12 @@ wBK wUX hyT fWF -hKT +nIw kTV hNq wSm ajM -hKT +nIw gJk uYg raw @@ -166864,7 +169405,7 @@ dia cCb cCb cOw -csi +cnP nBt edQ ipy @@ -166897,18 +169438,18 @@ aaa aaa aaa aaa -whX -fOF -fOF -fOF -fOF +iMT +bjZ +bjZ +bjZ +bjZ lHz rLs mHA kSQ drT aEk -whX +iMT abj abj abj @@ -167102,7 +169643,7 @@ apP mKQ wAd lsz -hKT +nIw vJt vGb rHX @@ -167121,9 +169662,9 @@ cCb cCb cCb cCb -csj -xSg -rfK +trG +aKh +pZs aKi cxn aHA @@ -167154,7 +169695,7 @@ aaa aaa aaa aaa -whX +iMT aaH dmk srZ @@ -167165,7 +169706,7 @@ nSV cyD jXF mFh -whX +iMT aaa aaa abj @@ -167354,12 +169895,12 @@ dZQ dTU awD rCj -hKT -hKT -hKT -hKT -hKT -hKT +nIw +nIw +nIw +nIw +nIw +nIw nhe nhe nhe @@ -167378,9 +169919,9 @@ cCb cCb cCb cCb -csj -xSg -rfK +trG +aKh +pZs cBV cxn cxn @@ -167411,7 +169952,7 @@ aaa aaa aaa aaa -whX +iMT cSE cbH dEr @@ -167421,8 +169962,8 @@ qBw nXD wtV lzG -whX -whX +iMT +iMT aaa aaa aaa @@ -167637,7 +170178,7 @@ csj csj csi pNl -rfK +pZs oFL oNd aLE @@ -167668,11 +170209,11 @@ aaa aaa aaa aaa -whX +iMT heU jOl mcQ -fOF +bjZ dtf got wyC @@ -167835,9 +170376,9 @@ aaa aaa aaa vrw -eoX -eoX -eoX +uyC +uyC +uyC mfr azP plF @@ -167894,7 +170435,7 @@ tvI suE csi ubi -rfK +pZs qGY oNd cQj @@ -167925,7 +170466,7 @@ aaa aaa aaa aaa -whX +iMT cUa tEx dEq @@ -168091,7 +170632,7 @@ aaa aaa aaa aaa -eoX +uyC uOh rBp wLq @@ -168107,7 +170648,7 @@ uXf uRt gYJ wij -trX +pqh rpE nkm vBg @@ -168122,7 +170663,7 @@ lJd sQs dus vBg -oaR +veF gSg off iVy @@ -168152,7 +170693,7 @@ kQm ibt nQT cLr -bLt +cAu oNd lSa ilj @@ -168170,7 +170711,7 @@ pxP uvQ phO hhF -hhF +drE loS qJk qJk @@ -168182,7 +170723,7 @@ abj aaa aaa abj -whX +iMT rTe tlf eCa @@ -168396,7 +170937,7 @@ bpQ dPi csi iYU -cze +sxG ghA csi qLB @@ -168407,7 +170948,7 @@ fYP eKD qfd csi -xSg +aKh cyW wpb wXF @@ -168439,17 +170980,17 @@ abj abj abj abj -whX -whX -whX -whX -whX -whX +iMT +iMT +iMT +iMT +iMT +iMT enH agI rkf -whX -whX +iMT +iMT abj abj aaa @@ -169133,7 +171674,7 @@ keM euk tAn lvu -tAn +vxh bLK jrO eTQ @@ -169178,14 +171719,14 @@ bzC cJA cLt csi -cJB +sah cOu fmS oNd usR iVJ cTe -bjZ +rTt cWe sko unM @@ -169380,11 +171921,11 @@ tTZ num eTh bYU +uyC eoX eoX eoX -eoX -hOu +gdN lrz vTi nsd @@ -169447,7 +171988,7 @@ cHa cHa cHa cHa -hhF +nYb gnn hhF hhF @@ -169633,11 +172174,11 @@ aaa aaa aaa aaa -eoX +uyC lWn aNb nwW -eoX +uyC fxz kWB rXK @@ -169674,8 +172215,8 @@ bCP bCP bCP iTG -siM -siM +trX +trX iPd ljq adh @@ -169890,14 +172431,14 @@ aaa aaa aaa aaa -eoX +uyC qLC gNj dOp -eoX +uyC gUl jbL -dfU +eoX pyv hcr fZa @@ -169908,7 +172449,7 @@ iaw nsd oaR lEP -off +nkm ulm ozI iEL @@ -169931,7 +172472,7 @@ qVU mwp knI eyJ -siM +trX abj abj aaa @@ -170151,7 +172692,7 @@ vrw ldv irO gzk -eoX +uyC eoX eoX eoX @@ -170166,8 +172707,8 @@ nsd cIt lEP off -xPq -npj +ulm +xaa wJU grA jeM @@ -170175,7 +172716,7 @@ ptZ nqn acU amO -ycf +lam fcC dMi oaR @@ -170184,11 +172725,11 @@ jgp xBs xgH sLI -tjl +mSb tjl bLj cis -siM +trX abj aaa aaa @@ -170420,12 +172961,12 @@ vVY vVY rFE nsd -veF +oaR rpE -nkm +off ulm ulm -xaa +saz dCl kSW tWq @@ -170445,7 +172986,7 @@ iHp lAq xkw nri -siM +trX abj aaa aaa @@ -170668,7 +173209,7 @@ qcX eoX gUl jbL -dfU +eoX gdN nLX kFm @@ -170702,7 +173243,7 @@ pAu jGe wtP wbW -siM +trX abj aaa aaa @@ -170929,9 +173470,9 @@ eoX nMg nFv ieN -aDE +mih xBZ -bAT +dBq ovT eSx oaR @@ -170952,15 +173493,15 @@ ulm riH lEP oBN -siM -siM -siM -siM -siM -siM -siM -siM -siM +trX +trX +trX +trX +trX +trX +trX +trX +trX abj aaa abj @@ -171288,7 +173829,7 @@ wTf oAe uME aEG -brM +ycf brM kap hPL @@ -171439,7 +173980,7 @@ aOP eoX gUl jbL -dfU +eoX wSu gTt iBI @@ -171463,9 +174004,9 @@ oiG nKj iMB ito -oaR -lEP -nkm +bLt +aHr +off siM brP jpX @@ -171722,7 +174263,7 @@ oEq iwz bTn lEP -off +nkm siM qMT gsE @@ -171943,7 +174484,7 @@ saC qnD saC rRb -bfH +adz uzH rRb eYN @@ -172192,15 +174733,15 @@ aaa aaa abj eoX -vYm +dfm qnD rqo uFf rqo dAe -caH +ciA rRb -adz +bfH bfH pfn qlY @@ -174255,7 +176796,7 @@ gyL qZs piq fMO -cRW +fMO fMO qus thX @@ -174527,7 +177068,7 @@ otB qgl rRb nCq -vxh +xgW tfw nCq xgW @@ -175024,10 +177565,10 @@ aaa abj eoX ibM -gXn +cAf fOp eoX -aKh +bli wGn bSX wJO diff --git a/_maps/map_files220/stations/metastation.dmm b/_maps/map_files220/stations/metastation.dmm index 7b56e9026d03..caf15d673e45 100644 --- a/_maps/map_files220/stations/metastation.dmm +++ b/_maps/map_files220/stations/metastation.dmm @@ -222,7 +222,7 @@ }, /obj/machinery/button/windowtint/east{ id = "Detective"; - req_access_txt = "4" + req_access = list(4) }, /turf/simulated/floor/carpet, /area/station/security/detective) @@ -270,8 +270,7 @@ /obj/machinery/alarm/directional/west, /obj/machinery/computer/prisoner{ dir = 4; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -692,7 +691,7 @@ name = "exterior access button"; pixel_x = 25; pixel_y = 7; - req_access_txt = "75;13" + req_access = list(75,13) }, /turf/space, /area/space/nearstation) @@ -1390,7 +1389,7 @@ id = "kitchen_counter"; name = "Kitchen Counter Shutters"; pixel_x = -6; - req_access_txt = "28" + req_access = list(28) }, /turf/simulated/floor/plasteel{ icon_state = "whitecorner" @@ -1477,7 +1476,7 @@ id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_y = 4; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/driver_button{ id_tag = "trash"; @@ -1601,12 +1600,12 @@ /obj/effect/landmark/damageturf, /obj/machinery/airlock_controller/air_cycler{ pixel_y = -24; - req_access_txt = "13"; vent_link_id = "arrivalsmaint_vent"; ext_door_link_id = "arrivalsmaint_door_ext"; int_door_link_id = "arrivalsmaint_door_int"; ext_button_link_id = "arrivalsmaint_btn_ext"; - int_button_link_id = "arrivalsmaint_btn_int" + int_button_link_id = "arrivalsmaint_btn_int"; + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -1917,7 +1916,7 @@ }, /area/station/engineering/solar/fore) "aon" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fore) "aop" = ( @@ -2385,7 +2384,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aqO" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ d1 = 1; @@ -4246,7 +4245,7 @@ }, /area/station/command/office/captain/bedroom) "ayk" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "ayr" = ( @@ -4269,7 +4268,7 @@ /turf/simulated/floor/plating, /area/station/public/locker) "ayv" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/fsmaint) "ayx" = ( @@ -4560,7 +4559,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -4568,18 +4567,15 @@ /area/station/maintenance/fore) "azI" = ( /obj/structure/closet/crate, -/obj/item/stack/sheet/metal{ - amount = 50; +/obj/item/stack/sheet/metal/fifty{ pixel_x = 2; pixel_y = 2 }, -/obj/item/stack/sheet/metal{ - amount = 50; +/obj/item/stack/sheet/metal/fifty{ pixel_x = 2; pixel_y = 2 }, -/obj/item/stack/sheet/metal{ - amount = 50; +/obj/item/stack/sheet/metal/fifty{ pixel_x = 2; pixel_y = 2 }, @@ -4677,7 +4673,7 @@ }, /area/station/public/dorms) "aAf" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -4716,7 +4712,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "aAA" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fpmaint) "aAC" = ( @@ -5982,7 +5978,7 @@ /turf/simulated/floor/engine, /area/station/science/explab/chamber) "aFM" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/structure/cable/yellow{ d1 = 1; d2 = 2; @@ -5993,7 +5989,7 @@ }, /area/station/maintenance/fsmaint) "aFO" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/fsmaint) "aFQ" = ( @@ -6350,7 +6346,7 @@ id = "xenobio2"; name = "Xenobio Pen 2 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -6585,7 +6581,7 @@ /turf/simulated/floor/plasteel, /area/station/public/dorms) "aIo" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fsmaint) "aIp" = ( @@ -6780,8 +6776,7 @@ }, /area/station/telecomms/computer) "aIS" = ( -/obj/item/stack/sheet/plasteel{ - amount = 10; +/obj/item/stack/sheet/plasteel/fifteen{ pixel_x = -2; pixel_y = 2 }, @@ -6974,7 +6969,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/fore) "aJl" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aJm" = ( @@ -7457,6 +7452,7 @@ /area/station/public/toilet/lockerroom) "aKZ" = ( /obj/machinery/light/small/directional/east, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -7469,7 +7465,7 @@ /turf/simulated/floor/plating, /area/station/engineering/atmos/distribution) "aLc" = ( -/obj/effect/spawner/random_barrier/obstruction, +/obj/effect/spawner/random/barrier/obstruction, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -7579,15 +7575,9 @@ /area/station/maintenance/fsmaint) "aLp" = ( /obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, /obj/item/stack/sheet/glass{ amount = 12 }, @@ -8033,7 +8023,7 @@ /turf/simulated/floor/wood, /area/station/service/clown) "aMB" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -8655,7 +8645,7 @@ dir = 1; id = "Courtroom"; pixel_y = 8; - req_one_access_txt = "74;3" + req_one_access = list(74,3) }, /turf/simulated/floor/carpet, /area/station/legal/courtroom) @@ -8840,7 +8830,7 @@ /obj/machinery/door_control/shutter/east{ id = "engsm"; name = "Radiation Shutters Control"; - req_access_txt = "10" + req_access = list(10) }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -8914,6 +8904,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -8988,8 +8979,8 @@ }, /obj/machinery/button/windowtint/east{ id = "qm"; - req_access_txt = "41"; - pixel_y = 5 + pixel_y = 5; + req_access = list(41) }, /turf/simulated/floor/plasteel, /area/station/supply/qm) @@ -9637,15 +9628,11 @@ /area/station/engineering/secure_storage) "aSh" = ( /obj/structure/closet/crate, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /obj/item/stack/rods{ amount = 50 }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, +/obj/item/stack/sheet/glass/fifty, /obj/item/airlock_electronics, /obj/item/airlock_electronics, /obj/item/stock_parts/cell/high{ @@ -9770,13 +9757,13 @@ id = "QMLoaddoor"; name = "Loading Doors"; pixel_y = -8; - req_one_access_txt = "79" + req_access = list(79) }, /obj/machinery/door_control/shutter/west{ id = "QMLoaddoor2"; name = "Loading Doors"; pixel_y = 8; - req_one_access_txt = "79" + req_access = list(79) }, /obj/machinery/computer/supplycomp{ dir = 4 @@ -11062,7 +11049,7 @@ }, /area/station/supply/lobby) "aWv" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/fore) "aWx" = ( @@ -11339,7 +11326,7 @@ }, /area/station/hallway/primary/port) "aXu" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "aXw" = ( @@ -12985,7 +12972,7 @@ }, /obj/item/radio/intercom/directional/south, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "bcF" = ( /obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ @@ -13951,13 +13938,13 @@ id = "Engineering"; name = "Engineering Lockdown"; pixel_y = -5; - req_access_txt = "10" + req_access = list(10) }, /obj/machinery/door_control/shutter/west{ id = "atmos"; name = "Atmospherics Lockdown"; pixel_y = 5; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light/directional/west, /turf/simulated/floor/plasteel{ @@ -14582,14 +14569,14 @@ id = "transittube"; name = "Transit Tube Lockdown"; pixel_y = -5; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter/west{ desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_y = 5; - req_access_txt = "11" + req_access = list(11) }, /turf/simulated/floor/plasteel{ icon_state = "darkneutralfull" @@ -15633,12 +15620,8 @@ /area/station/public/storage/tools/auxiliary) "bjq" = ( /obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, /obj/item/storage/box/lights/mixed, /turf/simulated/floor/plasteel{ icon_state = "yellow" @@ -15662,9 +15645,7 @@ /area/station/public/storage/tools/auxiliary) "bjt" = ( /obj/structure/table, -/obj/item/stack/sheet/glass{ - amount = 50 - }, +/obj/item/stack/sheet/glass/fifty, /obj/item/stack/rods{ amount = 50 }, @@ -17320,7 +17301,7 @@ /obj/item/clothing/glasses/meson, /obj/machinery/button/windowtint/south{ id = "CE"; - req_access_txt = "56" + req_access = list(56) }, /turf/simulated/floor/plasteel{ icon_state = "darkneutralfull" @@ -19515,8 +19496,8 @@ /obj/machinery/door_control/shutter/south{ id = "turbinevent"; name = "Turbine Vent Control"; - req_access_txt = "12"; - pixel_x = -8 + pixel_x = -8; + req_access = list(12) }, /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) @@ -19854,7 +19835,7 @@ /obj/machinery/door_control/shutter/north{ id = "hop"; name = "Privacy Shutters Control"; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/computer/account_database, /turf/simulated/floor/wood, @@ -19949,7 +19930,7 @@ /obj/machinery/turretid/stun{ name = "AI Antechamber Turret Control"; pixel_x = 24; - req_access_txt = "75" + req_access = list(75) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -21047,7 +21028,7 @@ /obj/machinery/door_control/shutter/west{ id = "hop"; name = "Privacy Shutters Control"; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/papershredder, /turf/simulated/floor/carpet, @@ -21123,13 +21104,13 @@ id = "bridge blast"; name = "Bridge Access Blast Door Control"; pixel_x = -1; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter/south{ id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -1; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/camera{ c_tag = "Bridge - Command Chair"; @@ -21886,11 +21867,8 @@ "bAW" = ( /obj/machinery/firealarm/directional/west, /obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, @@ -22201,12 +22179,12 @@ /obj/machinery/door_control/shutter/south{ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; - req_access_txt = "19" + req_access = list(19) }, /obj/machinery/door_control/shutter/south{ id = "gateshutter"; name = "Expedition Shutter Control"; - req_access_txt = "62" + req_access = list(62) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -22255,13 +22233,13 @@ id = "hopqueue"; name = "Queue Shutters Control"; pixel_x = -6; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/door_control/shutter/south{ id = "hop"; name = "Privacy Shutters Control"; pixel_x = -6; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/flasher_button{ id = "hopflash"; @@ -23392,7 +23370,7 @@ /obj/machinery/door_control/shutter/west{ id = "council blast"; name = "Council Chamber Blast Door Control"; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -23465,7 +23443,7 @@ /obj/machinery/door_control/shutter/west{ id = "bridge blast"; name = "Bridge Access Blast Door Control"; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -23811,7 +23789,7 @@ /obj/machinery/door_control/shutter/east{ id = "bridge blast"; name = "Bridge Access Blast Door Control"; - req_access_txt = "19" + req_access = list(19) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -25510,7 +25488,7 @@ }, /area/station/aisat) "bNY" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/public/toilet/lockerroom) "bOa" = ( @@ -26179,7 +26157,7 @@ id = "xenobio5"; name = "Xenobio Pen 5 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -27175,7 +27153,7 @@ /area/station/hallway/primary/central) "bTD" = ( /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/machinery/light/small/directional/west, /turf/simulated/floor/wood, @@ -27302,7 +27280,7 @@ id = "kitchen_service"; name = "Service Shutter Control"; pixel_x = -24; - req_access_txt = "28" + req_access = list(28) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -27758,9 +27736,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "bVM" = ( -/obj/machinery/atmospherics/trinary/filter{ - req_access = "0" - }, +/obj/machinery/atmospherics/trinary/filter, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "bVN" = ( @@ -28385,7 +28361,7 @@ /obj/machinery/door_control/shutter/south{ id = "mechbay"; name = "Mech Bay Shutters Control"; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" @@ -28656,7 +28632,7 @@ id = "ntrepofficedoor"; name = "Office Door"; pixel_x = 6; - req_access_txt = "73" + req_access = list(73) }, /obj/structure/table/wood, /obj/machinery/photocopier/faxmachine/longrange{ @@ -28821,7 +28797,7 @@ /obj/machinery/door_control/shutter/south{ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; - req_access_txt = "19" + req_access = list(19) }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -29464,7 +29440,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/fsmaint) "cbc" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/maintenance/fsmaint) "cbd" = ( @@ -29476,7 +29452,7 @@ id = "hydro_service"; name = "Service Shutter Control"; pixel_x = -24; - req_access_txt = "35" + req_access = list(35) }, /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -30058,9 +30034,7 @@ "cdi" = ( /obj/structure/table/reinforced, /obj/machinery/requests_console/directional/north, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, +/obj/item/stack/sheet/plasteel/fifteen, /obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 @@ -31254,20 +31228,20 @@ /obj/machinery/door_control/shutter/north{ id = "xeno_blastdoor"; name = "Xenobiology Containment Control"; - req_access_txt = "30"; - pixel_y = 32 + pixel_y = 32; + req_access = list(30) }, /obj/machinery/door_control/shutter/north{ id = "rdtoxins"; name = "Toxins Containment Control"; - req_access_txt = "30"; - pixel_y = 23 + pixel_y = 23; + req_access = list(30) }, /obj/machinery/door_control/shutter/north{ id = "rdrnd"; name = "Research and Development Containment Control"; - req_access_txt = "30"; - pixel_y = 41 + pixel_y = 41; + req_access = list(30) }, /obj/machinery/computer/security/telescreen/rd{ pixel_x = 31; @@ -31276,7 +31250,7 @@ /obj/machinery/button/windowtint/north{ id = "RD"; pixel_x = -24; - req_access_txt = "30" + req_access = list(30) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -31941,9 +31915,7 @@ pixel_x = 3; pixel_y = 3 }, -/obj/item/stack/sheet/metal{ - amount = 10 - }, +/obj/item/stack/sheet/metal/ten, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cjx" = ( @@ -32241,8 +32213,7 @@ "ckx" = ( /obj/machinery/mecha_part_fabricator{ id = "0"; - name = "forgotten exosuit fabricator"; - req_access = "0" + name = "forgotten exosuit fabricator" }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -32703,7 +32674,7 @@ "cmn" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -33267,13 +33238,13 @@ name = "Turbine Vent Control"; pixel_x = -8; pixel_y = -36; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/door_control/shutter/south{ id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = -8; - req_access_txt = "12" + req_access = list(12) }, /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plasteel, @@ -33396,7 +33367,7 @@ /obj/machinery/door_control/shutter/north{ id = "mechbay"; name = "Mech Bay Shutters Control"; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics/chargebay) @@ -34803,7 +34774,7 @@ /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/station/science/research) +/area/station/science/xenobiology) "cux" = ( /obj/structure/window/plasmareinforced{ dir = 8 @@ -35006,7 +34977,7 @@ /obj/machinery/button/windowtint/west{ id = "Surgery1"; pixel_y = -4; - req_access_txt = "45" + req_access = list(45) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -35225,10 +35196,11 @@ desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner" }, -/obj/machinery/light_switch/north, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/light_switch/north, +/obj/machinery/light/small/directional/north, /turf/simulated/floor/engine, /area/station/science/misc_lab) "cwd" = ( @@ -36491,14 +36463,11 @@ /obj/item/clothing/mask/gas, /obj/item/crowbar, /obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, /obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -36519,6 +36488,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, @@ -36570,7 +36540,7 @@ /obj/machinery/door_control/shutter/west{ id = "paramedic"; name = "Garage Door Control"; - req_access_txt = "66" + req_access = list(66) }, /obj/effect/turf_decal/caution/stand_clear{ dir = 1 @@ -36676,7 +36646,7 @@ /obj/item/flashlight/lamp, /obj/machinery/button/windowtint/south{ id = "BS"; - req_access_txt = "67" + req_access = list(67) }, /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) @@ -37160,7 +37130,7 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "cDc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -38685,7 +38655,7 @@ desc = "A remote control switch for the medbay foyer."; id = "imnotmakingyoulubepissoff"; name = "Chemistry Privacy Shutter Control"; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ @@ -39569,8 +39539,9 @@ /obj/structure/window/reinforced{ dir = 1 }, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "cLn" = ( /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, @@ -39776,7 +39747,7 @@ "cMz" = ( /obj/machinery/door/morgue{ name = "Relic Closet"; - req_access_txt = "22" + req_access = list(22) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -39914,30 +39885,19 @@ /area/station/maintenance/asmaint) "cNi" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/metal{ - amount = 50; +/obj/item/stack/sheet/metal/fifty{ pixel_x = 2; pixel_y = 2 }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50; +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty{ pixel_x = -2; pixel_y = -2 }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/rglass{ - amount = 50; +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass/fifty{ pixel_x = -2; pixel_y = 2 }, @@ -40056,7 +40016,7 @@ /obj/machinery/door_control/shutter/east{ id = "XenoPens"; name = "Xenobiology Shutters"; - req_access_txt = "55" + req_access = list(55) }, /obj/machinery/camera{ c_tag = "Xenobiology Lab - Central Port"; @@ -40289,7 +40249,7 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "cOp" = ( /turf/simulated/wall/r_wall, /area/station/maintenance/aft2) @@ -40312,7 +40272,7 @@ "cOA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" + req_access = list(25) }, /obj/machinery/light_switch/north, /obj/effect/spawner/random_spawners/id_skins/no_chance, @@ -40496,7 +40456,7 @@ }, /obj/machinery/alarm/directional/south, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "cPh" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -40626,6 +40586,7 @@ /area/station/maintenance/apmaint) "cPL" = ( /obj/structure/closet/firecloset, +/obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel{ icon_state = "darkneutralfull" }, @@ -41034,7 +40995,7 @@ }, /obj/structure/table, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "cRJ" = ( /obj/structure/chair{ dir = 1 @@ -41079,10 +41040,10 @@ }, /area/station/medical/medbay) "cRO" = ( -/obj/machinery/firealarm/directional/east, /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/exit) "cRP" = ( @@ -41115,7 +41076,7 @@ /turf/simulated/wall, /area/station/medical/psych) "cRV" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall, /area/station/maintenance/port) "cRW" = ( @@ -41685,7 +41646,7 @@ pixel_x = -15; pixel_y = 4 }, -/obj/machinery/light/directional/north, +/obj/machinery/light/small/directional/north, /obj/structure/cable/yellow{ d2 = 4; icon_state = "0-4" @@ -41810,7 +41771,7 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "cUW" = ( /obj/structure/closet/firecloset, /turf/simulated/floor/plasteel, @@ -42255,7 +42216,7 @@ /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" }, -/area/station/science/research) +/area/station/science/misc_lab) "cWN" = ( /obj/structure/chair{ pixel_y = -2 @@ -43037,6 +42998,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/light_switch/west, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -43314,7 +43276,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "dcx" = ( -/obj/effect/spawner/random_spawners/fungus_probably, +/obj/effect/spawner/random/fungus/probably, /turf/simulated/wall, /area/station/maintenance/starboard) "dcC" = ( @@ -45053,7 +45015,7 @@ /obj/machinery/door_control/shutter/north{ id = "evashutter"; name = "E.V.A. Storage Shutter Control"; - req_access_txt = "19" + req_access = list(19) }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -45145,7 +45107,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/secondary/exit) "dHr" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "dHE" = ( @@ -45278,8 +45240,8 @@ /obj/machinery/button/windowtint/north{ id = "Processing"; pixel_x = -6; - req_access_txt = "63"; - range = 4 + range = 4; + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -46075,7 +46037,6 @@ /obj/machinery/airlock_controller/air_cycler{ pixel_x = 9; pixel_y = -25; - req_access_txt = null; vent_link_id = "atmossouth_vent"; ext_door_link_id = "atmossouth_door_ext"; int_door_link_id = "atmossouth_door_int"; @@ -46887,7 +46848,7 @@ id = "Secure Gate"; name = "Brig Lockdown"; pixel_y = 7; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/camera{ c_tag = "Warden's Office"; @@ -47714,7 +47675,7 @@ /obj/machinery/access_button/east{ autolink_id = "atmossm_btn_ext"; name = "Atmospherics Access Button"; - req_access_txt = "24" + req_access = list(24) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plasteel{ @@ -47849,7 +47810,7 @@ id = "roboticsprivacy2"; name = "Robotics Shutters"; pixel_x = -7; - req_access_txt = "29" + req_access = list(29) }, /obj/structure/closet/secure_closet/roboticist, /turf/simulated/floor/plasteel{ @@ -50042,7 +50003,7 @@ id = "toxinaccess"; name = "Toxins Access"; pixel_y = 8; - req_access_txt = "8" + req_access = list(8) }, /obj/machinery/camera{ c_tag = "Science - Toxins Secure - Port"; @@ -50178,7 +50139,7 @@ autolink_id = "atmossouth_btn_ext"; name = "exterior access button"; pixel_y = -24; - req_access_txt = "24;13" + req_access = list(24,13) }, /turf/simulated/floor/plating, /area/station/engineering/atmos) @@ -50382,6 +50343,7 @@ d2 = 8; icon_state = "2-8" }, +/obj/machinery/light_switch/east, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurplecorner" @@ -50798,7 +50760,7 @@ /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/station/science/research) +/area/station/science/xenobiology) "gpj" = ( /obj/machinery/status_display, /turf/simulated/wall/r_wall, @@ -50868,7 +50830,7 @@ /obj/structure/closet/crate/secure{ desc = "A secure crate containing various materials for building a customised test-site."; name = "Test Site Materials Crate"; - req_access_txt = "8" + req_access = list(8) }, /obj/item/target/alien, /obj/item/target/syndicate, @@ -50932,7 +50894,7 @@ }, /obj/effect/turf_decal/tile/purple, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "grn" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -51857,7 +51819,7 @@ id = "xenobio7"; name = "Xenobio Pen 7 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -51910,7 +51872,7 @@ /obj/structure/closet/secure_closet{ anchored = 1; name = "Evidence Storage"; - req_access_txt = "4" + req_access = list(4) }, /obj/structure/cable/yellow, /obj/machinery/power/apc/directional/south, @@ -52279,7 +52241,7 @@ /obj/machinery/door_control/shutter/south{ id = "armory"; name = "Armory Shutter"; - req_access_txt = "3" + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -52334,7 +52296,7 @@ }, /obj/machinery/firealarm/directional/south, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "gZV" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -52367,10 +52329,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/port) -"hbB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/wall, -/area/station/legal/magistrate) "hbN" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -53271,13 +53229,13 @@ name = "Brig Exterior Door Control"; pixel_x = 6; pixel_y = 7; - req_access_txt = "63" + req_access = list(63) }, /obj/machinery/flasher_button{ id = "secentranceflasher"; name = "Brig Entrance Flash Control"; pixel_y = -3; - req_access_txt = "1" + req_access = list(1) }, /obj/structure/cable/yellow{ d1 = 1; @@ -54375,7 +54333,7 @@ id = "xenobio8"; name = "Xenobio Pen 8 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /obj/item/reagent_containers/spray/cleaner{ pixel_x = 5 @@ -55142,6 +55100,9 @@ dir = 1; name = "Delivery Desk" }, +/obj/effect/mapping_helpers/airlock/windoor/access/any/supply/mail_sorting{ + dir = 1 + }, /turf/simulated/floor/plasteel, /area/station/supply/office) "ima" = ( @@ -55268,7 +55229,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/control) "iot" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "ioy" = ( @@ -56006,7 +55967,7 @@ id = "xenobio6"; name = "Xenobio Pen 6 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -56610,7 +56571,7 @@ autolink_id = "arrivalsmaint_btn_ext"; name = "exterior access button"; pixel_y = -24; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -56959,7 +56920,7 @@ name = "Xenobiology Access Button"; pixel_x = -3; pixel_y = 26; - req_access_txt = "55" + req_access = list(55) }, /obj/effect/mapping_helpers/airlock/access/any/science/research, /turf/simulated/floor/plasteel{ @@ -57186,7 +57147,7 @@ name = "Supermatter Access Button"; pixel_x = 0; pixel_y = 24; - req_one_access_txt = "10;24" + req_access = list(10,24) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plasteel{ @@ -57509,7 +57470,7 @@ /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/station/science/research) +/area/station/science/xenobiology) "jwh" = ( /obj/structure/disposalpipe/broken, /turf/simulated/floor/plating, @@ -57649,7 +57610,7 @@ /obj/machinery/access_button/south{ autolink_id = "xeno_btn_ext"; name = "Xenobiology Access Button"; - req_access_txt = "55" + req_access = list(55) }, /obj/structure/cable/yellow{ d1 = 4; @@ -57855,7 +57816,7 @@ /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/station/science/research) +/area/station/science/xenobiology) "jFX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -58588,7 +58549,7 @@ /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/station/science/research) +/area/station/science/xenobiology) "jTy" = ( /obj/structure/closet/bombclosetsecurity, /obj/effect/turf_decal/tile/neutral{ @@ -58611,7 +58572,7 @@ /obj/machinery/access_button/west{ autolink_id = "atmossm_btn_int"; name = "Atmospherics Access Button"; - req_access_txt = "24" + req_access = list(24) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plating, @@ -58764,13 +58725,13 @@ /obj/machinery/button/windowtint/west{ id = "Magistrate"; pixel_y = 6; - req_access_txt = "74" + req_access = list(74) }, /obj/machinery/door_control/normal/west{ id = "magistrateofficedoor"; name = "Office Door"; - req_access_txt = "74"; - pixel_y = -4 + pixel_y = -4; + req_access = list(74) }, /obj/item/clothing/head/helmet/skull/Yorick, /obj/item/radio/intercom/department/security{ @@ -60245,7 +60206,7 @@ id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = -4; - req_access_txt = "24" + req_access = list(24) }, /obj/machinery/light_switch/north{ pixel_x = 6 @@ -60375,7 +60336,7 @@ id = "xenobio4"; name = "Xenobio Pen 4 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -60924,21 +60885,11 @@ pixel_x = -3; pixel_y = 6 }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, /obj/structure/cable/yellow{ d2 = 8; icon_state = "0-8" @@ -61049,9 +61000,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/machinery/light_switch/north{ - pixel_x = -6 - }, +/obj/machinery/light_switch/north, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -61233,7 +61182,7 @@ /obj/machinery/door_control/shutter/south{ id = "XenoPens"; name = "Xenobiology Shutters"; - req_access_txt = "55" + req_access = list(55) }, /obj/item/book/manual/wiki/sop_science{ pixel_y = 4 @@ -61856,13 +61805,13 @@ /area/station/hallway/secondary/bridge) "lnd" = ( /obj/machinery/airlock_controller/air_cycler{ - req_access_txt = "10;13"; vent_link_id = "engine_vent"; ext_door_link_id = "engine_door_ext"; int_door_link_id = "engine_door_int"; pixel_y = 24; ext_button_link_id = "engine_btn_ext"; - int_button_link_id = "engine_btn_int" + int_button_link_id = "engine_btn_int"; + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -62011,7 +61960,7 @@ dir = 8 }, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "lsc" = ( /obj/structure/chair/stool{ dir = 4 @@ -63255,7 +63204,7 @@ id = "xenobio1"; name = "Xenobio Pen 1 Blast Doors"; pixel_y = 1; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -63447,7 +63396,7 @@ id_tag = "roboticsprivacy"; name = "Robotics Shutters" }, -/obj/effect/mapping_helpers/airlock/windoor/access/any/science/research{ +/obj/effect/mapping_helpers/airlock/windoor/access/any/science/robotics{ dir = 4 }, /turf/simulated/floor/plasteel{ @@ -63786,7 +63735,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "mfG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -64512,7 +64461,7 @@ /obj/machinery/button/windowtint/south{ id = "CMO"; pixel_x = -7; - req_access_txt = "40" + req_access = list(40) }, /obj/machinery/keycard_auth{ pixel_x = 7; @@ -65208,22 +65157,22 @@ icon_state = "2-4" }, /obj/structure/rack, -/obj/item/storage/box/tranquilizer{ +/obj/item/storage/fancy/shell/tranquilizer{ pixel_x = 2; pixel_y = 3 }, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/beanbag, +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -2; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -2; pixel_y = -3 }, -/obj/item/storage/box/rubbershot{ +/obj/item/storage/fancy/shell/rubbershot{ pixel_x = -2; pixel_y = -3 }, @@ -66209,7 +66158,7 @@ /turf/simulated/floor/plasteel, /area/station/supply/office) "niC" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -66895,11 +66844,8 @@ /area/space/nearstation) "nzv" = ( /obj/structure/table/wood, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50; +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty{ pixel_x = 3; pixel_y = 3 }, @@ -67188,7 +67134,7 @@ autolink_id = "engine_btn_int"; name = "interior access button"; pixel_x = -24; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -67230,7 +67176,7 @@ autolink_id = "engine_btn_ext"; name = "interior access button"; pixel_y = 24; - req_access_txt = "10;13" + req_access = list(10,13) }, /turf/simulated/floor/plating, /area/station/engineering/control) @@ -68805,15 +68751,9 @@ /area/station/engineering/atmos/distribution) "oCX" = ( /obj/structure/table, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, /obj/item/grenade/chem_grenade/metalfoam, /obj/item/grenade/chem_grenade/metalfoam, /obj/machinery/alarm/directional/north, @@ -70156,11 +70096,11 @@ name = "Virology Lab Access Console"; pixel_x = 24; pixel_y = -24; - req_one_access_txt = "39"; ext_door_link_id = "viro_door_ext"; int_door_link_id = "viro_door_int"; ext_button_link_id = "viro_btn_ext"; - int_button_link_id = "viro_btn_int" + int_button_link_id = "viro_btn_int"; + req_access = list(39) }, /obj/structure/cable/yellow{ d1 = 4; @@ -71819,9 +71759,7 @@ /area/station/security/brig) "pYx" = ( /obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 10 - }, +/obj/item/stack/sheet/metal/ten, /obj/item/electropack, /obj/machinery/firealarm/directional/east, /turf/simulated/floor/engine, @@ -71965,7 +71903,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "qbC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -72317,7 +72255,7 @@ autolink_id = "aiaccess_btn_ext"; name = "exterior access button"; pixel_y = 24; - req_one_access_txt = "75;13" + req_access = list(75,13) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -72476,7 +72414,7 @@ autolink_id = "arrivalsmaint_btn_int"; name = "interior access button"; pixel_y = -24; - req_access_txt = "13" + req_access = list(13) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/simulated/floor/plating, @@ -72775,7 +72713,7 @@ /obj/machinery/button/windowtint/west{ id = "HoS"; pixel_y = 6; - req_access_txt = "58" + req_access = list(58) }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -73002,7 +72940,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plating, /area/station/maintenance/fore) "qAb" = ( @@ -73059,7 +72997,7 @@ /obj/machinery/button/windowtint/east{ id = "Surgery2"; pixel_y = -4; - req_access_txt = "45" + req_access = list(45) }, /obj/machinery/holosign_switch/east{ id = "surgery2"; @@ -73395,7 +73333,7 @@ id = "xenobio3"; name = "Xenobio Pen 3 Blast Doors"; pixel_y = 4; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -73603,7 +73541,7 @@ /obj/machinery/button/windowtint/west{ id = "Interrogation"; pixel_y = 6; - req_access_txt = "63" + req_access = list(63) }, /obj/structure/cable/yellow{ d1 = 2; @@ -73919,7 +73857,7 @@ autolink_id = "aiaccess_btn_int"; name = "interior access button"; pixel_y = 24; - req_one_access_txt = "75;13" + req_access = list(75,13) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -74341,6 +74279,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/light_switch/south, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -75422,7 +75361,7 @@ dir = 1 }, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "rHF" = ( /obj/machinery/light/directional/south, /turf/simulated/floor/plasteel{ @@ -76013,7 +75952,7 @@ /area/station/engineering/atmos/distribution) "rXf" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /turf/simulated/floor/plasteel, /area/station/maintenance/fsmaint) "rXj" = ( @@ -76220,7 +76159,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "scT" = ( -/obj/effect/spawner/random_spawners/fungus_maybe, +/obj/effect/spawner/random/fungus/maybe, /turf/simulated/wall/r_wall, /area/station/public/mrchangs) "sdj" = ( @@ -76232,7 +76171,7 @@ /obj/effect/turf_decal/tile/purple, /obj/structure/extinguisher_cabinet/directional/south, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "sdq" = ( /obj/structure/table, /obj/item/clothing/gloves/color/latex, @@ -76597,7 +76536,7 @@ autolink_id = "atmossouth_btn_int"; name = "interior access button"; pixel_y = -24; - req_access_txt = "13" + req_access = list(13) }, /turf/simulated/floor/plating, /area/station/engineering/atmos) @@ -76787,7 +76726,7 @@ name = "AI Chamber Turret Control"; pixel_x = 5; pixel_y = -24; - req_access_txt = "75" + req_access = list(75) }, /obj/machinery/flasher{ id = "AI"; @@ -77247,7 +77186,7 @@ id = "roboticsprivacy"; name = "Robotics Privacy Control"; pixel_x = -26; - req_access_txt = "29" + req_access = list(29) }, /turf/simulated/floor/plasteel, /area/station/science/robotics) @@ -77451,20 +77390,20 @@ layer = 4; name = "Justice Vent Control"; pixel_x = -26; - req_access_txt = "3" + req_access = list(3) }, /obj/machinery/door_control/shutter/north{ id = "executionfireblast"; name = "Justice Area Lockdown"; pixel_x = -38; - req_access_txt = "2" + req_access = list(2) }, /obj/machinery/ignition_switch{ id = "executionburn"; name = "Justice Ignition Switch"; pixel_x = -25; pixel_y = 36; - req_access_txt = "1" + req_access = list(1) }, /obj/machinery/flasher_button{ id = "justiceflash"; @@ -78435,7 +78374,7 @@ /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/station/science/research) +/area/station/science/xenobiology) "teE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -78779,7 +78718,7 @@ /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/station/science/research) +/area/station/science/xenobiology) "tmd" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -79019,6 +78958,9 @@ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/windoor/access/any/supply/mail_sorting{ + dir = 4 + }, /turf/simulated/floor/plasteel, /area/station/supply/office) "tsm" = ( @@ -79085,7 +79027,7 @@ id = "toxinaccess"; name = "Toxins Access"; pixel_y = 8; - req_access_txt = "8" + req_access = list(8) }, /obj/machinery/light/small/directional/east, /turf/simulated/floor/plasteel, @@ -79351,8 +79293,7 @@ "tAF" = ( /obj/machinery/computer/prisoner{ dir = 1; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ icon_state = "cult" @@ -79459,6 +79400,13 @@ icon_state = "yellow" }, /area/station/engineering/break_room) +"tEG" = ( +/obj/structure/table, +/obj/item/candle, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch/west, +/turf/simulated/floor/plasteel, +/area/station/hallway/secondary/exit) "tEL" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -79637,6 +79585,9 @@ dir = 4 }, /obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/windoor/access/any/supply/mail_sorting{ + dir = 4 + }, /turf/simulated/floor/plasteel, /area/station/supply/office) "tKb" = ( @@ -79662,7 +79613,7 @@ /obj/machinery/door_control/shutter/west{ id = "gateshutter"; name = "Expedition Shutter Control"; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -79876,7 +79827,7 @@ /obj/machinery/button/windowtint/east{ id = "IAA"; pixel_y = 8; - req_access_txt = "38" + req_access = list(38) }, /turf/simulated/floor/carpet, /area/station/legal/lawoffice) @@ -80467,7 +80418,7 @@ }, /area/station/security/main) "uhI" = ( -/obj/effect/spawner/random_spawners/grille_maybe, +/obj/effect/spawner/random/barrier/grille_maybe, /turf/simulated/floor/plasteel, /area/station/maintenance/fore) "uhK" = ( @@ -80494,9 +80445,7 @@ dir = 4 }, /obj/machinery/alarm/directional/west, -/obj/machinery/light_switch/south{ - pixel_x = 6 - }, +/obj/machinery/light_switch/south, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, @@ -81483,7 +81432,7 @@ /obj/machinery/door_control/shutter/north{ id = "qm_warehouse"; name = "Warehouse Door Control"; - req_one_access_txt = "78" + req_access = list(78) }, /turf/simulated/floor/plasteel, /area/station/supply/warehouse) @@ -82069,7 +82018,7 @@ }, /area/station/science/research) "uVH" = ( -/obj/effect/decal/cleanable/fungus, +/obj/effect/spawner/random/fungus/frequent, /turf/simulated/wall, /area/station/maintenance/apmaint) "uWq" = ( @@ -82331,7 +82280,7 @@ id = "imnotmakingyoulubepissoff"; name = "Chemistry Privacy Shutter Control"; pixel_x = 24; - req_access_txt = "33" + req_access = list(33) }, /obj/machinery/chem_master, /turf/simulated/floor/plasteel{ @@ -82759,7 +82708,7 @@ /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" }, -/area/station/science/research) +/area/station/science/misc_lab) "vlP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -85217,8 +85166,7 @@ "wAJ" = ( /obj/machinery/computer/prisoner{ dir = 8; - req_access = null; - req_access_txt = "2" + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 8; @@ -85547,7 +85495,7 @@ "wLt" = ( /obj/structure/sign/biohazard, /turf/simulated/wall/r_wall, -/area/station/science/research) +/area/station/science/misc_lab) "wLB" = ( /mob/living/simple_animal/mouse, /turf/simulated/floor/plating, @@ -85941,7 +85889,7 @@ /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/station/science/research) +/area/station/science/xenobiology) "wWh" = ( /obj/machinery/camera{ c_tag = "Central Primary Hallway - Port"; @@ -85987,7 +85935,7 @@ autolink_id = "viro_btn_int"; name = "Virology Lab Access Button"; pixel_x = 8; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable/yellow{ d1 = 4; @@ -86054,7 +86002,7 @@ name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = -3; - req_access_txt = "55" + req_access = list(55) }, /turf/simulated/floor/plasteel, /area/station/science/xenobiology) @@ -86657,6 +86605,9 @@ pixel_y = 8; anchored = 1 }, +/obj/effect/mapping_helpers/airlock/windoor/access/any/science/research{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "whitepurplefull" }, @@ -87052,7 +87003,7 @@ name = "Supermatter Access Button"; pixel_x = 0; pixel_y = 24; - req_one_access_txt = "10;24" + req_access = list(10,24) }, /obj/effect/mapping_helpers/airlock/access/any/engineering/construction, /turf/simulated/floor/plasteel{ @@ -87698,7 +87649,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "xNa" = ( -/obj/effect/spawner/random_spawners/grille_often, +/obj/effect/spawner/random/barrier/grille_often, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -87802,13 +87753,13 @@ id = "rdrnd"; name = "Primary Research Shutters Control"; pixel_y = 6; - req_access_txt = "7" + req_access = list(7) }, /obj/machinery/door_control/shutter/east{ id = "rndlab2"; name = "Secondary Research Shutters Control"; pixel_y = -6; - req_access_txt = "7" + req_access = list(7) }, /obj/machinery/cell_charger, /turf/simulated/floor/plasteel{ @@ -88168,7 +88119,7 @@ dir = 4 }, /turf/simulated/floor/plasteel, -/area/station/science/research) +/area/station/science/misc_lab) "xXE" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -88267,7 +88218,7 @@ /obj/machinery/access_button/south{ autolink_id = "viro_btn_ext"; name = "Virology Lab Access Button"; - req_access_txt = "39" + req_access = list(39) }, /obj/structure/cable/yellow{ d1 = 4; @@ -88308,7 +88259,7 @@ /obj/machinery/door_control/shutter/west{ id = "teleshutter"; name = "Teleporter Shutters Access Control"; - req_access_txt = "62" + req_access = list(62) }, /turf/simulated/floor/plasteel, /area/station/command/teleporter) @@ -88802,7 +88753,7 @@ }, /area/station/supply/office) "ylG" = ( -/obj/machinery/smartfridge, +/obj/machinery/smartfridge/food/chef, /obj/machinery/door/window/classic/normal{ name = "Anti-Theft Shield"; dir = 1 @@ -113720,7 +113671,7 @@ bZU cxX wqk fgC -cxX +tEG cSO cSO cSO @@ -119280,7 +119231,7 @@ lHy abZ abZ abZ -hbB +abZ abZ aZU baL @@ -125512,14 +125463,14 @@ cte crq ruY cXx -cmB -cmB -cmB -cmB -cmz +cBR +cBR +cBR +cBR +cBR cWK -cmz -bdN +cBR +cBR pyU bPl emj @@ -125769,14 +125720,14 @@ cte cte cte cte -cmB +cBR cOR rMb cSl cLm xXD gqQ -bdN +cBR cHq bPl pyU @@ -126026,14 +125977,14 @@ oNn fvO cwG cyT -cmB +cBR cUu cQg rOD cDa xXD sdj -bdN +cBR csa bPl cOc @@ -126283,14 +126234,14 @@ cte cvV cvV cte -cmB +cBR aKF jyP mUl wOZ qbl cPf -bdN +cBR hrM cEN bnB @@ -126540,14 +126491,14 @@ cww cwG cSa cyd -cmB +cBR cAG pDA cUQ uOY mfA gZT -bdN +cBR cAS adu pyU @@ -126797,14 +126748,14 @@ cuG fvO cwG cye -cmB +cBR cwc lgr cDE cUT lrD bcC -bdN +cBR cPc cPc cPc @@ -127054,14 +127005,14 @@ cwG bUz cuH cyf -cmB +cBR cVo cvW cSl cOk rHl cRH -cmz +cBR aaa aaa aaa @@ -127311,14 +127262,14 @@ cuH cwG cwG cHV -cmB +cBR cBR cBR cBR wLt vkT wLt -cmz +cBR aaa aaa aaa @@ -127572,9 +127523,9 @@ cte aaa aaa aaa -sgH +fvN wVO -sgH +fvN aaa aaa aaa @@ -127829,9 +127780,9 @@ cte aaa aaa aaa -sgH +fvN wVO -sgH +fvN aaa aaa aaa @@ -128086,9 +128037,9 @@ aaa aaa aaa aaa -sgH +fvN wVO -sgH +fvN aaa aaa aaa @@ -128343,9 +128294,9 @@ aaa aaa aaa aaa -sgH +fvN wVO -sgH +fvN aaa aaa aaa @@ -128600,15 +128551,15 @@ aaa aaa aaa aaa -sgH +fvN ten -cfw -sgH -sgH -sgH -sgH -sgH -sgH +cZr +fvN +fvN +fvN +fvN +fvN +fvN abq abq abq @@ -128857,7 +128808,7 @@ aaa aaa aaa aaa -sgH +fvN gpe cuw jvU @@ -128865,7 +128816,7 @@ jvU jvU jFN tlO -sgH +fvN aaa aaa aaa @@ -129114,15 +129065,15 @@ bNP abq iju abq -sgH -sgH -sgH -sgH -sgH -sgH -cfw +fvN +fvN +fvN +fvN +fvN +fvN +cZr jTe -sgH +fvN aaa aaa aaa @@ -129377,9 +129328,9 @@ aaa aaa aaa aaa -sgH +fvN wVO -sgH +fvN aaa aaa aaa diff --git a/code/__DEFINES/proc_refs.dm b/code/__DEFINES/__proc_refs.dm similarity index 100% rename from code/__DEFINES/proc_refs.dm rename to code/__DEFINES/__proc_refs.dm diff --git a/code/__DEFINES/_spacemandmm.dm b/code/__DEFINES/_spacemandmm.dm index 0abcd8bba9a8..8112a60eaece 100644 --- a/code/__DEFINES/_spacemandmm.dm +++ b/code/__DEFINES/_spacemandmm.dm @@ -1,15 +1,22 @@ // This file contains all the defines related to the spacemanDMM linter (dreamchecker). When running under normal conditions, BYOND will ignore all these +// Read https://github.com/SpaceManiac/SpacemanDMM/tree/master/crates/dreamchecker for more info. #ifdef SPACEMAN_DMM #define RETURN_TYPE(X) set SpacemanDMM_return_type = X #define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X #define UNLINT(X) SpacemanDMM_unlint(X) #define SHOULD_NOT_OVERRIDE(X) set SpacemanDMM_should_not_override = X #define SHOULD_NOT_SLEEP(X) set SpacemanDMM_should_not_sleep = X + /// A "pure" proc does not make any external changes, or to its output. #define SHOULD_BE_PURE(X) set SpacemanDMM_should_be_pure = X + /// Private procs can only be called by things of exactly the same type. This also prevents overriding of the proc. #define PRIVATE_PROC(X) set SpacemanDMM_private_proc = X + /// Protected procs can only be call by things of the same type or subtypes #define PROTECTED_PROC(X) set SpacemanDMM_protected_proc = X + /// Final vars forbid overriding their value by types that inherit it. #define VAR_FINAL var/SpacemanDMM_final + /// Private vars can only be called by things of exactly the same type #define VAR_PRIVATE var/SpacemanDMM_private + /// Protected vars can only be call by things of the same type or subtypes #define VAR_PROTECTED var/SpacemanDMM_protected #else #define RETURN_TYPE(X) diff --git a/code/__DEFINES/access_defines.dm b/code/__DEFINES/access_defines.dm index 10b3c80ad656..b946f7a75ba7 100644 --- a/code/__DEFINES/access_defines.dm +++ b/code/__DEFINES/access_defines.dm @@ -88,3 +88,4 @@ #define ACCESS_AWAY01 271 //! Access used for moonoutpost19 ruin. #define ACCESS_FREE_GOLEMS 300 //! Ghost role: free golems. #define ACCESS_THETA_STATION 301 //! Ghost role: Theta station. +#define ACCESS_DEEPSTORAGE 512 //! Space ruin: Deep Storage diff --git a/code/__DEFINES/antag_defines.dm b/code/__DEFINES/antag_defines.dm index 1e567e6bbaaf..77cdd9178856 100644 --- a/code/__DEFINES/antag_defines.dm +++ b/code/__DEFINES/antag_defines.dm @@ -106,3 +106,8 @@ GLOBAL_LIST(contractors) // Chance that a traitor will receive a 'You are being targeted by another syndicate agent' notification regardless of being an actual target #define ORG_PROB_PARANOIA 5 + +/// How often a biohazard's population is recorded after the event fires. +#define BIOHAZARD_POP_INTERVAL 5 MINUTES +/// The string version of the interval for use in blackbox key names. +#define BIOHAZARD_POP_INTERVAL_STR "5min" diff --git a/code/__DEFINES/atmospherics_defines.dm b/code/__DEFINES/atmospherics_defines.dm index eff495a06658..2df5b9f0a2f0 100644 --- a/code/__DEFINES/atmospherics_defines.dm +++ b/code/__DEFINES/atmospherics_defines.dm @@ -151,7 +151,12 @@ // Reactions #define N2O_DECOMPOSITION_MIN_ENERGY 1400 #define N2O_DECOMPOSITION_ENERGY_RELEASED 200000 - +/// The coefficient a for a function of the form: 1 - (a / (x + c)^2) which gives a decomposition rate of 0.5 at 50000 Kelvin +/// And a decomposition close to 0 at 1400 Kelvin +#define N2O_DECOMPOSITION_COEFFICIENT_A 1.376651173e10 +/// The coefficient c for a function of the form: 1 - (a / (x + c)^2) which gives a decomposition rate of 0.5 at 50000 Kelvin +/// And a decomposition rate close to 0 at 1400 Kelvin +#define N2O_DECOMPOSITION_COEFFICIENT_C 115930.77913 // From milla/src/model.rs, line 126 #define ATMOS_MODE_SPACE 0 //! Tile is exposed to space and loses air every second #define ATMOS_MODE_SEALED 1 //! Tile has no special behaviour diff --git a/code/__DEFINES/combat_defines.dm b/code/__DEFINES/combat_defines.dm index 88e5cf342111..4bf5eb5b7e05 100644 --- a/code/__DEFINES/combat_defines.dm +++ b/code/__DEFINES/combat_defines.dm @@ -53,6 +53,7 @@ //Health Defines #define HEALTH_THRESHOLD_CRIT 0 +#define HEALTH_THRESHOLD_SUCCUMB -30 #define HEALTH_THRESHOLD_KNOCKOUT -50 #define HEALTH_THRESHOLD_DEAD -100 diff --git a/code/__DEFINES/dcs/datum_signals.dm b/code/__DEFINES/dcs/datum_signals.dm index 650c91a12e30..6850155f3451 100644 --- a/code/__DEFINES/dcs/datum_signals.dm +++ b/code/__DEFINES/dcs/datum_signals.dm @@ -8,7 +8,7 @@ /// when a component is added to a datum: (/datum/component) #define COMSIG_COMPONENT_ADDED "component_added" -/// before a component is removed from a datum because of RemoveComponent: (/datum/component) +/// before a component is removed from a datum because of UnlinkComponent: (/datum/component) #define COMSIG_COMPONENT_REMOVING "component_removing" /// before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation #define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" diff --git a/code/__DEFINES/dcs/mob_signals.dm b/code/__DEFINES/dcs/mob_signals.dm index 5ff291666809..286daac792f5 100644 --- a/code/__DEFINES/dcs/mob_signals.dm +++ b/code/__DEFINES/dcs/mob_signals.dm @@ -131,6 +131,8 @@ ///from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment #define COMSIG_LIVING_ATTACH_LIMB "living_attach_limb" #define COMPONENT_NO_ATTACH (1<<0) +///from base of mob/living/health_update() +#define COMSIG_LIVING_HEALTH_UPDATE "living_health_update" ///sent from borg recharge stations: (amount, repairs) #define COMSIG_PROCESS_BORGCHARGER_OCCUPANT "living_charge" ///sent when a mob enters a borg charger diff --git a/code/__DEFINES/dcs/movable_signals.dm b/code/__DEFINES/dcs/movable_signals.dm index 2d197e1d0dd4..c0ac15e5393f 100644 --- a/code/__DEFINES/dcs/movable_signals.dm +++ b/code/__DEFINES/dcs/movable_signals.dm @@ -39,6 +39,8 @@ #define COMSIG_MOVABLE_POST_THROW "movable_post_throw" ///from base of datum/thrownthing/finalize(): (obj/thrown_object, datum/thrownthing) used for when a throw is finished #define COMSIG_MOVABLE_THROW_LANDED "movable_throw_landed" +///from base of atom/movable/shove_impact(): (mob/living/target, mob/living/attacker) +#define COMSIG_MOVABLE_SHOVE_IMPACT "movable_shove_impact" ///from base of atom/movable/onTransitZ(): (old_z, new_z) #define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" diff --git a/code/__DEFINES/dcs/obj_signals.dm b/code/__DEFINES/dcs/obj_signals.dm index 1cee071550ef..936667d709ff 100644 --- a/code/__DEFINES/dcs/obj_signals.dm +++ b/code/__DEFINES/dcs/obj_signals.dm @@ -20,3 +20,16 @@ #define COMSIG_CURSED_SLOT_MACHINE_LOST "cursed_slot_machine_lost" /// from /obj/structure/cursed_slot_machine/determine_victor() when someone finally wins. #define COMSIG_GLOB_CURSED_SLOT_MACHINE_WON "cursed_slot_machine_won" + + +// other subtypes + +/// from /datum/component/shelved/UnregisterFromParent(): (parent_uid) +#define COMSIG_SHELF_ITEM_REMOVED "shelf_item_removed" +/// from /datum/component/shelver/add_item(): (obj/item/to_add, placement_idx, list/position_details) +#define COMSIG_SHELF_ITEM_ADDED "shelf_item_added" +/// from Initialize on objects implementing /datum/component/shelved +#define COMSIG_SHELF_ADDED_ON_MAPLOAD "shelf_added_on_mapload" +/// from /datum/component/shelver/shelf_items() +#define COMSIG_SHELF_ATTEMPT_PICKUP "shelf_attempt_pickup" + #define SHELF_PICKUP_FAILURE (1 << 0) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 5b460ff93401..cfe41cb599e2 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -9,8 +9,14 @@ #define PLANE_SPACE -95 #define PLANE_SPACE_PARALLAX -90 -#define FLOOR_PLANE -2 -#define FLOOR_OVERLAY_PLANE -1.5 +#define FLOOR_PLANE -6 +#define FLOOR_OVERLAY_PLANE -5 + +#define FLOOR_LIGHTING_LAMPS_GLARE -4 +#define FLOOR_LIGHTING_LAMPS_SELFGLOW -3 +#define FLOOR_LIGHTING_LAMPS_PLANE -2 +#define FLOOR_LIGHTING_LAMPS_RENDER_TARGET "*FLOOR_LIGHTING_LAMPS_RENDER_TARGET" + #define GAME_PLANE -1 #define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals diff --git a/code/__DEFINES/lighting_defines.dm b/code/__DEFINES/lighting_defines.dm index 87bde7284321..03e1789a51dc 100644 --- a/code/__DEFINES/lighting_defines.dm +++ b/code/__DEFINES/lighting_defines.dm @@ -27,6 +27,11 @@ 0, 0, 0, 1 \ ) \ +// Defines that handle the current status of a light +#define LIGHT_OK 0 +#define LIGHT_EMPTY 1 +#define LIGHT_BROKEN 2 +#define LIGHT_BURNED 3 //Some defines to generalise colours used in lighting. //Important note on colors. Colors can end up significantly different from the basic html picture, especially when saturated diff --git a/code/__DEFINES/misc_defines.dm b/code/__DEFINES/misc_defines.dm index f6e6c5e55f53..880142c805ff 100644 --- a/code/__DEFINES/misc_defines.dm +++ b/code/__DEFINES/misc_defines.dm @@ -105,7 +105,7 @@ #define STAGE_SIX 11 //From supermatter shard /// A define for the center of the coordinate map of big machinery -#define MACH_CENTER 0 +#define MACH_CENTER 2 #define in_range(source, user) (get_dist(source, user) <= 1) @@ -186,52 +186,52 @@ //Human Overlays Indexes///////// #define EYES_OVERLAY_LAYER 48 -#define WING_LAYER 47 -#define WING_UNDERLIMBS_LAYER 46 -#define MUTANTRACE_LAYER 45 -#define TAIL_UNDERLIMBS_LAYER 44 //Tail split-rendering. -#define LIMBS_LAYER 43 -#define MARKINGS_LAYER 42 -#define INTORGAN_LAYER 41 -#define UNDERWEAR_LAYER 40 -#define MUTATIONS_LAYER 39 -#define H_DAMAGE_LAYER 38 -#define UNIFORM_LAYER 37 -#define ID_LAYER 36 -#define HANDS_LAYER 35 //Exists to overlay hands over jumpsuits -#define SHOES_LAYER 34 -#define L_FOOT_BLOOD_LAYER 33 // Blood overlay separation Left-Foot -#define R_FOOT_BLOOD_LAYER 32 // Blood overlay separation Right-Foot -#define GLOVES_LAYER 31 -#define L_HAND_BLOOD_LAYER 30 // Blood overlay separation Left-Hand -#define R_HAND_BLOOD_LAYER 29 // Blood overlay separation Right-Hand -#define LEFT_EAR_LAYER 28 -#define RIGHT_EAR_LAYER 27 -#define BELT_LAYER 26 //Possible make this an overlay of something required to wear a belt? -#define SUIT_LAYER 25 -#define SPECIAL_BELT_LAYER 24 -#define SUIT_STORE_LAYER 23 -#define BACK_LAYER 22 -#define HEAD_ACCESSORY_LAYER 21 -#define FHAIR_LAYER 20 -#define GLASSES_LAYER 19 -#define HAIR_LAYER 18 //TODO: make part of head layer? -#define HEAD_ACC_OVER_LAYER 17 //Select-layer rendering. -#define FHAIR_OVER_LAYER 16 //Select-layer rendering. -#define GLASSES_OVER_LAYER 15 //Select-layer rendering. -#define TAIL_LAYER 14 //bs12 specific. this hack is probably gonna come back to haunt me -#define FACEMASK_LAYER 13 -#define OVER_MASK_LAYER 12 //Select-layer rendering. -#define HEAD_LAYER 11 -#define COLLAR_LAYER 10 -#define HANDCUFF_LAYER 9 -#define LEGCUFF_LAYER 8 -#define L_HAND_LAYER 7 -#define R_HAND_LAYER 6 -#define TARGETED_LAYER 5 //BS12: Layer for the target overlay from weapon targeting system -#define HALO_LAYER 4 //blood cult ascended halo, because there's currently no better solution for adding/removing -#define FIRE_LAYER 3 //If you're on fire -#define MISC_LAYER 2 +#define MISC_LAYER 47 // Handles eye_shine() -> cybernetic eyes, specific eye traits. +#define WING_LAYER 46 +#define WING_UNDERLIMBS_LAYER 45 +#define MUTANTRACE_LAYER 44 +#define TAIL_UNDERLIMBS_LAYER 43 //Tail split-rendering. +#define LIMBS_LAYER 42 +#define MARKINGS_LAYER 41 +#define INTORGAN_LAYER 40 +#define UNDERWEAR_LAYER 39 +#define MUTATIONS_LAYER 38 +#define H_DAMAGE_LAYER 37 +#define UNIFORM_LAYER 36 +#define ID_LAYER 35 +#define HANDS_LAYER 34 //Exists to overlay hands over jumpsuits +#define SHOES_LAYER 33 +#define L_FOOT_BLOOD_LAYER 32 // Blood overlay separation Left-Foot +#define R_FOOT_BLOOD_LAYER 31 // Blood overlay separation Right-Foot +#define GLOVES_LAYER 30 +#define L_HAND_BLOOD_LAYER 29 // Blood overlay separation Left-Hand +#define R_HAND_BLOOD_LAYER 28 // Blood overlay separation Right-Hand +#define LEFT_EAR_LAYER 27 +#define RIGHT_EAR_LAYER 26 +#define BELT_LAYER 25 //Possible make this an overlay of something required to wear a belt? +#define SUIT_LAYER 24 +#define SPECIAL_BELT_LAYER 23 +#define SUIT_STORE_LAYER 22 +#define BACK_LAYER 21 +#define HEAD_ACCESSORY_LAYER 20 +#define FHAIR_LAYER 19 +#define GLASSES_LAYER 18 +#define HAIR_LAYER 17 //TODO: make part of head layer? +#define HEAD_ACC_OVER_LAYER 16 //Select-layer rendering. +#define FHAIR_OVER_LAYER 15 //Select-layer rendering. +#define GLASSES_OVER_LAYER 14 //Select-layer rendering. +#define TAIL_LAYER 13 //bs12 specific. this hack is probably gonna come back to haunt me +#define FACEMASK_LAYER 12 +#define OVER_MASK_LAYER 11 //Select-layer rendering. +#define HEAD_LAYER 10 +#define COLLAR_LAYER 9 +#define HANDCUFF_LAYER 8 +#define LEGCUFF_LAYER 7 +#define L_HAND_LAYER 6 +#define R_HAND_LAYER 5 +#define TARGETED_LAYER 4 //BS12: Layer for the target overlay from weapon targeting system +#define HALO_LAYER 3 //blood cult ascended halo, because there's currently no better solution for adding/removing +#define FIRE_LAYER 2 //If you're on fire #define FROZEN_LAYER 1 #define TOTAL_LAYERS 48 @@ -423,7 +423,7 @@ #define INVESTIGATE_HOTMIC "hotmic" // The SQL version required by this version of the code -#define SQL_VERSION 592207 +#define SQL_VERSION 602207 // Vending machine stuff #define CAT_NORMAL (1<<0) @@ -592,12 +592,6 @@ /// Mutes the democracy mode messages send to orbiters at the end of each cycle. Useful for when the cooldown is so low it'd get spammy. #define MUTE_DEADCHAT_DEMOCRACY_MESSAGES (1<<2) -// Lavaland cave design defines - -#define BLOCKED_BURROWS "Blocked Burrows" -#define CLASSIC_CAVES "Classic Caves" -#define DEADLY_DEEPROCK "Deadly Deeprock" - ///Sleep check QDEL. Like sleep check death, but checks deleting. Good for non mobs. #define SLEEP_CHECK_QDEL(X) sleep(X); if(QDELETED(src)) return; // Request console message priority defines @@ -734,3 +728,7 @@ do { \ #define INGREDIENT_CHECK_EXACT 1 #define INGREDIENT_CHECK_FAILURE 0 #define INGREDIENT_CHECK_SURPLUS -1 + +#define LAVALAND_TENDRIL_COLLAPSE_RANGE 2 //! The radius of the chasm created by killed tendrils. + +#define ALPHA_VISIBLE 255 // the max alpha diff --git a/code/__DEFINES/mob_defines.dm b/code/__DEFINES/mob_defines.dm index 58af2e1bb569..eba27654e8f5 100644 --- a/code/__DEFINES/mob_defines.dm +++ b/code/__DEFINES/mob_defines.dm @@ -14,6 +14,7 @@ // Organ datum defines. Each one of these represents a slot for organ datums in internal_organ_datums #define ORGAN_DATUM_HEART "heart" #define ORGAN_DATUM_LUNGS "lungs" +#define ORGAN_DATUM_BATTERY "battery" // For limb resistance flags #define CANNOT_BREAK (1 << 0) diff --git a/code/__DEFINES/milla.dm b/code/__DEFINES/rust.dm similarity index 57% rename from code/__DEFINES/milla.dm rename to code/__DEFINES/rust.dm index bf5f2ddca090..07242e955f50 100644 --- a/code/__DEFINES/milla.dm +++ b/code/__DEFINES/rust.dm @@ -1,59 +1,62 @@ -// milla.dm - DM API for milla extension library +// DM API for Rust extension modules +// Current modules: +// - MILLA, an asynchronous replacement for BYOND atmos +// - Mapmanip, a parse-time DMM file reader and modifier -// Default automatic MILLA detection. +// Default automatic library detection. // Look for it in the build location first, then in `.`, then in standard places. -/* This comment bypasses grep checks */ /var/__milla +/* This comment bypasses grep checks */ /var/__rustlib -/proc/__detect_milla() +/proc/__detect_rustlib() if(world.system_type == UNIX) #ifdef CIBUILDING - // CI override, use libmilla_ci.so if possible. - if(fexists("./tools/ci/libmilla_ci.so")) - return __milla = "tools/ci/libmilla_ci.so" + // CI override, use librustlibs_ci.so if possible. + if(fexists("./tools/ci/librustlibs_ci.so")) + return __rustlib = "tools/ci/librustlibs_ci.so" #endif // First check if it's built in the usual place. - if(fexists("./milla/target/i686-unknown-linux-gnu/release/libmilla.so")) - return __milla = "./milla/target/i686-unknown-linux-gnu/release/libmilla.so" + if(fexists("./rust/target/i686-unknown-linux-gnu/release/librustlibs.so")) + return __rustlib = "./rust/target/i686-unknown-linux-gnu/release/librustlibs.so" // Then check in the current directory. - if(fexists("./libmilla.so")) - return __milla = "./libmilla.so" + if(fexists("./librustlibs.so")) + return __rustlib = "./librustlibs.so" // And elsewhere. - return __milla = "libmilla.so" + return __rustlib = "librustlibs.so" else // First check if it's built in the usual place. - if(fexists("./milla/target/i686-pc-windows-msvc/release/milla.dll")) - return __milla = "./milla/target/i686-pc-windows-msvc/release/milla.dll" + if(fexists("./rust/target/i686-pc-windows-msvc/release/rustlibs.dll")) + return __rustlib = "./rust/target/i686-pc-windows-msvc/release/rustlibs.dll" // Then check in the current directory. - if(fexists("./milla.dll")) - return __milla = "./milla.dll" + if(fexists("./rustlibs.dll")) + return __rustlib = "./rustlibs.dll" // And elsewhere. - return __milla = "milla.dll" + return __rustlib = "rustlibs.dll" -#define MILLA (__milla || __detect_milla()) +#define RUSTLIB (__rustlib || __detect_rustlib()) -#define MILLA_CALL(func, args...) call_ext(MILLA, "byond:[#func]_ffi")(args) +#define RUSTLIB_CALL(func, args...) call_ext(RUSTLIB, "byond:[#func]_ffi")(args) /proc/milla_init_z(z) - return MILLA_CALL(initialize, z) + return RUSTLIB_CALL(milla_initialize, z) /proc/is_milla_synchronous(tick) - return MILLA_CALL(is_synchronous, tick) + return RUSTLIB_CALL(milla_is_synchronous, tick) /proc/set_tile_atmos(turf/T, airtight_north, airtight_east, airtight_south, airtight_west, atmos_mode, environment_id, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature, innate_heat_capacity) - return MILLA_CALL(set_tile, T, airtight_north, airtight_east, airtight_south, airtight_west, atmos_mode, environment_id, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature, innate_heat_capacity) + return RUSTLIB_CALL(milla_set_tile, T, airtight_north, airtight_east, airtight_south, airtight_west, atmos_mode, environment_id, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature, innate_heat_capacity) /proc/get_tile_atmos(turf/T, list/L) - return MILLA_CALL(get_tile, T, L) + return RUSTLIB_CALL(milla_get_tile, T, L) /proc/spawn_milla_tick_thread() - return MILLA_CALL(spawn_tick_thread) + return RUSTLIB_CALL(milla_spawn_tick_thread) /proc/get_milla_tick_time() - return MILLA_CALL(get_tick_time) + return RUSTLIB_CALL(milla_get_tick_time) /proc/get_interesting_atmos_tiles() - return MILLA_CALL(get_interesting_tiles) + return RUSTLIB_CALL(milla_get_interesting_tiles) /proc/reduce_superconductivity(turf/T, list/superconductivity) var/north = superconductivity[1] @@ -61,10 +64,10 @@ var/south = superconductivity[3] var/west = superconductivity[4] - return MILLA_CALL(reduce_superconductivity, T, north, east, south, west) + return RUSTLIB_CALL(milla_reduce_superconductivity, T, north, east, south, west) /proc/reset_superconductivity(turf/T) - return MILLA_CALL(reset_superconductivity, T) + return RUSTLIB_CALL(milla_reset_superconductivity, T) /proc/set_tile_airtight(turf/T, list/airtight) var/north = airtight[1] @@ -72,16 +75,19 @@ var/south = airtight[3] var/west = airtight[4] - return MILLA_CALL(set_tile_airtight, T, north, east, south, west) + return RUSTLIB_CALL(milla_set_tile_airtight, T, north, east, south, west) /proc/get_random_interesting_tile() - return MILLA_CALL(get_random_interesting_tile) + return RUSTLIB_CALL(milla_get_random_interesting_tile) /proc/create_environment(oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature) - return MILLA_CALL(create_environment, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature) + return RUSTLIB_CALL(milla_create_environment, oxygen, carbon_dioxide, nitrogen, toxins, sleeping_agent, agent_b, temperature) -#undef MILLA -#undef MILLA_CALL +/proc/mapmanip_read_dmm(mapname) + return RUSTLIB_CALL(mapmanip_read_dmm_file, mapname) + +#undef RUSTLIB +#undef RUSTLIB_CALL // Indexes for Tiles and InterestingTiles // Must match the order in milla/src/model.rs diff --git a/code/__DEFINES/sound_defines.dm b/code/__DEFINES/sound_defines.dm index 262f2a600f69..583bc231980c 100644 --- a/code/__DEFINES/sound_defines.dm +++ b/code/__DEFINES/sound_defines.dm @@ -12,10 +12,11 @@ #define CHANNEL_RADIO_NOISE 1014 // radio headset noise #define CHANNEL_BOSS_MUSIC 1013 #define CHANNEL_GENERAL 1012 +#define CHANNEL_SURGERY_SOUNDS 1011 // SS220 ADDITION START -#define CHANNEL_TTS_RADIO 1011 -#define CHANNEL_TTS_LOCAL 1010 -#define CHANNEL_CINEMATIC 1009 +#define CHANNEL_TTS_RADIO 1010 +#define CHANNEL_TTS_LOCAL 1009 +#define CHANNEL_CINEMATIC 1008 // SS220 ADDITION END #define USER_VOLUME(M, C) M?.client?.prefs.get_channel_volume(C) @@ -23,7 +24,7 @@ //THIS SHOULD ALWAYS BE THE LOWEST ONE! //KEEP IT UPDATED -#define CHANNEL_HIGHEST_AVAILABLE 1008 +#define CHANNEL_HIGHEST_AVAILABLE 1007 #define MAX_INSTRUMENT_CHANNELS (128 * 6) diff --git a/code/__HELPERS/bitflag_lists.dm b/code/__HELPERS/bitflag_lists.dm index ace6e0720ac2..7d7023a0cfbf 100644 --- a/code/__HELPERS/bitflag_lists.dm +++ b/code/__HELPERS/bitflag_lists.dm @@ -4,7 +4,7 @@ GLOBAL_LIST_EMPTY(bitflag_lists) * System for storing bitflags past the 24 limit, making use of an associative list. * * Macro converts a list of integers into an associative list of bitflag entries for quicker comparison. - * Example: list(0, 4, 26, 32)) => list( "0" = ( (1<<0) | (1<<4) ), "1" = ( (1<<2) | (1<<8) ) ) + * Example: list(0, 4, 26, 32)) => list("0" = ( (1<<0) | (1<<4) ), "1" = ( (1<<2) | (1<<8) )) * Lists are cached into a global list of lists to avoid identical duplicates. * This system makes value comparisons faster than pairing every element of one list with every element of the other for evaluation. * diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 0c172757ce39..959af27e822a 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -920,3 +920,10 @@ while(islist(result)) result = pickweight(fill_with_ones(result)) return result + +/** + * Checks to make sure that the lists have the exact same contents, ignores the order of the contents. + */ +/proc/lists_equal_unordered(list/list_one, list/list_two) + // This ensures that both lists contain the same elements by checking if the difference between them is empty in both directions. + return !length(list_one ^ list_two) diff --git a/code/__HELPERS/paths/path.dm b/code/__HELPERS/paths/path.dm index ef5bd32e3f16..5e33353c005a 100644 --- a/code/__HELPERS/paths/path.dm +++ b/code/__HELPERS/paths/path.dm @@ -359,7 +359,7 @@ src.can_ventcrawl = living_construct.ventcrawler == VENTCRAWLER_ALWAYS || living_construct.ventcrawler == VENTCRAWLER_NUDE src.mob_size = living_construct.mob_size src.incorporeal_move = living_construct.incorporeal_move - is_flying = living_construct.flying + is_flying = HAS_TRAIT(living_construct, TRAIT_FLYING) if(iscameramob(construct_from)) src.camera_type = construct_from.type src.is_bot = isbot(construct_from) @@ -386,7 +386,7 @@ GLOBAL_LIST_INIT(can_pass_info_vars, GLOBAL_PROC_REF(can_pass_check_vars)) /datum/can_pass_info/proc/compare_against(datum/can_pass_info/check_against) for(var/comparable_var in GLOB.can_pass_info_vars) - if(!(vars[comparable_var] ~= check_against[comparable_var])) + if(!(vars[comparable_var] ~= check_against.vars[comparable_var])) return FALSE if(!pulling_info != !check_against.pulling_info) return FALSE diff --git a/code/__HELPERS/trait_helpers.dm b/code/__HELPERS/trait_helpers.dm index ecaa149c21e2..beea1ae000f6 100644 --- a/code/__HELPERS/trait_helpers.dm +++ b/code/__HELPERS/trait_helpers.dm @@ -129,7 +129,7 @@ /// A simple helper for checking traits in a mob's mind #define HAS_MIND_TRAIT(target, trait) (istype(target, /datum/mind) ? HAS_TRAIT(target, trait) : (target.mind ? HAS_TRAIT(target.mind, trait) : FALSE)) /// Gives a unique trait source for any given datum -#define UNIQUE_TRAIT_SOURCE(target) "unique_source_[UID(target)]" +#define UNIQUE_TRAIT_SOURCE(target) "unique_source_[target.UID()]" /* Remember to update _globalvars/traits.dm if you're adding/removing/renaming traits. @@ -225,7 +225,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_IPC_JOINTS_SEALED "ipc_joints_sealed" // The IPC's limbs will not pop off bar sharp damage (aka like a human), but will take slightly more stamina damage #define TRAIT_HAS_GPS "has_gps" // used for /Stat #define TRAIT_CAN_VIEW_HEALTH "can_view_health" // Also used for /Stat -#define TRAIT_MAGPULSE "magnetificent" // Used for anything that is magboot related +#define TRAIT_MAGPULSE "magpulse" // Used for anything that is magboot related #define TRAIT_NOSLIP "noslip" #define TRAIT_SCOPED "user_scoped" #define TRAIT_MEPHEDRONE_ADAPTED "mephedrone_adapted" // Trait that changes the ending effects of twitch leaving your system @@ -237,6 +237,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NPC_ZOMBIE "npc_zombie" // A trait for checking if a zombie should act like an NPC and attack #define TRAIT_ABSTRACT_HANDS "abstract_hands" // Mobs with this trait can only pick up abstract items. #define TRAIT_LANGUAGE_LOCKED "language_locked" // cant add/remove languages until removed (excludes babel because fuck everything i guess) +#define TRAIT_FLYING "flying" //***** MIND TRAITS *****/ #define TRAIT_HOLY "is_holy" // The mob is holy in regards to religion @@ -412,3 +413,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai //***** EFFECT TRAITS *****// // Causes the effect to go through a teleporter instead of being deleted by it. #define TRAIT_EFFECT_CAN_TELEPORT "trait_effect_can_teleport" + +//***** PROC WRAPPERS *****// +/// Proc wrapper of add_trait. You should only use this for callback. Otherwise, use the macro. +/proc/callback_add_trait(datum/target, trait, source) + ADD_TRAIT(target, trait, source) + +/// Proc wrapper of remove_trait. You should only use this for callback. Otherwise, use the macro. +/proc/callback_remove_trait(datum/target, trait, source) + REMOVE_TRAIT(target, trait, source) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index efc529ea251b..3dd0ec77e5ef 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1141,41 +1141,23 @@ Checks if that loc and dir has a item on the wall */ GLOBAL_LIST_INIT(wall_items, typecacheof(list(/obj/machinery/power/apc, /obj/machinery/alarm, /obj/item/radio/intercom, /obj/structure/extinguisher_cabinet, /obj/structure/reagent_dispensers/peppertank, - /obj/machinery/status_display, /obj/machinery/requests_console, /obj/machinery/light_switch, /obj/structure/sign, + /obj/machinery/status_display, /obj/machinery/requests_console, /obj/structure/sign, /obj/machinery/newscaster, /obj/machinery/firealarm, /obj/structure/noticeboard, /obj/machinery/door_control, /obj/machinery/computer/security/telescreen, /obj/machinery/airlock_controller, /obj/item/storage/secure/safe, /obj/machinery/door_timer, /obj/machinery/flasher, /obj/machinery/keycard_auth, /obj/structure/mirror, /obj/structure/closet/fireaxecabinet, /obj/machinery/computer/security/telescreen/entertainment, - /obj/structure/sign, /obj/machinery/barsign))) + /obj/structure/sign, /obj/machinery/barsign, /obj/machinery/light, /obj/machinery/light_construct))) /proc/gotwallitem(loc, dir) for(var/obj/O in loc) - if(is_type_in_typecache(O, GLOB.wall_items)) - //Direction works sometimes - if(O.dir == dir) - return 1 - - //Some stuff doesn't use dir properly, so we need to check pixel instead - switch(dir) - if(SOUTH) - if(O.pixel_y > 10) - return 1 - if(NORTH) - if(O.pixel_y < -10) - return 1 - if(WEST) - if(O.pixel_x > 10) - return 1 - if(EAST) - if(O.pixel_x < -10) - return 1 - - //Some stuff is placed directly on the wallturf (signs) + if(is_type_in_typecache(O, GLOB.wall_items) && dir == O.dir) + return TRUE + + // Some stuff is placed directly on the wallturf (signs) for(var/obj/O in get_step(loc, dir)) if(is_type_in_typecache(O, GLOB.wall_items)) - if(abs(O.pixel_x) <= 10 && abs(O.pixel_y) <= 10) - return 1 - return 0 + return TRUE + return FALSE /proc/atan2(x, y) if(!x && !y) return 0 @@ -1874,9 +1856,6 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) continue . += A -/proc/pass() - return - /atom/proc/Shake(pixelshiftx = 15, pixelshifty = 15, duration = 250) var/initialpixelx = pixel_x var/initialpixely = pixel_y @@ -1971,15 +1950,18 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) return "Radio Noise" if(CHANNEL_BOSS_MUSIC) return "Boss Music" + if(CHANNEL_SURGERY_SOUNDS) + return "Surgery Sounds" // SS220 ADDITON START if(CHANNEL_TTS_LOCAL) return "TTS Local" if(CHANNEL_TTS_RADIO) return "TTS Radio" if(CHANNEL_CINEMATIC) - return "Cinematic music" + return "Cinematic Music" // SS220 ADDITION END + /proc/slot_bitfield_to_slot(input_slot_flags) // Kill off this garbage ASAP; slot flags and clothing flags should be IDENTICAL. GOSH DARN IT. Doesn't work with ears or pockets, either. switch(input_slot_flags) if(SLOT_FLAG_OCLOTHING) diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 8c6d4580c43a..815aaa41d997 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -43,6 +43,6 @@ #define MIN_COMPILER_BUILD 1619 #if DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD //Don't forget to update this part -#error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. +#error Your version of BYOND is too out-of-date to compile this project. Go to secure.byond.com/download and update. #error You need version 515.1619 or higher #endif diff --git a/code/_globalvars/lists/dye_registry.dm b/code/_globalvars/lists/dye_registry.dm index c3a61c8dcc3e..4b794f626bbf 100644 --- a/code/_globalvars/lists/dye_registry.dm +++ b/code/_globalvars/lists/dye_registry.dm @@ -36,10 +36,15 @@ GLOBAL_LIST_INIT(dye_registry, list( DYE_CENTCOM = /obj/item/clothing/under/rank/centcom/commander, ), DYE_REGISTRY_JUMPSKIRT = list( - DYE_RED = /obj/item/clothing/under/dress/plaid_red, - DYE_BLUE = /obj/item/clothing/under/dress/plaid_blue, - DYE_PURPLE = /obj/item/clothing/under/dress/plaid_purple, - DYE_BLACK = /obj/item/clothing/under/dress/blackskirt, + DYE_RED = /obj/item/clothing/under/color/jumpskirt/red, + DYE_ORANGE = /obj/item/clothing/under/color/jumpskirt/orange, + DYE_YELLOW = /obj/item/clothing/under/color/jumpskirt/yellow, + DYE_GREEN = /obj/item/clothing/under/color/jumpskirt/green, + DYE_BLUE = /obj/item/clothing/under/color/jumpskirt/blue, + DYE_PURPLE = /obj/item/clothing/under/color/jumpskirt/lightpurple, + DYE_BLACK = /obj/item/clothing/under/color/jumpskirt/black, + DYE_WHITE = /obj/item/clothing/under/color/jumpskirt/white, + DYE_RAINBOW = /obj/item/clothing/under/color/jumpskirt/rainbow, DYE_MIME = /obj/item/clothing/under/rank/civilian/mime/skirt, DYE_QM = /obj/item/clothing/under/rank/cargo/qm/skirt, DYE_CAPTAIN = /obj/item/clothing/under/rank/captain/dress, diff --git a/code/_globalvars/lists/maint_loot_tables.dm b/code/_globalvars/lists/maint_loot_tables.dm index 12640e2c35a4..df0fd9a8242c 100644 --- a/code/_globalvars/lists/maint_loot_tables.dm +++ b/code/_globalvars/lists/maint_loot_tables.dm @@ -175,6 +175,7 @@ GLOBAL_LIST_INIT(maintenance_loot_tier_2, list( // Other rare but useful items /obj/item/radio/headset, /obj/item/melee/knuckleduster, + /obj/item/melee/stylet, // SS220 ADDITION ) = 3, )) diff --git a/code/_globalvars/lists/reagents_lists.dm b/code/_globalvars/lists/reagents_lists.dm index 92e50d01ed7f..17c8e76bc0d2 100644 --- a/code/_globalvars/lists/reagents_lists.dm +++ b/code/_globalvars/lists/reagents_lists.dm @@ -10,7 +10,7 @@ GLOBAL_LIST_INIT(standard_medicines, list("charcoal","toxin","cyanide","morphine GLOBAL_LIST_INIT(rare_medicines, list("syndicate_nanites","minttoxin","blood", "xenomicrobes")) // Drinks GLOBAL_LIST_INIT(drinks, list("beer2","hot_coco","orangejuice","tomatojuice","limejuice","carrotjuice", - "berryjuice","poisonberryjuice","watermelonjuice","lemonjuice","banana", + "berryjuice","poisonberryjuice","watermelonjuice","lemonjuice","banana", "bungojuice", "nothing","potato","milk","soymilk","cream","coffee","tea","icecoffee", "icetea","cola","nuka_cola","spacemountainwind","thirteenloko","dr_gibb", "space_up","lemon_lime","beer","whiskey","gin","rum","vodka","holywater", @@ -48,5 +48,6 @@ GLOBAL_LIST_INIT(blocked_chems, list("polonium", "initropidril", "concentrated_i "lavaland_extract", "stable_mutagen", "beer2", "curare", "gluttonytoxin", "smoke_powder", "stimulative_cling", "teslium_paste", "omnizine_no_addiction", "zombiecure1", - "zombiecure2", "zombiecure3", "zombiecure4" + "zombiecure2", "zombiecure3", "zombiecure4", + "admincleaner_all", "admincleaner_item", "admincleaner_mob", )) diff --git a/code/_globalvars/misc_globals.dm b/code/_globalvars/misc_globals.dm index cd1c7816b1ca..a053f08dada4 100644 --- a/code/_globalvars/misc_globals.dm +++ b/code/_globalvars/misc_globals.dm @@ -45,8 +45,6 @@ GLOBAL_VAR_INIT(gametime_offset, 432000) // 12:00 in seconds GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) // Station datacore, manifest, etc -GLOBAL_LIST_INIT(pipe_colors, list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_RED, "blue" = PIPE_COLOR_BLUE, "cyan" = PIPE_COLOR_CYAN, "green" = PIPE_COLOR_GREEN, "yellow" = PIPE_COLOR_YELLOW, "purple" = PIPE_COLOR_PURPLE)) - /// Global list of all /datum/mod_theme GLOBAL_LIST_INIT(mod_themes, setup_mod_themes()) diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm index 4ac17efb7f98..c28d7efb270a 100644 --- a/code/_onclick/hud/plane_master.dm +++ b/code/_onclick/hud/plane_master.dm @@ -118,6 +118,11 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT render_target = LIGHTING_LAMPS_RENDER_TARGET +/atom/movable/screen/plane_master/lamps/floor + name = "floor lamps plane master" + plane = FLOOR_LIGHTING_LAMPS_PLANE + render_target = FLOOR_LIGHTING_LAMPS_RENDER_TARGET + /atom/movable/screen/plane_master/exposure name = "exposure plane master" plane = LIGHTING_EXPOSURE_PLANE @@ -143,6 +148,12 @@ appearance_flags = PLANE_MASTER //should use client color blend_mode = BLEND_ADD mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/target_rendering = LIGHTING_LAMPS_RENDER_TARGET + +/atom/movable/screen/plane_master/lamps_selfglow/floor + name = "floor lamps selfglow plane master" + plane = FLOOR_LIGHTING_LAMPS_SELFGLOW + target_rendering = FLOOR_LIGHTING_LAMPS_RENDER_TARGET /atom/movable/screen/plane_master/lamps_selfglow/backdrop(mob/mymob) remove_filter("add_lamps_to_selfglow") @@ -169,13 +180,19 @@ else return - add_filter("add_lamps_to_selfglow", 1, layering_filter(render_source = LIGHTING_LAMPS_RENDER_TARGET, blend_mode = BLEND_OVERLAY)) + add_filter("add_lamps_to_selfglow", 1, layering_filter(render_source = target_rendering, blend_mode = BLEND_OVERLAY)) add_filter("lamps_selfglow_bloom", 1, bloom_filter(threshold = "#777777", size = bloomsize, offset = bloomoffset, alpha = 80)) /atom/movable/screen/plane_master/lamps_glare name = "lamps glare plane master" plane = LIGHTING_LAMPS_GLARE mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/target_rendering = LIGHTING_LAMPS_RENDER_TARGET + +/atom/movable/screen/plane_master/lamps_glare/floor + name = "floor lamps glare plane master" + plane = FLOOR_LIGHTING_LAMPS_GLARE + target_rendering = FLOOR_LIGHTING_LAMPS_RENDER_TARGET /atom/movable/screen/plane_master/lamps_glare/backdrop(mob/mymob) remove_filter("add_lamps_to_glare") @@ -187,5 +204,5 @@ var/enabled = mymob?.client?.prefs?.light & LIGHT_GLARE if(enabled) - add_filter("add_lamps_to_glare", 1, layering_filter(render_source = LIGHTING_LAMPS_RENDER_TARGET, blend_mode = BLEND_ADD)) + add_filter("add_lamps_to_glare", 1, layering_filter(render_source = target_rendering, blend_mode = BLEND_ADD)) add_filter("lamps_glare", 1, radial_blur_filter(size = 0.035)) diff --git a/code/_onclick/hud/plane_master_controller.dm b/code/_onclick/hud/plane_master_controller.dm index 1e3d317fc1a2..d16e2da744e2 100644 --- a/code/_onclick/hud/plane_master_controller.dm +++ b/code/_onclick/hud/plane_master_controller.dm @@ -76,6 +76,9 @@ name = PLANE_MASTERS_GAME controlled_planes = list( FLOOR_PLANE, + FLOOR_LIGHTING_LAMPS_SELFGLOW, + FLOOR_LIGHTING_LAMPS_PLANE, + FLOOR_LIGHTING_LAMPS_GLARE, GAME_PLANE, LIGHTING_PLANE, PLANE_SPACE_PARALLAX, diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm index 9d5c2fee9333..8dfa035ab309 100644 --- a/code/controllers/failsafe.dm +++ b/code/controllers/failsafe.dm @@ -165,9 +165,9 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) if(. == 1) //We were able to create a new master SSticker.Recover(); //Recover the ticket system so the Masters runlevel gets set Master.Initialize(10, FALSE, TRUE) //Need to manually start the MC, normally world.new would do this - to_chat(GLOB.admins, "MC successfully recreated after deleting and recreating all subsystems!") + to_chat(GLOB.admins, "MC successfully recreated after deleting and recreating all subsystems!") else - message_admins("Failed to create new MC!") + message_admins("Failed to create new MC!") /datum/controller/failsafe/proc/defcon_pretty() return defcon diff --git a/code/controllers/subsystem/SSair.dm b/code/controllers/subsystem/SSair.dm index fa9fbd8b6b7f..6da9b4916c1a 100644 --- a/code/controllers/subsystem/SSair.dm +++ b/code/controllers/subsystem/SSair.dm @@ -57,9 +57,6 @@ SUBSYSTEM_DEF(air) /// A list of atmos machinery to set up in Initialize. var/list/machinery_to_construct = list() - /// Pipe overlay/underlay icon manager - var/datum/pipe_icon_manager/icon_manager - /// An arbitrary list of stuff currently being processed. var/list/currentrun = list() @@ -138,7 +135,6 @@ SUBSYSTEM_DEF(air) in_milla_safe_code = TRUE setup_overlays() // Assign icons and such for gas-turf-overlays - icon_manager = new() // Sets up icon manager for pipes setup_allturfs() setup_write_to_milla() setup_atmos_machinery(GLOB.machines) @@ -154,7 +150,6 @@ SUBSYSTEM_DEF(air) pipenets = SSair.pipenets atmos_machinery = SSair.atmos_machinery machinery_to_construct = SSair.machinery_to_construct - icon_manager = SSair.icon_manager currentrun = SSair.currentrun currentpart = SSair.currentpart is_synchronous = SSair.is_synchronous diff --git a/code/controllers/subsystem/SSblackbox.dm b/code/controllers/subsystem/SSblackbox.dm index cdd10077d26b..1141f715152b 100644 --- a/code/controllers/subsystem/SSblackbox.dm +++ b/code/controllers/subsystem/SSblackbox.dm @@ -195,13 +195,16 @@ SUBSYSTEM_DEF(blackbox) * Arguments: * * key_type - Type of key. Either "text", "amount", "tally", "nested tally", "associative" * * key - Key of the data to be used (EG: "admin_verb") - * * increment - If using "amount", how much to increment why + * * stat - Either a number accumulated via "amount", "tally", or "nested tally"; or a number/string collected by "ledger" or "nested ledger". * * data - The actual data to logged * * overwrite - Do we want to overwrite the existing key * * ignore_seal - Does the feedback go in regardless of blackbox sealed status? (EG: map vote results) */ -/datum/controller/subsystem/blackbox/proc/record_feedback(key_type, key, increment, data, overwrite, ignore_seal) - if((sealed && !ignore_seal) || !key_type || !istext(key) || !isnum(increment || !data)) +/datum/controller/subsystem/blackbox/proc/record_feedback(key_type, key, stat, data, overwrite, ignore_seal) + var/is_invalid_value = !isnum(stat || !data) + if(key_type == "ledger" || key_type == "nested ledger") + is_invalid_value &&= !istext(stat) + if((sealed && !ignore_seal) || !key_type || !istext(key) || is_invalid_value) return var/datum/feedback_variable/FV = find_feedback_datum(key, key_type) switch(key_type) @@ -215,17 +218,17 @@ SUBSYSTEM_DEF(blackbox) else FV.json["data"] |= data if("amount") - FV.json["data"] += increment + FV.json["data"] += stat if("tally") if(!islist(FV.json["data"])) FV.json["data"] = list() - FV.json["data"]["[data]"] += increment + FV.json["data"]["[data]"] += stat if("nested tally") if(!islist(data)) return if(!islist(FV.json["data"])) FV.json["data"] = list() - FV.json["data"] = record_feedback_recurse_list(FV.json["data"], data, increment) + FV.json["data"] = record_feedback_recurse_list(FV.json["data"], data, stat) if("associative") if(!islist(data)) return @@ -235,6 +238,18 @@ SUBSYSTEM_DEF(blackbox) FV.json["data"]["[pos]"] = list() for(var/i in data) FV.json["data"]["[pos]"]["[i]"] = "[data[i]]" + if("ledger") + if(!islist(FV.json["data"])) + FV.json["data"] = list() + if(!islist(FV.json["data"]["[data]"])) + FV.json["data"]["[data]"] = list() + FV.json["data"]["[data]"] += list(stat) + if("nested ledger") + if(!islist(data)) + return + if(!islist(FV.json["data"])) + FV.json["data"] = list() + FV.json["data"] = record_feedback_recurse_list(FV.json["data"], data, stat, accumulate = FALSE) /** * Recursive list recorder @@ -244,21 +259,28 @@ SUBSYSTEM_DEF(blackbox) * Arguments: * * L - List to use * * key_list - List of keys to add - * * increment - How much to increase by + * * value - How much to increase by or append to * * depth - Depth to use + * * accumulate - TRUE if we are adding `value` to a tally, FALSE if we are appending it to a record */ -/datum/controller/subsystem/blackbox/proc/record_feedback_recurse_list(list/L, list/key_list, increment, depth = 1) +/datum/controller/subsystem/blackbox/proc/record_feedback_recurse_list(list/L, list/key_list, value, depth = 1, accumulate = TRUE) + var/key_depth = key_list[depth] if(depth == length(key_list)) - if(L.Find(key_list[depth])) - L["[key_list[depth]]"] += increment + if(L.Find(key_depth)) + if(accumulate) + L["[key_depth]"] += value + else + if(!islist(L["[key_depth]"])) + L["[key_depth]"] = list() + L["[key_depth]"] += list(value) else - var/list/list_found_index = list(key_list[depth] = increment) + var/list/list_found_index = accumulate ? list("[key_depth]" = value) : list("[key_depth]" = list(value)) L += list_found_index else - if(!L.Find(key_list[depth])) - var/list/list_go_down = list(key_list[depth] = list()) + if(!L.Find(key_depth)) + var/list/list_go_down = list("[key_depth]" = list()) L += list_go_down - L["[key_list[depth-1]]"] = .(L["[key_list[depth]]"], key_list, increment, ++depth) + L["[key_list[depth-1]]"] = .(L["[key_depth]"], key_list, value, ++depth, accumulate = accumulate) return L /** diff --git a/code/controllers/subsystem/SSinput.dm b/code/controllers/subsystem/SSinput.dm index 4e4e27477fc6..0ee764297381 100644 --- a/code/controllers/subsystem/SSinput.dm +++ b/code/controllers/subsystem/SSinput.dm @@ -22,6 +22,8 @@ SUBSYSTEM_DEF(input) return "P: [length(processing)]" /datum/controller/subsystem/input/fire(resumed = FALSE) + // Sleeps in input handling are bad, because they can stall the entire subsystem indefinitely, breaking most movement. key_loop has SHOULD_NOT_SLEEP(TRUE), which helps, but it doesn't catch everything, so we also waitfor=FALSE here, as using INVOKE_ASYNC here is very unperformant. + set waitfor = FALSE var/list/to_cull for(var/client/C in processing) if(processing[C] + AUTO_CULL_TIME < world.time) diff --git a/code/controllers/subsystem/SSstatpanel.dm b/code/controllers/subsystem/SSstatpanel.dm index 20804e50b5f2..b918eb8a4e71 100644 --- a/code/controllers/subsystem/SSstatpanel.dm +++ b/code/controllers/subsystem/SSstatpanel.dm @@ -294,7 +294,7 @@ SUBSYSTEM_DEF(statpanels) actively_tracking = TRUE /datum/object_window_info/proc/stop_turf_tracking() - qdel(GetComponent(/datum/component/connect_mob_behalf)) + DeleteComponent(/datum/component/connect_mob_behalf) actively_tracking = FALSE /datum/object_window_info/proc/on_mob_move(mob/source) diff --git a/code/controllers/subsystem/SSticker.dm b/code/controllers/subsystem/SSticker.dm index 37535ca1b436..639fc1737099 100644 --- a/code/controllers/subsystem/SSticker.dm +++ b/code/controllers/subsystem/SSticker.dm @@ -67,6 +67,8 @@ SUBSYSTEM_DEF(ticker) var/datum/scoreboard/score = null /// List of ckeys who had antag rolling issues flagged var/list/flagged_antag_rollers = list() + /// List of biohazards keyed to the last time their population was sampled. + var/list/biohazard_pop_times = list() /datum/controller/subsystem/ticker/Initialize() login_music = pick(\ @@ -112,6 +114,10 @@ SUBSYSTEM_DEF(ticker) delay_end = FALSE // reset this in case round start was delayed mode.process() + for(var/biohazard in biohazard_pop_times) + if(world.time - biohazard_pop_times[biohazard] > BIOHAZARD_POP_INTERVAL) + sample_biohazard_population(biohazard) + if(world.time > next_autotransfer) SSvote.start_vote(new /datum/vote/crew_transfer) next_autotransfer = world.time + GLOB.configuration.vote.autotransfer_interval_time @@ -331,7 +337,7 @@ SUBSYSTEM_DEF(ticker) SSdbcore.SetRoundStart() to_chat(world, "Enjoy the game!") - SEND_SOUND(world, sound('sound/AI/welcome.ogg')) + SEND_SOUND(world, sound(SSmapping.map_datum.welcome_sound)) if(SSholiday.holidays) to_chat(world, "and...") @@ -834,22 +840,45 @@ SUBSYSTEM_DEF(ticker) continue .++ -/// Return whether or not a given biohazard is an active threat. -/// For blobs, this is simply if there are any overminds left. For terrors and -/// xenomorphs, this is whether they have overwhelming numbers. -/datum/controller/subsystem/ticker/proc/biohazard_active_threat(biohazard) +/datum/controller/subsystem/ticker/proc/sample_biohazard_population(biohazard) + SSblackbox.record_feedback("ledger", "biohazard_pop_[BIOHAZARD_POP_INTERVAL_STR]_interval", biohazard_count(biohazard), biohazard) + biohazard_pop_times[biohazard] = world.time + +/// Record the initial time that a biohazard spawned. +/datum/controller/subsystem/ticker/proc/record_biohazard_start(biohazard) + SSblackbox.record_feedback("associative", "biohazard_starts", 1, list("type" = biohazard, "time_ds" = world.time - time_game_started)) + sample_biohazard_population(biohazard) + +/datum/controller/subsystem/ticker/proc/biohazard_count(biohazard) switch(biohazard) if(TS_INFESTATION_GREEN_SPIDER, TS_INFESTATION_WHITE_SPIDER, TS_INFESTATION_PRINCESS_SPIDER, TS_INFESTATION_QUEEN_SPIDER) var/spiders = 0 for(var/mob/living/simple_animal/hostile/poison/terror_spider/S in GLOB.ts_spiderlist) if(S.ckey) spiders++ - return spiders >= 5 + return spiders if(TS_INFESTATION_PRINCE_SPIDER) return length(GLOB.ts_spiderlist) if(BIOHAZARD_XENO) - return count_xenomorps() > 5 + return count_xenomorps() if(BIOHAZARD_BLOB) return length(SSticker.mode.blob_overminds) + CRASH("biohazard_count got unexpected [biohazard]") + +/// Return whether or not a given biohazard is an active threat. +/// For blobs, this is simply if there are any overminds left. For terrors and +/// xenomorphs, this is whether they have overwhelming numbers. +/datum/controller/subsystem/ticker/proc/biohazard_active_threat(biohazard) + var/count = biohazard_count(biohazard) + switch(biohazard) + if(TS_INFESTATION_GREEN_SPIDER, TS_INFESTATION_WHITE_SPIDER, TS_INFESTATION_PRINCESS_SPIDER, TS_INFESTATION_QUEEN_SPIDER) + return count >= 5 + if(TS_INFESTATION_PRINCE_SPIDER) + return count > 0 + if(BIOHAZARD_XENO) + return count > 5 + if(BIOHAZARD_BLOB) + return count > 0 + return FALSE diff --git a/code/controllers/subsystem/non_firing/SSatoms.dm b/code/controllers/subsystem/non_firing/SSatoms.dm index 038f417c9b0c..fb5419680375 100644 --- a/code/controllers/subsystem/non_firing/SSatoms.dm +++ b/code/controllers/subsystem/non_firing/SSatoms.dm @@ -49,7 +49,6 @@ SUBSYSTEM_DEF(atoms) log_startup_progress("Initialized [count] atoms in [stop_watch(watch)]s") else log_debug(" Initialized [count] atoms in [stop_watch(watch)]s") - pass(count) initialized = INITIALIZATION_INNEW_REGULAR diff --git a/code/controllers/subsystem/non_firing/SSlate_mapping.dm b/code/controllers/subsystem/non_firing/SSlate_mapping.dm index ca68dc48e9f8..b3e66541577c 100644 --- a/code/controllers/subsystem/non_firing/SSlate_mapping.dm +++ b/code/controllers/subsystem/non_firing/SSlate_mapping.dm @@ -12,6 +12,10 @@ SUBSYSTEM_DEF(late_mapping) var/list/obj/effect/spawner/bridge/bridge_spawners = list() /datum/controller/subsystem/late_mapping/Initialize() + // Sort all the air machines we initialized during mapload by name all at once + GLOB.air_alarms = sortAtom(GLOB.air_alarms) + GLOB.apcs = sortAtom(GLOB.apcs) + if(length(maze_generators)) var/watch = start_watch() log_startup_progress("Generating mazes...") diff --git a/code/controllers/subsystem/non_firing/SSmapping.dm b/code/controllers/subsystem/non_firing/SSmapping.dm index ca5592181358..2c4e86a6af40 100644 --- a/code/controllers/subsystem/non_firing/SSmapping.dm +++ b/code/controllers/subsystem/non_firing/SSmapping.dm @@ -15,7 +15,7 @@ SUBSYSTEM_DEF(mapping) ///What do we have as the lavaland theme today? var/datum/lavaland_theme/lavaland_theme ///What primary cave theme we have picked for cave generation today. - var/cave_theme + var/datum/caves_theme/caves_theme // Tells if all maintenance airlocks have emergency access enabled var/maint_all_access = FALSE // Tells if all station airlocks have emergency access enabled @@ -55,10 +55,15 @@ SUBSYSTEM_DEF(mapping) var/datum/lavaland_theme/lavaland_theme_type = pick(subtypesof(/datum/lavaland_theme)) ASSERT(lavaland_theme_type) lavaland_theme = new lavaland_theme_type - log_startup_progress("We're in the mood for [initial(lavaland_theme.name)] today...") //We load this first. In the event some nerd ever makes a surface map, and we don't have it in lavaland in the event lavaland is disabled. + log_startup_progress("We're in the mood for [lavaland_theme.name] today...") //We load this first. In the event some nerd ever makes a surface map, and we don't have it in lavaland in the event lavaland is disabled. + SSblackbox.record_feedback("text", "procgen_settings", 1, "[lavaland_theme_type]") + + var/caves_theme_type = pick(subtypesof(/datum/caves_theme)) + ASSERT(caves_theme_type) + caves_theme = new caves_theme_type + log_startup_progress("We feel like [caves_theme.name] today...") + SSblackbox.record_feedback("text", "procgen_settings", 1, "[caves_theme_type]") - cave_theme = pick(BLOCKED_BURROWS, CLASSIC_CAVES, DEADLY_DEEPROCK) - log_startup_progress("We feel like [cave_theme] today...") // Load all Z level templates preloadTemplates() preloadTemplates(path = "code/modules/unit_tests/atmos/") @@ -89,7 +94,8 @@ SUBSYSTEM_DEF(mapping) seedRuins(list(level_name_to_num(MINING)), GLOB.configuration.ruins.lavaland_ruin_budget, /area/lavaland/surface/outdoors/unexplored, GLOB.lava_ruins_templates) if(lavaland_theme) lavaland_theme.setup() - lavaland_theme.setup_caves() + if(caves_theme) + caves_theme.setup() var/time_spent = stop_watch(lavaland_setup_timer) log_startup_progress("Successfully populated lavaland in [time_spent]s.") else @@ -169,7 +175,7 @@ SUBSYSTEM_DEF(mapping) /obj/item/salvage/ruin/carp, /obj/item/salvage/ruin/tablet, /obj/item/salvage/ruin/pirate, - /obj/item/salvage/ruin/russian + /obj/item/salvage/ruin/soviet ) for(var/z_level in space_z_levels) diff --git a/code/controllers/subsystem/processing/SSstation.dm b/code/controllers/subsystem/processing/SSstation.dm index 73fe2a6f2364..64a285813d33 100644 --- a/code/controllers/subsystem/processing/SSstation.dm +++ b/code/controllers/subsystem/processing/SSstation.dm @@ -18,9 +18,9 @@ PROCESSING_SUBSYSTEM_DEF(station) /datum/controller/subsystem/processing/station/proc/SetupTraits() if(fexists("data/next_traits.txt")) - var/forced_traits_contents = file2list("data/next_traits.txt") + var/forced_traits_contents = file2text("data/next_traits.txt") fdel("data/next_traits.txt") - var/list/temp_list = splittext(forced_traits_contents[1], ",") + var/list/temp_list = json_decode(forced_traits_contents) for(var/trait_text_path in temp_list) var/station_trait_path = text2path(trait_text_path) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index cbf6e6940e7a..d525b295db3d 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -441,6 +441,14 @@ return new_comp return old_comp +/** + * Removes the component from the datum + */ +/datum/proc/DeleteComponent(component_to_nuke) + var/datum/component/removing = GetComponent(component_to_nuke) + if(istype(removing, component_to_nuke) && !QDELETED(removing)) + qdel(removing) + /** * Get existing component of type, or create it and return a reference to it * @@ -458,7 +466,7 @@ /** * Removes the component from parent, ends up with a null parent */ -/datum/component/proc/RemoveComponent() +/datum/component/proc/UnlinkComponent() if(!parent) return var/datum/old_parent = parent @@ -467,6 +475,13 @@ parent = null SEND_SIGNAL(old_parent, COMSIG_COMPONENT_REMOVING, src) +/** + * Deletes the component and removes it from parent. + */ +/datum/component/proc/RemoveComponent() // This really is just a wrapper to pretend that we're using sane procs to fully remove a component + if(!QDELETED(src)) + qdel(src) + /** * Transfer this component to another parent * @@ -479,7 +494,7 @@ if(!target || target.parent == src) return if(target.parent) - target.RemoveComponent() + target.UnlinkComponent() target.parent = src var/result = target.PostTransfer() switch(result) diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm index bca3cc8056ae..de94b8dfe934 100644 --- a/code/datums/components/caltrop.dm +++ b/code/datums/components/caltrop.dm @@ -65,7 +65,7 @@ if(bypass_shoes && ((H?.shoes?.flags & THICKMATERIAL) || (H?.wear_suit?.flags & THICKMATERIAL))) return - if(H.flying || H.floating || H.buckled) + if(HAS_TRAIT(H, TRAIT_FLYING) || H.floating || H.buckled) return if(IS_HORIZONTAL(H) && HAS_TRAIT(H, TRAIT_CONTORTED_BODY)) diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index 5903c1b669da..1784f8f05fac 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -53,7 +53,7 @@ return var/mob/living/LM = parent - if(!T.footstep || !(LM.mobility_flags & MOBILITY_MOVE) || LM.buckled || LM.throwing || LM.flying || istype(LM.loc, /obj/machinery/atmospherics)) + if(!T.footstep || !(LM.mobility_flags & MOBILITY_MOVE) || LM.buckled || LM.throwing || HAS_TRAIT(LM, TRAIT_FLYING) || istype(LM.loc, /obj/machinery/atmospherics)) return steps++ diff --git a/code/datums/components/multitile.dm b/code/datums/components/multitile.dm index da09bfc6d575..aa01a5741aa6 100644 --- a/code/datums/components/multitile.dm +++ b/code/datums/components/multitile.dm @@ -16,45 +16,64 @@ */ //distance_from_center does not include src itself -/datum/component/multitile/Initialize(distance_from_center, new_filler_map) - if(!distance_from_center || !length(new_filler_map)) +/datum/component/multitile/Initialize(new_filler_map) + if(!length(new_filler_map)) return COMPONENT_INCOMPATIBLE if(!isatom(parent)) return COMPONENT_INCOMPATIBLE + var/max_height = length(new_filler_map) + var/max_width = length(new_filler_map[1]) //it should have the same length on every row + + var/offset_x = 0 + var/offset_y = 0 var/atom/owner = parent - if(owner.x + distance_from_center > world.maxx || owner.x - distance_from_center < 1) + + for(var/i in 1 to length(new_filler_map)) + if(length(new_filler_map[i] != max_width)) + stack_trace("A multitile component was passed a list wich did not have the same length every row. Atom parent is: [parent]") + var/obj/machinery/machine = parent + machine.deconstruct() + return COMPONENT_INCOMPATIBLE + + for(var/j in 1 to length(new_filler_map[i])) + if(new_filler_map[i][j] == MACH_CENTER) + offset_x = j - ((length(new_filler_map[i]) + 1) / 2) + offset_y = i - ((length(new_filler_map) + 1) / 2) + + var/distance_from_center_x = (max_width - 1) / 2 + var/distance_from_center_y = (max_height - 1) / 2 + + if(owner.x - offset_x + distance_from_center_x > world.maxx || owner.x + offset_x - distance_from_center_x < 1) var/obj/machinery/machine = parent machine.deconstruct() return COMPONENT_INCOMPATIBLE - if(owner.y + distance_from_center > world.maxy || owner.y - distance_from_center < 1) + if(owner.y + offset_y + distance_from_center_y > world.maxy || owner.y - offset_y - distance_from_center_y < 1) var/obj/machinery/machine = parent machine.deconstruct() return COMPONENT_INCOMPATIBLE - var/max_height = length(new_filler_map) - var/max_width = length(new_filler_map[1]) //it should have the same length on every row - for(var/i in 2 to length(new_filler_map)) - var/length = length(new_filler_map[i]) - if(length != max_width) - stack_trace("A multitile component was passed a list wich did not have the same length every row. Atom parent is: [parent]") - var/obj/machinery/machine = parent - machine.deconstruct() - return COMPONENT_INCOMPATIBLE - var/current_height = 0 - var/current_width = 0 + var/current_width = 1 + var/tile_index = 1 - for(var/turf/filler_turf as anything in RANGE_TURFS(distance_from_center, owner)) - if(new_filler_map[max_height - current_height][max_width - current_width]) // Because the `block()` proc always works from the bottom left to the top right, we have to loop through our nested lists in reverse + for(var/turf/filler_turf as anything in block( + owner.x - offset_x - distance_from_center_x, owner.y + offset_y - distance_from_center_y, owner.z, + owner.x - offset_x + distance_from_center_x, owner.y + offset_y + distance_from_center_y, owner.z, + )) + //Last check is for filler row lists of length 1. + if(new_filler_map[max_height - current_height][current_width] == 1) // Because the `block()` proc always works from the bottom left to the top right, we have to loop through our list in reverse var/obj/structure/filler/new_filler = new(filler_turf) all_fillers += new_filler current_width += 1 - if(current_width == max_width) + tile_index++ + if(tile_index % max_width == 1) current_height += 1 - current_width = 0 + current_width = 1 + if(current_height == max_height) + break /datum/component/multitile/Destroy(force, silent) QDEL_LIST_CONTENTS(all_fillers) diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm index d7a5a3a8adef..d697ada974e3 100644 --- a/code/datums/components/orbiter.dm +++ b/code/datums/components/orbiter.dm @@ -456,7 +456,7 @@ var/list/output = list() if(!processed) processed = list() - if(src in processed || isturf(src)) + if((src in processed) || isturf(src)) return output processed += src diff --git a/code/datums/components/riding/riding_vehicle.dm b/code/datums/components/riding/riding_vehicle.dm index f79270b13da1..55cd8c721190 100644 --- a/code/datums/components/riding/riding_vehicle.dm +++ b/code/datums/components/riding/riding_vehicle.dm @@ -144,7 +144,7 @@ return var/obj/tgvehicle/scooter/skateboard/S = parent for(var/mob/living/L in S.return_occupants()) // Only one on a skateboard unless an admin var edits it. If an admin var edits it, that is on them. - if((L.staminaloss >= 60 || L.health <= 40) && !L.absorb_stun(0)) // Only injured people can be shot off. Hulks and people on stimulants can not be shot off. + if((L.getStaminaLoss() >= 60 || L.health <= 40) && !L.absorb_stun(0)) // Only injured people can be shot off. Hulks and people on stimulants can not be shot off. S.unbuckle_mob(L) L.KnockDown(2 SECONDS) L.visible_message("[L] gets shot off [S] by [projectile]!", diff --git a/code/datums/components/shelved.dm b/code/datums/components/shelved.dm new file mode 100644 index 000000000000..e2fa92ad93dc --- /dev/null +++ b/code/datums/components/shelved.dm @@ -0,0 +1,300 @@ +#define MAX_SHELF_ITEMS 6 + +/datum/component/shelver + /// A list whose keys are a 4-tuple of (left, bottom, right, top) bounding boxes to position details. + /// Position details include "x" and "y" as pixel offsets, and "layer" as appearance layer for a placed object. + var/list/placement_zones = list() + /// A list of slots, one per placement zone. Either empty, or containing the UID of the object in that place. + var/list/used_places = list() + /// A list of types which are are valid to place on this shelf. + var/list/allowed_types = list() + /// The default scale transformation for objects placed on the shelf. + var/default_scale = 0.70 + /// The default rotation transformation for objects placed on the shelf. + var/default_rotation = 0 + /// Whether objects auto-shelved by the component are placed in random order on the shelf. + var/random_pickup_locations = FALSE + +/datum/component/shelver/Initialize(list/allowed_types_ = null, random_pickup_locations_ = FALSE) + if(!isstructure(parent)) + return COMPONENT_INCOMPATIBLE + used_places.len = length(placement_zones) + if(length(allowed_types_)) + allowed_types += allowed_types_ + random_pickup_locations = random_pickup_locations_ + +/datum/component/shelver/RegisterWithParent() + RegisterSignal(parent, COMSIG_SHELF_ATTEMPT_PICKUP, PROC_REF(on_shelf_attempt_pickup)) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(on_attackby)) + RegisterSignal(parent, COMSIG_SHELF_ITEM_REMOVED, PROC_REF(on_shelf_item_removed)) + RegisterSignal(parent, COMSIG_SHELF_ADDED_ON_MAPLOAD, PROC_REF(prepare_autoshelf)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) + +/datum/component/shelver/proc/on_examine(datum/source, mob/user, list/examine_list) + SIGNAL_HANDLER // COMSIG_PARENT_EXAMINE + var/list/results = list() + for(var/uid in used_places) + if(uid) + var/obj/item/I = locateUID(uid) + if(istype(I)) + results += "\a [I.name]" + + if(!length(results)) + return + + var/joined_results = english_list(results) + examine_list += "It currently holds: [joined_results]." + +/datum/component/shelver/proc/prepare_autoshelf() + SIGNAL_HANDLER // COMSIG_SHELF_ADDED_ON_MAPLOAD + + // See /obj/structure/closet/Initialize for explanation of + // addtimer use here + addtimer(CALLBACK(src, PROC_REF(shelf_items)), 0) + +/datum/component/shelver/proc/shelf_items() + var/obj/structure/structure_parent = parent + + var/list/nearby_empty_tiles = list() + for(var/turf/turf_in_view in view(2, get_turf(structure_parent))) + if(!isfloorturf(turf_in_view)) + continue + for(var/turf/potential_blockage as anything in get_line(get_turf(structure_parent), turf_in_view)) + if(!is_blocked_turf(potential_blockage, exclude_mobs = TRUE, excluded_objs = list(parent))) + nearby_empty_tiles += turf_in_view + + var/itemcount = 1 + for(var/obj/item/I in structure_parent.loc) + if(I.density || I.anchored || I == structure_parent) + continue + if(itemcount > MAX_SHELF_ITEMS) + // If we can't fit it on the shelf, toss it somewhere nearby + if(length(nearby_empty_tiles)) + var/turf/T = pick(nearby_empty_tiles) + I.pixel_x = 0 + I.pixel_y = 0 + I.forceMove(T) + if(!(SEND_SIGNAL(structure_parent, COMSIG_SHELF_ATTEMPT_PICKUP, I) & SHELF_PICKUP_FAILURE)) + itemcount++ + +/datum/component/shelver/proc/on_shelf_attempt_pickup(datum/source, obj/item/to_add) + SIGNAL_HANDLER // COMSIG_SHELF_ATTEMPT_PICKUP + + if(!istype(to_add)) + return SHELF_PICKUP_FAILURE + + var/free_slot = get_free_slot() + if(!free_slot) + return SHELF_PICKUP_FAILURE + + var/coords = placement_zones[free_slot] + var/position_details = placement_zones[coords] + add_item(to_add, free_slot, position_details) + +/datum/component/shelver/proc/get_free_slot() + var/list/free_slots = list() + for(var/i in 1 to length(used_places)) + if(!used_places[i]) + free_slots += i + + if(!length(free_slots)) + return + + if(random_pickup_locations) + return pick(free_slots) + + return free_slots[1] + +/datum/component/shelver/proc/on_shelf_item_removed(datum/source, uid) + SIGNAL_HANDLER // COMSIG_SHELF_ITEM_REMOVED + + for(var/i in 1 to length(used_places)) + if(used_places[i] == uid) + used_places[i] = null + + var/obj/O = parent + if(istype(O)) + O.update_appearance(UPDATE_ICON) + +/datum/component/shelver/proc/on_attackby(datum/source, obj/item/attacker, mob/user, params) + SIGNAL_HANDLER // COMSIG_PARENT_ATTACKBY + + if(isrobot(user)) + return COMPONENT_NO_AFTERATTACK + if(attacker.flags & ABSTRACT) + return COMPONENT_NO_AFTERATTACK + if(user.a_intent == INTENT_HARM) + return + + if(length(allowed_types) && !(attacker.type in allowed_types)) + to_chat(user, "[attacker] won't fit on [parent]!") + return COMPONENT_NO_AFTERATTACK + + var/list/PL = params2list(params) + var/icon_x = text2num(PL["icon-x"]) + var/icon_y = text2num(PL["icon-y"]) + + var/i = 0 + for(var/coords in placement_zones) + i++ + if(icon_x >= coords[1] && icon_x <= coords[3] && icon_y >= coords[2] && icon_y <= coords[4]) + if(used_places[i]) + to_chat(user, "There's already something there on [parent].") + return COMPONENT_NO_AFTERATTACK + + var/position_details = placement_zones[coords] + if(user.drop_item()) + add_item(attacker, i, position_details) + user.visible_message( + "[user] places [attacker] on [parent].", + "You place [attacker] on [parent].", + ) + return COMPONENT_NO_AFTERATTACK + +/** + * Add an item to the shelf. + * + * Arguments: + * * to_add - The item to add. Adding will fail if not an `/obj/item`. + * * placement_idx - The slot on the shelf to add the item to. + * * position_details - A list containing the "x" and "y" pixel offsets of the position, and the "layer" the object will be set to, if applicable. + */ +/datum/component/shelver/proc/add_item(obj/item/to_add, placement_idx, list/position_details) + if(!istype(to_add)) + return + to_add.forceMove(get_turf(parent)) + to_add.AddComponent(/datum/component/shelved, parent) + to_add.pixel_x = position_details["x"] + to_add.pixel_y = position_details["y"] + to_add.appearance_flags |= PIXEL_SCALE + if("layer" in position_details) + to_add.layer = position_details["layer"] + used_places[placement_idx] = to_add.UID() + var/obj/O = parent + if(istype(O)) + O.update_appearance(UPDATE_ICON) + + if(default_scale) + to_add.transform *= default_scale + if(default_rotation) + to_add.transform = turn(to_add.transform, default_rotation) + + SEND_SIGNAL(to_add, COMSIG_SHELF_ITEM_ADDED, default_scale) + +/datum/component/shelver/basic_shelf + placement_zones = list( + // Bottom Shelf + list(1, 1, 10, 16) = list("x" = -9, "y" = -5, "layer" = BELOW_OBJ_LAYER), + list(11, 1, 20, 16) = list("x" = 0, "y" = -5, "layer" = BELOW_OBJ_LAYER), + list(21, 1, 32, 16) = list("x" = 9, "y" = -5, "layer" = BELOW_OBJ_LAYER), + + // Top Shelf + list(1, 17, 10, 32) = list("x" = -9, "y" = 9), + list(11, 17, 20, 32) = list("x" = 0, "y" = 9), + list(21, 17, 32, 32) = list("x" = 9, "y" = 9), + ) + +/datum/component/shelver/gun_rack + placement_zones = list( + // SS220 EDIT START more guns on rack + list(1, 1, 7, 32) = list("x" = -12, "y" = -1), + list(8, 1, 13, 32) = list("x" = -6, "y" = -1), + list(14, 1, 19, 32) = list("x" = 0, "y" = -1), + list(20, 1, 25, 32) = list("x" = 6, "y" = -1), + list(26, 1, 32, 32) = list("x" = 12, "y" = -1), + // SS220 EDIT END + ) + default_scale = 0.80 + default_rotation = -90 + +/// A component for items stored on shelves, propagated by [/datum/component/shelver] components. +/datum/component/shelved + /// The UID of the object acting as the shelf + var/shelf_uid + /// A copy of the shelved object's original transform, to restore after removing from the shelf. + var/matrix/original_transform + /// A copy of the shelved object's original layer, to restore after removing from the shelf. + var/original_layer + /// A copy of the shelved object's original appearance flags, to restore after removing from the shelf. + var/original_appearance_flags + +/datum/component/shelved/Initialize(atom/shelf) + if(!isobj(parent)) + return COMPONENT_INCOMPATIBLE + var/obj/O = parent + + shelf_uid = shelf.UID() + original_transform = O.transform + original_layer = O.layer + original_appearance_flags = O.appearance_flags + +/datum/component/shelved/RegisterWithParent() + . = ..() + RegisterSignal(parent, COMSIG_ITEM_PICKUP, PROC_REF(on_item_pickup)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_movable_moved)) + var/obj/shelf = locateUID(shelf_uid) + if(shelf) + RegisterSignal(shelf, COMSIG_MOVABLE_SHOVE_IMPACT, PROC_REF(on_movable_shove_impact)) + RegisterSignal(shelf, COMSIG_ATOM_HITBY, PROC_REF(on_atom_hitby)) + RegisterSignal(shelf, COMSIG_OBJ_DECONSTRUCT, PROC_REF(on_shelf_deconstruct)) + +/datum/component/shelved/proc/on_shelf_deconstruct() + SIGNAL_HANDLER // COMSIG_OBJ_DECONSTRUCT + qdel(src) + +/datum/component/shelved/proc/on_item_pickup(obj/item/I, mob/user) + SIGNAL_HANDLER // COMSIG_ITEM_PICKUP + qdel(src) + +/// Generic handler for if anything moves us off our original shelf position, such as atmos pressure. +/datum/component/shelved/proc/on_movable_moved() + SIGNAL_HANDLER // COMSIG_MOVABLE_MOVED + qdel(src) + +/datum/component/shelved/UnregisterFromParent() + . = ..() + var/obj/O = parent + O.transform = original_transform + O.layer = original_layer + O.appearance_flags = original_appearance_flags + O.pixel_x = 0 + O.pixel_y = 0 + + var/obj/shelf = locateUID(shelf_uid) + if(istype(shelf)) + UnregisterSignal(shelf, COMSIG_MOVABLE_SHOVE_IMPACT) + UnregisterSignal(shelf, COMSIG_ATOM_HITBY) + + SEND_SIGNAL(shelf, COMSIG_SHELF_ITEM_REMOVED, parent.UID()) + +/datum/component/shelved/proc/scatter() + var/list/clear_turfs = list() + var/obj/O = parent + for(var/turf/T in orange(1, get_turf(O))) + if(isfloorturf(T) && T != get_turf(O)) + clear_turfs |= T + + if(length(clear_turfs)) + var/obj/shelf = locateUID(shelf_uid) + if(!isobj(shelf)) + // not sure what else we can do here to clean up after ourselves + CRASH("received non-obj shelf with UID [shelf_uid]") + + var/shelf_name = shelf ? "flies off [shelf]" : "falls down" + O.visible_message("[O] [shelf_name]!") + O.throw_at(pick(clear_turfs), 2, 3) + qdel(src) + +/datum/component/shelved/proc/on_movable_shove_impact(datum/source, atom/movable/target) + SIGNAL_HANDLER // COMSIG_MOVABLE_SHOVE_IMPACT + if(prob(50)) + scatter() + +/datum/component/shelved/proc/on_atom_hitby(datum/source, mob/living/carbon/human/hitby) + SIGNAL_HANDLER // COMSIG_ATOM_HITBY + if(!istype(hitby)) + return + if(prob(50)) + scatter() + +#undef MAX_SHELF_ITEMS diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index 4488c8dcb838..bc7b0e05f8a1 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -51,7 +51,7 @@ Additionally calls the parent's `after_slip()` proc on the `victim`. */ /datum/component/slippery/proc/Slip(datum/source, mob/living/carbon/human/victim) - if(istype(victim) && !victim.flying) + if(istype(victim) && !HAS_TRAIT(victim, TRAIT_FLYING)) var/atom/movable/owner = parent if(!isturf(owner.loc)) return diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index 908ab5130f9e..47a94d7e69d2 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -78,7 +78,7 @@ return if(ismob(crossing)) var/mob/M = crossing - if(M.flying) + if(HAS_TRAIT(M, TRAIT_FLYING)) return if(isliving(crossing)) var/mob/living/L = M @@ -94,7 +94,7 @@ return if(ismob(source)) var/mob/M = source - if(M.flying) + if(HAS_TRAIT(M, TRAIT_FLYING)) return if(isliving(source)) var/mob/living/L = M diff --git a/code/datums/components/surgery_initiator.dm b/code/datums/components/surgery_initiator.dm index 54fd99d2cf84..9f476ba089da 100644 --- a/code/datums/components/surgery_initiator.dm +++ b/code/datums/components/surgery_initiator.dm @@ -67,8 +67,8 @@ SIGNAL_HANDLER // COMSIG_ATOM_UPDATE_SHARPNESS var/obj/item/P = parent if(!P.sharp) + UnlinkComponent() RemoveComponent() - qdel(src) /// Does the surgery initiation. /datum/component/surgery_initiator/proc/initiate_surgery_moment(datum/source, atom/target, mob/user) diff --git a/code/datums/components/zombie_regen.dm b/code/datums/components/zombie_regen.dm index 561446571e3a..546b98838fca 100644 --- a/code/datums/components/zombie_regen.dm +++ b/code/datums/components/zombie_regen.dm @@ -82,7 +82,7 @@ zomboid.suiciding = 0 zomboid.set_nutrition(max(zomboid.nutrition, NUTRITION_LEVEL_HUNGRY)) if(zomboid.buckled) //Unbuckle the mob and clear the alerts. - zomboid.buckled.unbuckle_mob(src, force = TRUE) + zomboid.unbuckle(force = TRUE) var/datum/organ/heart/heart = zomboid.get_int_organ_datum(ORGAN_DATUM_HEART) var/heart_type = zomboid.dna?.species?.has_organ["heart"] diff --git a/code/datums/diseases/zombie_virus.dm b/code/datums/diseases/zombie_virus.dm index 1bd7beb6681f..37b96d68420f 100644 --- a/code/datums/diseases/zombie_virus.dm +++ b/code/datums/diseases/zombie_virus.dm @@ -148,7 +148,7 @@ /datum/disease/zombie/cure() affected_mob.mind?.remove_antag_datum(/datum/antagonist/zombie) REMOVE_TRAIT(affected_mob, TRAIT_I_WANT_BRAINS, ZOMBIE_TRAIT) - qdel(affected_mob.GetComponent(/datum/component/zombie_regen)) + affected_mob.DeleteComponent(/datum/component/zombie_regen) affected_mob.med_hud_set_health() affected_mob.med_hud_set_status() return ..() diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index dfb66d084f63..8f4aac056d20 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -140,7 +140,7 @@ destturf = safepick(posturfs) else destturf = get_turf(destination) - + // Make sure the target tile does not contain a teleporter on it for(var/teleporter_type in blacklisted) var/teleporters = destturf.search_contents_for(teleporter_type) @@ -167,7 +167,7 @@ if(isliving(teleatom)) var/mob/living/target_mob = teleatom if(target_mob.buckled) - target_mob.buckled.unbuckle_mob(target_mob, force = TRUE) + target_mob.unbuckle(force = TRUE) if(target_mob.has_buckled_mobs()) target_mob.unbuckle_all_mobs(force = TRUE) if(ismachinery(target_mob.loc) || istype(target_mob.loc, /obj/item/mecha_parts/mecha_equipment/medical/sleeper)) diff --git a/code/datums/mixed.dm b/code/datums/mixed.dm index a5ff38a26b06..a3b3d8286e88 100644 --- a/code/datums/mixed.dm +++ b/code/datums/mixed.dm @@ -19,7 +19,7 @@ /datum/data/record name = "record" size = 5.0 - var/list/fields = list( ) + var/list/fields = list() /datum/data/record/Destroy() if(src in GLOB.data_core.medical) diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 3017ebb44ec0..5b8d927ceb6f 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -565,9 +565,9 @@ if(istype(I)) apply_to_card(I, H, list(ACCESS_MAINT_TUNNELS), "Bard") - var/obj/item/clothing/ears/headphones/P = r_ear + var/obj/item/clothing/ears/headphones/P = H.r_ear if(istype(P)) - P.attack_self(H) // activate them, display musical notes effect + P.toggle_visual_notes(H) // activate them, display musical notes effect // Soviet Military @@ -1576,7 +1576,8 @@ if(istype(I)) apply_to_card(I, H, list(ACCESS_MAINT_TUNNELS), "Solar Federation Infilitrator", "lifetimeid") - qdel(H.GetComponent(/datum/component/footstep)) // they're literally stealth + H.DeleteComponent(/datum/component/footstep) + var/datum/martial_art/cqc/CQC = new() CQC.teach(H) diff --git a/code/datums/ruins/space_ruins.dm b/code/datums/ruins/space_ruins.dm index 03e494504d89..12cd3bc7ce25 100644 --- a/code/datums/ruins/space_ruins.dm +++ b/code/datums/ruins/space_ruins.dm @@ -212,8 +212,8 @@ /datum/map_template/ruin/space/dj id = "dj" suffix = "dj.dmm" - name = "Russian DJ Station" - description = "An old russian listening station, long since defunct and lifeless, however the equipment is likely still in working condition." + name = "Soviet DJ Station" + description = "An old soviet era listening station, long since defunct and lifeless, however the equipment is likely still in working condition." cost = 2 /datum/map_template/ruin/space/druglab @@ -249,7 +249,7 @@ id = "ussp" suffix = "ussp.dmm" name = "USSP" - description = "A decript station of seemingly russian origin. The last contact had with this station was a distress signal, and the rest was dark." + description = "A decript station of seemingly Soviet origin. The last contact had with this station was a distress signal, and the rest was dark." allow_duplicates = FALSE // One of these has enough loot cost = 5 // This ruin is 100x100 tiles, so we dont want it to be treated like a 10x10 meteor diff --git a/code/datums/spawners_menu.dm b/code/datums/spawners_menu.dm index 83c2b9ef7b2c..41a05be09520 100644 --- a/code/datums/spawners_menu.dm +++ b/code/datums/spawners_menu.dm @@ -57,5 +57,6 @@ owner.forceMove(get_turf(MS)) . = TRUE if("spawn") - MS.attack_ghost(owner) + if(MS.attack_ghost(owner)) + SSblackbox.record_feedback("tally", "ghost_spawns", 1, "[MS.assignedrole]") . = TRUE diff --git a/code/datums/spells/area_teleport.dm b/code/datums/spells/area_teleport.dm index 3cd160c1cc74..02a6ab326eff 100644 --- a/code/datums/spells/area_teleport.dm +++ b/code/datums/spells/area_teleport.dm @@ -54,7 +54,7 @@ return if(target && target.buckled) - target.buckled.unbuckle_mob(target, force = TRUE) + target.unbuckle(force = TRUE) if(target && target.has_buckled_mobs()) target.unbuckle_all_mobs(force = TRUE) diff --git a/code/datums/spells/mind_transfer.dm b/code/datums/spells/mind_transfer.dm index 613a2e3238b9..441ea87cbe80 100644 --- a/code/datums/spells/mind_transfer.dm +++ b/code/datums/spells/mind_transfer.dm @@ -41,7 +41,7 @@ Also, you never added distance checking after target is selected. I've went ahea to_chat(user, "You're killing yourself! You can't concentrate enough to do this!") return - if(target.mind.special_role in protected_roles && target != user) + if((target.mind.special_role in protected_roles) && target != user) to_chat(user, "Their mind is resisting your spell.") return diff --git a/code/datums/station_traits/admin_panel.dm b/code/datums/station_traits/admin_panel.dm index 9e088d8ea610..6c11de92f122 100644 --- a/code/datums/station_traits/admin_panel.dm +++ b/code/datums/station_traits/admin_panel.dm @@ -101,7 +101,7 @@ future_traits = new_future_traits fdel("data/next_traits.txt") //Delete it. var/F = file("data/next_traits.txt") - F << params["station_traits"] + F << json_encode(params["station_traits"]) return TRUE if("clear_future_traits") diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm index 370ef497779c..26862ba60c1d 100644 --- a/code/datums/station_traits/neutral_traits.dm +++ b/code/datums/station_traits/neutral_traits.dm @@ -18,7 +18,8 @@ weight = 15 show_in_report = TRUE report_message = "For experimental purposes, this station AI might show divergence from default lawset. Do not meddle with this experiment, we've removed \ - access to your set of alternative upload modules because we know you're already thinking about meddling with this experiment." + access to your set of alternative upload modules because we know you're already thinking about meddling with this experiment. If the lawset proves \ + dangerous, or impedes station efficiency, fax or message Central Command to request permission to alter it." trait_to_give = STATION_TRAIT_UNIQUE_AI blacklist = list(/datum/station_trait/random_event_weight_modifier/ion_storms) @@ -80,3 +81,22 @@ /datum/station_trait/triple_ai/revert() . = ..() SSticker.triai = FALSE + +/datum/station_trait/rave + name = "Rave" + trait_type = STATION_TRAIT_NEUTRAL + weight = 5 + show_in_report = TRUE + report_message = "Our workers have installed new 'Motivational' lighting for you." + +/datum/station_trait/rave/on_round_start() + . = ..() + for(var/obj/machinery/light/light in GLOB.machines) + var/turf/our_turf = get_turf(light) + if(!is_station_level(our_turf.z)) + continue + var/list/rgb = hsl2rgb(rand(0, 255) / 255, rand((0.4 * 255), 255) / 255, rand((0.5 * 255), (0.8 * 255)) / 255) + var/new_color = "#[num2hex(rgb[1], 2)][num2hex(rgb[2], 2)][num2hex(rgb[3], 2)]" + light.color = new_color + light.brightness_color = new_color + light.update(FALSE, TRUE, FALSE) diff --git a/code/datums/status_effects/blob_burst.dm b/code/datums/status_effects/blob_burst.dm index d1381612a2c4..5e5485b75806 100644 --- a/code/datums/status_effects/blob_burst.dm +++ b/code/datums/status_effects/blob_burst.dm @@ -1,4 +1,5 @@ /datum/status_effect/blob_burst + id = "blob_burst" alert_type = /atom/movable/screen/alert/status_effect/blob_burst var/datum/callback/blob_burst_callback diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 1d0e1d9d258f..7676605499ac 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -275,6 +275,7 @@ owner.adjustFireLoss(-5) /datum/status_effect/blood_rush + id = "blood_rush" alert_type = null duration = 10 SECONDS @@ -488,6 +489,7 @@ REMOVE_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, id) /datum/status_effect/fleshmend + id = "fleshmend" duration = -1 status_type = STATUS_EFFECT_REFRESH tick_interval = 1 SECONDS @@ -536,6 +538,7 @@ qdel(src) /datum/status_effect/speedlegs + id = "speedlegs" duration = -1 status_type = STATUS_EFFECT_UNIQUE tick_interval = 4 SECONDS @@ -550,7 +553,7 @@ return TRUE /datum/status_effect/speedlegs/tick() - if(owner.stat || owner.staminaloss >= 90 || cling.chem_charges <= (stacks + 1) * 3) + if(owner.stat || owner.getStaminaLoss() >= 90 || cling.chem_charges <= (stacks + 1) * 3) to_chat(owner, "Our muscles relax without the energy to strengthen them.") owner.Weaken(6 SECONDS) qdel(src) @@ -561,7 +564,7 @@ to_chat(owner, "Our legs are really starting to hurt...") /datum/status_effect/speedlegs/before_remove() - if(stacks < 3 && !(owner.stat || owner.staminaloss >= 90 || cling.chem_charges <= (stacks + 1) * 3)) //We don't want people to turn it on and off fast, however, we need it forced off if the 3 later conditions are met. + if(stacks < 3 && !(owner.stat || owner.getStaminaLoss() >= 90 || cling.chem_charges <= (stacks + 1) * 3)) //We don't want people to turn it on and off fast, however, we need it forced off if the 3 later conditions are met. to_chat(owner, "Our muscles just tensed up, they will not relax so fast.") return FALSE return TRUE @@ -577,6 +580,7 @@ cling = null /datum/status_effect/panacea + id = "panacea" duration = 20 SECONDS tick_interval = 2 SECONDS status_type = STATUS_EFFECT_REFRESH @@ -702,6 +706,7 @@ to_chat(owner, "[pick(un_hopeful_messages)]") /datum/status_effect/drill_payback + id = "drill_payback" duration = -1 status_type = STATUS_EFFECT_UNIQUE alert_type = null @@ -722,16 +727,17 @@ owner.clear_fullscreen("payback") owner.overlay_fullscreen("payback", /atom/movable/screen/fullscreen/stretch/payback, 1) -/datum/status_effect/drill_payback/tick() //They are not staying down. This will be a fight. - if(!drilled_successfully && (get_dist(owner, drilled) >= 9)) //We don't want someone drilling the safe at arivals then raiding bridge with the buff +/datum/status_effect/drill_payback/tick() // They are not staying down. This will be a fight. + if(!drilled_successfully && (get_dist(owner, drilled) >= 9)) // We don't want someone drilling the safe at arrivals then raiding bridge with the buff to_chat(owner, "Get back to the safe, they are going to get the drill!") times_warned++ if(times_warned >= 6) owner.remove_status_effect(STATUS_EFFECT_DRILL_PAYBACK) return if(owner.stat != DEAD) - owner.adjustBruteLoss(-3) - owner.adjustFireLoss(-3) + var/mob/living/carbon/human/H = owner // The Brute and Burn heal doesn't work if it doesn't do it at the human level + H.adjustBruteLoss(-3, FALSE, robotic = TRUE) + H.adjustFireLoss(-3, FALSE, robotic = TRUE) owner.adjustStaminaLoss(-25) /datum/status_effect/drill_payback/on_remove() @@ -797,6 +803,7 @@ vamp = null /datum/status_effect/rev_protection + id = "rev_protection" // revs are paralyzed for 10 seconds when they're deconverted, same duration duration = 10 SECONDS alert_type = null @@ -823,6 +830,7 @@ . = ..() /datum/status_effect/bookwyrm + id = "bookwyrm" duration = BRAIN_DAMAGE_MOB_TIME alert_type = null diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index cfaa60634104..6bcdddea7fe7 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -523,6 +523,7 @@ id = "cult_slurring" /datum/status_effect/incapacitating + id = "incapacitating" tick_interval = 0 status_type = STATUS_EFFECT_REPLACE alert_type = null diff --git a/code/datums/status_effects/magic_disguise.dm b/code/datums/status_effects/magic_disguise.dm index f7bc83343b97..31f2b2ef0b28 100644 --- a/code/datums/status_effects/magic_disguise.dm +++ b/code/datums/status_effects/magic_disguise.dm @@ -44,7 +44,7 @@ caster_area = get_area(owner) for(var/obj/machinery/door/airlock/tmp in view(owner)) - if(get_area(tmp) == caster_area && !(tmp.req_access_txt == "0" && tmp.req_one_access_txt == "0")) //Ignore airlocks that arent in area or are public airlocks + if(get_area(tmp) == caster_area && (length(tmp.req_access) || length(tmp.req_one_access))) //Ignore airlocks that arent in area or are public airlocks AL = tmp break for(var/mob/living/carbon/human/disguise_source in shuffle(GLOB.player_list)) //Pick a random crewmember with access to this room diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index d4e6b0852760..32fb5edf89af 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -249,6 +249,7 @@ /// A status effect that can have a certain amount of "bonus" duration added, which extends the duration every tick, /// although there is a maximum amount of bonus time that can be active at any given time. /datum/status_effect/limited_bonus + id = "limited_bonus" /// How much extra time has been added var/bonus_time = 0 /// How much extra time to apply per tick @@ -366,6 +367,7 @@ expire_proc.Invoke() /datum/status_effect/action_status_effect + id = "action_status_effect" alert_type = null tick_interval = -1 diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm index 92d462379644..086a4e218787 100644 --- a/code/datums/status_effects/status_effect.dm +++ b/code/datums/status_effects/status_effect.dm @@ -3,7 +3,8 @@ //When making a new status effect, add a define to status_effects.dm in __DEFINES for ease of use! /datum/status_effect - var/id = "effect" //Used for screen alerts. + /// A unique ID that is used to see if there is already a status effect of the same type on something. Also used for screen alerts + var/id var/duration = -1 //How long the status effect lasts in DECISECONDS. Enter -1 for an effect that never ends unless removed through some means. var/tick_interval = 10 //How many deciseconds between ticks, approximately. Leave at 10 for every second. Setting this to -1 will stop processing if duration is also unlimited. var/mob/living/owner //The mob affected by the status effect. @@ -14,6 +15,11 @@ var/atom/movable/screen/alert/status_effect/linked_alert = null //the alert itself, if it exists /datum/status_effect/New(list/arguments) + if(!id) + stack_trace("[src] was created but did not have an unique ID. Deleting.") + qdel(src) + return + on_creation(arglist(arguments)) /datum/status_effect/proc/on_creation(mob/living/new_owner, ...) @@ -256,6 +262,7 @@ /// Status effect from multiple sources, when all sources are removed, so is the effect /datum/status_effect/grouped + id = "grouped" status_type = STATUS_EFFECT_MULTIPLE //! Adds itself to sources and destroys itself if one exists already, there are never multiple var/list/sources = list() @@ -280,6 +287,7 @@ * This allows for a more precise tweaking of status durations at runtime (e.g. paralysis). */ /datum/status_effect/transient + id = "transient" tick_interval = 0.2 SECONDS // SSfastprocess interval alert_type = null /// How much strength left before expiring? time in deciseconds. diff --git a/code/datums/uplink_items/uplink_general.dm b/code/datums/uplink_items/uplink_general.dm index 508a8290279b..71959a987b71 100644 --- a/code/datums/uplink_items/uplink_general.dm +++ b/code/datums/uplink_items/uplink_general.dm @@ -133,7 +133,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) return // If the uplink's holder is in the user's contents - if((U.loc in user.contents || (in_range(U.loc, user) && isturf(U.loc.loc)))) + if(((U.loc in user.contents) || (in_range(U.loc, user) && isturf(U.loc.loc)))) if(cost > U.uses) return @@ -243,6 +243,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/butcher_chainsaw cost = 65 surplus = 0 // This has caused major problems with un-needed chainsaw massacres. Bwoink bait. + excludefrom = list(UPLINK_TYPE_NUCLEAR) /datum/uplink_item/dangerous/universal_gun_kit name = "Universal Self Assembling Gun Kit" diff --git a/code/datums/uplink_items/uplink_traitor.dm b/code/datums/uplink_items/uplink_traitor.dm index 006039d2b943..ce46ae3db35b 100644 --- a/code/datums/uplink_items/uplink_traitor.dm +++ b/code/datums/uplink_items/uplink_traitor.dm @@ -337,7 +337,7 @@ //skrell /datum/uplink_item/species_restricted/lovepen name = "Aggression Suppression Pen" - desc = "A syringe disguised as a functional pen which is filled with a potent aggression supressing chemical. The pen holds four doses of the mixture and it cannot be refilled." + desc = "A hypospray disguised as a functional pen which is filled with a potent aggression suppressing chemical. The pen holds four doses of the mixture which slowly regenerates over time, but cannot be refilled." reference = "LP" item = /obj/item/pen/sleepy/love cost = 20 diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm index 0233e0aee71c..6cb2202593f9 100644 --- a/code/datums/weather/weather_types/floor_is_lava.dm +++ b/code/datums/weather/weather_types/floor_is_lava.dm @@ -35,7 +35,7 @@ return if(!L.client) //Only sentient people are going along with it! return - if(L.flying) + if(HAS_TRAIT(L, TRAIT_FLYING)) return L.adjustFireLoss(3) diff --git a/code/defines/procs/announcer_datum.dm b/code/defines/procs/announcer_datum.dm index c0dad40bc433..39c97ec8990d 100644 --- a/code/defines/procs/announcer_datum.dm +++ b/code/defines/procs/announcer_datum.dm @@ -137,10 +137,6 @@ GLOBAL_DATUM_INIT(major_announcement, /datum/announcer, new(config_type = /datum log_game("[key_name(usr)] has made \a [config.log_name]: [message_title] - [message] - [author]") message_admins("[key_name_admin(usr)] has made \a [config.log_name].", 1) -/proc/GetNameAndAssignmentFromId(obj/item/card/id/I) - // Format currently matches that of newscaster feeds: Registered Name (Assigned Rank) - return I.assignment ? "[I.registered_name] ([I.assignment])" : I.registered_name - /datum/announcement_configuration/event default_title = ANNOUNCE_KIND_EVENT sound = sound('sound/misc/notice2.ogg') diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index c42ad8871411..37f2b52023c9 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -98,7 +98,12 @@ var/request_console_name /// Whether request consoles in this area can send announcements. var/request_console_announces = FALSE - + /// Fire alarm camera network + var/fire_cam_network = "Fire Alarms Debug" + /// Power alarm camera network + var/power_cam_network = "Power Alarms Debug" + /// Atmosphere alarm camera network + var/atmos_cam_network = "Atmosphere Alarms Debug" /* Lighting Vars */ @@ -235,11 +240,11 @@ return for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C) && is_station_level(C.z)) + if(!QDELETED(C)) if(state) - C.network -= "Power Alarms" + C.network -= power_cam_network else - C.network |= "Power Alarms" + C.network |= power_cam_network if(state) GLOB.alarm_manager.cancel_alarm("Power", src, source) @@ -257,8 +262,8 @@ for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C) && is_station_level(C.z)) - C.network |= "Atmosphere Alarms" + if(!QDELETED(C)) + C.network |= atmos_cam_network GLOB.alarm_manager.trigger_alarm("Atmosphere", src, cameras, source) @@ -266,8 +271,8 @@ else if(atmosalm == ATMOS_ALARM_DANGER) for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C) && is_station_level(C.z)) - C.network -= "Atmosphere Alarms" + if(!QDELETED(C)) + C.network -= atmos_cam_network GLOB.alarm_manager.cancel_alarm("Atmosphere", src, source) @@ -329,8 +334,8 @@ for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C) && is_station_level(C.z)) - C.network |= "Fire Alarms" + if(!QDELETED(C)) + C.network |= fire_cam_network GLOB.alarm_manager.trigger_alarm("Fire", src, cameras, source) @@ -355,8 +360,8 @@ for(var/thing in cameras) var/obj/machinery/camera/C = locateUID(thing) - if(!QDELETED(C) && is_station_level(C.z)) - C.network -= "Fire Alarms" + if(!QDELETED(C)) + C.network -= fire_cam_network GLOB.alarm_manager.cancel_alarm("Fire", src, source) @@ -546,3 +551,18 @@ /area/drop_location() CRASH("Bad op: area/drop_location() called") + +/// Returns highest area type in the hirarchy of a given ruin or /area/station if it is given a station area. +/// For an example the top parent of area/ruin/space/bar/backroom is area/ruin/space/bar +/area/proc/get_top_parent_type() + var/top_parent_type = type + + if(parent_type in subtypesof(/area/ruin)) + // figure out which ruin we are on + while(!(type2parent(top_parent_type) in GLOB.ruin_prototypes)) + top_parent_type = type2parent(top_parent_type) + else if(parent_type in subtypesof(/area/station)) + top_parent_type = /area/station + else + top_parent_type = null + return top_parent_type diff --git a/code/game/area/areas/depot-areas.dm b/code/game/area/areas/depot-areas.dm index 7c25b50b6239..dabbf83d9474 100644 --- a/code/game/area/areas/depot-areas.dm +++ b/code/game/area/areas/depot-areas.dm @@ -183,7 +183,7 @@ for(var/mob/living/simple_animal/hostile/syndicate/N in src) N.a_intent = INTENT_HARM for(var/obj/machinery/door/airlock/A in src) - A.req_access_txt = "[ACCESS_SYNDICATE_LEADER]" + A.req_access = list(ACCESS_SYNDICATE_LEADER) for(var/obj/structure/closet/secure_closet/syndicate/depot/L in src) if(L.locked) L.locked = !L.locked diff --git a/code/game/area/areas/mining_areas.dm b/code/game/area/areas/mining_areas.dm index ffe68fa46fd0..c67f97320d98 100644 --- a/code/game/area/areas/mining_areas.dm +++ b/code/game/area/areas/mining_areas.dm @@ -160,6 +160,9 @@ name = "Lavaland Wastes" outdoors = TRUE +/area/lavaland/surface/outdoors/legion_arena + name = "Legion Arena" + /// monsters and ruins spawn here /area/lavaland/surface/outdoors/unexplored icon_state = "unexplored" diff --git a/code/game/area/misc_areas.dm b/code/game/area/misc_areas.dm index b7239cda7ec6..21e334a94d21 100644 --- a/code/game/area/misc_areas.dm +++ b/code/game/area/misc_areas.dm @@ -28,6 +28,10 @@ /area/space/nearstation/centcom icon_state = "space_near_cc" +/area/space/nearstation/no_teleport + icon_state = "space_near_notp" + tele_proof = TRUE + /area/space/atmosalert() return @@ -40,6 +44,10 @@ /area/space/centcomm icon_state = "space_cc" +/area/space/no_teleport + icon_state = "space_notp" + tele_proof = TRUE + //SYNDICATES /area/syndicate_mothership diff --git a/code/game/area/ss13_areas/station_area.dm b/code/game/area/ss13_areas/station_area.dm new file mode 100644 index 000000000000..6e88b147b82b --- /dev/null +++ b/code/game/area/ss13_areas/station_area.dm @@ -0,0 +1,4 @@ +/area/station + fire_cam_network = "Fire Alarms" + atmos_cam_network = "Atmosphere Alarms" + power_cam_network = "Power Alarms" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 401a22ead042..90527c55547d 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -488,11 +488,13 @@ /// Updates the name of the atom /atom/proc/update_name(updates=ALL) SHOULD_CALL_PARENT(TRUE) + PROTECTED_PROC(TRUE) return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_NAME, updates) /// Updates the description of the atom /atom/proc/update_desc(updates=ALL) SHOULD_CALL_PARENT(TRUE) + PROTECTED_PROC(TRUE) return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_DESC, updates) /// Updates the icon of the atom @@ -525,10 +527,12 @@ /// Updates the icon state of the atom /atom/proc/update_icon_state() + PROTECTED_PROC(TRUE) return /// Updates the overlays of the atom. It has to return a list of overlays if it can't call the parent to create one. The list can contain anything that would be valid for the add_overlay proc: Images, mutable appearances, icon states... /atom/proc/update_overlays() + PROTECTED_PROC(TRUE) return list() /atom/proc/relaymove() @@ -1002,7 +1006,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) if(!QDELETED(healthy_green_glow)) healthy_green_glow.strength = max(0, (healthy_green_glow.strength - (RAD_BACKGROUND_RADIATION * clean_factor))) if(healthy_green_glow.strength <= RAD_BACKGROUND_RADIATION) - qdel(healthy_green_glow) + healthy_green_glow.RemoveComponent() /obj/effect/decal/cleanable/blood/clean_blood(radiation_clean = FALSE) return // While this seems nonsensical, clean_blood isn't supposed to be used like this on a blood decal. diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 3f6c50803ec7..ba00d8766223 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -661,6 +661,7 @@ /// called when a mob gets shoved into an items turf. false means the mob will be shoved backwards normally, true means the mob will not be moved by the disarm proc. /atom/movable/proc/shove_impact(mob/living/target, mob/living/attacker) + SEND_SIGNAL(src, COMSIG_MOVABLE_SHOVE_IMPACT, target, attacker) return FALSE /** @@ -676,9 +677,7 @@ /// Easy way to remove the component when the fun has been played out /atom/movable/proc/stop_deadchat_plays() - var/datum/component/deadchat_control/comp = GetComponent(/datum/component/deadchat_control) - if(!QDELETED(comp)) - qdel(comp) + DeleteComponent(/datum/component/deadchat_control) /atom/movable/vv_get_dropdown() . = ..() diff --git a/code/game/dna/mutations/mutation_powers.dm b/code/game/dna/mutations/mutation_powers.dm index e24f4b8819a9..75efba0c78a9 100644 --- a/code/game/dna/mutations/mutation_powers.dm +++ b/code/game/dna/mutations/mutation_powers.dm @@ -209,19 +209,29 @@ ..() block = GLOB.shadowblock +/datum/mutation/stealth/darkcloak/deactivate(mob/living/M) + ..() + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.set_alpha_tracking(ALPHA_VISIBLE, src) + if(!ishuman(M)) + return + var/mob/living/carbon/human/H = M + H.set_alpha_tracking(ALPHA_VISIBLE, src) /datum/mutation/stealth/darkcloak/on_life(mob/M) var/turf/simulated/T = get_turf(M) - if(!istype(T)) + if(!istype(T) || !ishuman(M)) return + var/mob/living/carbon/human/H = M var/light_available = T.get_lumcount() * 10 if(light_available <= 2) - if(M.invisibility != INVISIBILITY_LEVEL_TWO) - M.alpha = round(M.alpha * 0.8) + if(H.invisibility != INVISIBILITY_LEVEL_TWO) + H.set_alpha_tracking(H.get_alpha() * 0.8, src) else - M.reset_visibility() - M.alpha = round(255 * 0.8) - if(M.alpha == 0) - M.make_invisible() + H.reset_visibility() + H.set_alpha_tracking(ALPHA_VISIBLE * 0.8, src) + if(H.get_alpha(src) == 0) + H.make_invisible() //WAS: /datum/bioEffect/chameleon /datum/mutation/stealth/chameleon @@ -234,15 +244,24 @@ ..() block = GLOB.chameleonblock -/datum/mutation/stealth/chameleon/on_life(mob/living/M) //look if a ghost gets this, its an admins problem - if((world.time - M.last_movement) >= 30 && !M.stat && (M.mobility_flags & MOBILITY_STAND) && !M.restrained()) - if(M.invisibility != INVISIBILITY_LEVEL_TWO) - M.alpha -= 25 +/datum/mutation/stealth/chameleon/deactivate(mob/living/M) + ..() + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.set_alpha_tracking(ALPHA_VISIBLE, src) + +/datum/mutation/stealth/chameleon/on_life(mob/living/M) + if(!ishuman(M)) + return + var/mob/living/carbon/human/H = M + if((world.time - H.last_movement) >= 30 && !H.stat && (H.mobility_flags & MOBILITY_STAND) && !H.restrained()) + if(H.invisibility != INVISIBILITY_LEVEL_TWO) + H.set_alpha_tracking(H.get_alpha() - 25, src) else - M.reset_visibility() - M.alpha = round(255 * 0.80) - if(M.alpha == 0) - M.make_invisible() + H.reset_visibility() + H.set_alpha_tracking(ALPHA_VISIBLE * 0.8, src) + if(H.get_alpha(src) == 0) + H.make_invisible() ///////////////////////////////////////////////////////////////////////////////////////// @@ -523,10 +542,9 @@ "You hear the flexing of powerful muscles and suddenly a crash as a body hits the floor.") return FALSE var/prevLayer = user.layer - var/prevFlying = user.flying user.layer = 9 - user.flying = TRUE + ADD_TRAIT(user, TRAIT_FLYING, "leap") for(var/i in 1 to leap_distance) var/turf/hit_turf = get_step(user, user.dir) var/atom/hit_atom = get_blocking_atom(hit_turf) @@ -541,7 +559,7 @@ user.pixel_y -= 8 sleep(1) - user.flying = prevFlying + REMOVE_TRAIT(user, TRAIT_FLYING, "leap") user.pixel_y = 0 // In case leap was varedited to be longer or shorter if(HAS_TRAIT(user, TRAIT_FAT) && prob(66)) diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 6e46d0a2ee25..320941a62276 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -75,6 +75,7 @@ if(thrower && !IS_CULTIST(thrower)) // A couple of objs actually proc throw_at, so we need to make sure that yes, we got tossed by a person before trying to send a message thrower.visible_message("The bola glows, and boomarangs back at [thrower]!") throw_impact(thrower) + return . = ..() /obj/item/restraints/legcuffs/bola/cult/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index bf8474adca71..7bcc1262b4bb 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -903,8 +903,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} name = "alien locker" desc = "Contains secrets of the universe." icon_state = "abductor" - icon_closed = "abductor" - icon_opened = "abductor_open" + door_anim_time = 0 material_drop = /obj/item/stack/sheet/mineral/abductor /obj/structure/door_assembly/door_assembly_abductor diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm index c22b31f3cd74..9593ccc5c406 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm @@ -53,6 +53,8 @@ /datum/surgery_step/internal/extract_organ name = "remove heart" accept_hand = 1 + preop_sound = 'sound/surgery/organ1.ogg' + success_sound = 'sound/surgery/organ2.ogg' time = 32 var/obj/item/organ/internal/IC = null @@ -86,6 +88,8 @@ /datum/surgery_step/internal/gland_insert name = "insert gland" allowed_tools = list(/obj/item/organ/internal/heart/gland = 100) + preop_sound = 'sound/surgery/organ2.ogg' + success_sound = 'sound/surgery/organ1.ogg' time = 32 /datum/surgery_step/internal/gland_insert/begin_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index f350a6205911..83406308b33c 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -6,7 +6,7 @@ dead_icon = null status = ORGAN_ROBOT origin_tech = "materials=4;biotech=7;abductor=3" - organ_datums = list(/datum/organ/heart/always_beating) // alien glands are immune to stopping + organ_datums = list(/datum/organ/heart/always_beating, /datum/organ/battery) // alien glands are immune to stopping, and provide power to IPCs tough = TRUE //not easily broken by combat damage var/cooldown_low = 300 diff --git a/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm b/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm index 565a02aadfe7..f045de09513f 100644 --- a/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm +++ b/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm @@ -212,7 +212,7 @@ icon = 'icons/obj/surgery.dmi' icon_state = "demon_heart" origin_tech = "combat=5;biotech=7" - organ_datums = list(/datum/organ/heart/always_beating) + organ_datums = list(/datum/organ/heart/always_beating, /datum/organ/battery) /obj/item/organ/internal/heart/demon/update_icon_state() return //always beating visually diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm index 425e4013bb50..d0a50fc3ee14 100644 --- a/code/game/gamemodes/miniantags/guardian/guardian.dm +++ b/code/game/gamemodes/miniantags/guardian/guardian.dm @@ -16,7 +16,6 @@ a_intent = INTENT_HARM can_change_intents = FALSE stop_automated_movement = TRUE - flying = TRUE attack_sound = 'sound/weapons/punch1.ogg' minbodytemp = 0 maxbodytemp = INFINITY @@ -31,6 +30,7 @@ AIStatus = AI_OFF butcher_results = list(/obj/item/food/ectoplasm = 1) hud_type = /datum/hud/guardian + initial_traits = list(TRAIT_FLYING) var/summoned = FALSE var/cooldown = 0 var/damage_transfer = 1 //how much damage from each attack we transfer to the owner @@ -53,6 +53,7 @@ return summoner = host host.grant_guardian_actions(src) + RegisterSignal(summoner, COMSIG_LIVING_HEALTH_UPDATE, PROC_REF(update_health_hud)) /mob/living/simple_animal/hostile/guardian/can_buckle() return FALSE @@ -124,7 +125,7 @@ return ..() /mob/living/simple_animal/hostile/guardian/Move() //Returns to summoner if they move out of range - ..() + . = ..() snapback() /mob/living/simple_animal/hostile/guardian/death(gibbed) @@ -133,6 +134,7 @@ if(!.) return FALSE to_chat(summoner, "Your [name] died somehow!") + UnregisterSignal(summoner, COMSIG_LIVING_HEALTH_UPDATE) summoner.death() @@ -140,11 +142,11 @@ if(summoner) var/resulthealth if(iscarbon(summoner)) - resulthealth = round((abs(HEALTH_THRESHOLD_DEAD - summoner.health) / abs(HEALTH_THRESHOLD_DEAD - summoner.maxHealth)) * 100) + resulthealth = round(((summoner.health - HEALTH_THRESHOLD_CRIT) / abs(HEALTH_THRESHOLD_CRIT - summoner.maxHealth)) * 100) else - resulthealth = round((summoner.health / summoner.maxHealth) * 100) + resulthealth = round((summoner.health / (summoner.maxHealth / 2)) * 100) if(hud_used) - hud_used.guardianhealthdisplay.maptext = "
[resulthealth]%
" + hud_used.guardianhealthdisplay.maptext = "
[resulthealth]%
" /mob/living/simple_animal/hostile/guardian/adjustHealth(amount, updating_health = TRUE) //The spirit is invincible, but passes on damage/healing to the summoner var/damage = amount * damage_transfer diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index 0b84b06ab5d2..4a7f8b1ac5ba 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -306,10 +306,10 @@ var/list/messages = list() messages.Add("You are a morph.
") messages.Add("You hunger for living beings and desire to procreate. Achieve this goal by ambushing unsuspecting pray using your abilities.") - messages.Add("As an abomination created primarily with changeling cells you may take the form of anything nearby by using your Mimic ability.") + messages.Add("As an abomination created primarily with changeling cells you may take the form of anything nearby by using your Mimic ability.") messages.Add("The transformation will not go unnoticed for bystanding observers.") - messages.Add("While morphed, you move slower and do less damage. In addition, anyone within three tiles will note an uncanny wrongness if examining you.") - messages.Add("From this form you can however Prepare an Ambush using your ability.") + messages.Add("While morphed, you move slower and do less damage. In addition, anyone within three tiles will note an uncanny wrongness if examining you.") + messages.Add("From this form you can however Prepare an Ambush using your ability.") messages.Add("This will allow you to deal a lot of damage the first hit. And if they touch you then even more.") messages.Add("Finally, you can attack any item or dead creature to consume it - creatures will restore 1/3 of your max health and will add to your stored food while eating items will reduce your stored food.") messages.Add("For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Morph)") diff --git a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon.dm b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon.dm index e05efa0c74a5..904a3f5b6dec 100644 --- a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon.dm +++ b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon.dm @@ -36,7 +36,6 @@ maxHealth = 50 health = 50 speed = -0.5 - flying = TRUE mob_size = MOB_SIZE_TINY density = FALSE del_on_death = TRUE @@ -53,6 +52,7 @@ // this makes the demon able to speak through holopads, due to the overriden say, PD cannot speak normally regardless universal_speak = TRUE loot = list(/obj/item/organ/internal/heart/demon/pulse) + initial_traits = list(TRAIT_FLYING) /// List of sounds that is picked from when the demon speaks. var/list/speech_sounds = list("sound/voice/pdvoice1.ogg", "sound/voice/pdvoice2.ogg", "sound/voice/pdvoice3.ogg") diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index aba2c7714438..904cc49d3b05 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -31,11 +31,11 @@ status_flags = 0 wander = FALSE density = FALSE - flying = TRUE move_resist = INFINITY mob_size = MOB_SIZE_TINY pass_flags = PASSTABLE | PASSGRILLE | PASSMOB atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + initial_traits = list(TRAIT_FLYING) /// The revenant's idle icon var/icon_idle = "revenant_idle" @@ -84,11 +84,11 @@ revealed = FALSE incorporeal_move = INCORPOREAL_MOVE_HOLY_BLOCK invisibility = INVISIBILITY_REVENANT - to_chat(src, "You are once more concealed.") + to_chat(src, "You are once more concealed.") if(unstun_time && world.time >= unstun_time) unstun_time = 0 notransform = FALSE - to_chat(src, "You can move again!") + to_chat(src, "You can move again!") update_spooky_icon() /mob/living/simple_animal/revenant/ex_act(severity) diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 9f033e7a9976..b170895fd6f3 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -73,7 +73,7 @@ if(30 to 70) to_chat(src, "[target] will yield an average amount of essence.") if(70 to 90) - to_chat(src, "Such a feast! [target] will yield much essence to you.") + to_chat(src, "Such a feast! [target] will yield much essence to you.") if(90 to INFINITY) to_chat(src, "Ah, the perfect soul. [target] will yield massive amounts of essence to you.") if(do_after(src, 20, 0, target = target)) //how about now @@ -95,7 +95,7 @@ if(essence_drained > 90) essence_regen_cap += 25 perfectsouls += 1 - to_chat(src, "The perfection of [target]'s soul has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].") + to_chat(src, "The perfection of [target]'s soul has increased your maximum essence level. Your new maximum essence is [essence_regen_cap].") to_chat(src, "[target]'s soul has been considerably weakened and will yield no more essence for the time being.") target.visible_message("[target] slumps onto the ground.", \ "Violets lights, dancing in your vision, getting clo--") diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index ad06167f1164..b1397465f3ac 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -617,7 +617,7 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) explanation_text = "Free Objective." /datum/objective/steal/proc/select_target() - var/list/possible_items_all = GLOB.potential_theft_objectives + "custom" + var/list/possible_items_all = GLOB.potential_theft_objectives + "custom" + "random" var/new_target = input("Select target:", "Objective target", null) as null|anything in possible_items_all if(!new_target) return @@ -636,13 +636,19 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) target_theft_objective.name = theft_objective_name steal_target = target_theft_objective explanation_text = "Steal [theft_objective_name]." - else - steal_target = new new_target - update_explanation_text() - if(steal_target.special_equipment) - give_kit(steal_target.special_equipment) + return steal_target + else if(new_target == "random") + return TRUE + + steal_target = new new_target + update_explanation_text() + if(steal_target.special_equipment) // We have to do it with a callback because mind/Topic creates the objective without an owner + addtimer(CALLBACK(src, PROC_REF(hand_out_equipment)), 5 SECONDS, TIMER_DELETE_ME) return steal_target +/datum/objective/steal/proc/hand_out_equipment() + give_kit(steal_target?.special_equipment) + /datum/objective/steal/update_explanation_text() explanation_text = "Steal [steal_target.name]. One was last seen in [get_location()]. " if(length(steal_target.protected_jobs) && steal_target.job_possession) @@ -679,7 +685,6 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) var/mob/living/carbon/human/kit_receiver = kit_receiver_mind.current if(!kit_receiver) continue - var/where = kit_receiver.equip_in_one_of_slots(item_to_give, slots) if(!where) continue diff --git a/code/game/gamemodes/vampire/vampire_chan.dm b/code/game/gamemodes/vampire/vampire_chan.dm index f5c750d64108..adc3b78f762b 100644 --- a/code/game/gamemodes/vampire/vampire_chan.dm +++ b/code/game/gamemodes/vampire/vampire_chan.dm @@ -8,7 +8,7 @@ required_enemies = 1 recommended_enemies = 3 secondary_enemies_scaling = 0.025 - vampire_penalty = 0.6 // Cut out 40% of the vampires since we'll replace some with changelings + vampire_penalty = 0.4 // Cut out 40% of the vampires since we'll replace some with changelings /// A list of all soon-to-be changelings var/list/datum/mind/pre_changelings = list() diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 08f8b073b7a9..1546afc8c116 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -168,12 +168,12 @@ /obj/item/scrying name = "scrying orb" - desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." + desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means. Also works well as a throwing weapon." icon = 'icons/obj/wizard.dmi' icon_state ="scrying_orb" throw_speed = 7 throw_range = 15 - throwforce = 15 + throwforce = 25 damtype = BURN force = 15 hitsound = 'sound/items/welder2.ogg' @@ -183,6 +183,7 @@ /obj/item/scrying/Initialize(mapload) . = ..() START_PROCESSING(SSobj, src) + AddComponent(/datum/component/boomerang, throw_range, TRUE) /obj/item/scrying/Destroy() STOP_PROCESSING(SSobj, src) @@ -237,6 +238,17 @@ user.remove_atom_colour(ADMIN_COLOUR_PRIORITY, COLOR_BLUE) REMOVE_TRAIT(user, SCRYING, SCRYING_ORB) +/obj/item/scrying/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + if(!ishuman(hit_atom) || !throwingdatum || iswizard(hit_atom)) + return + var/mob/living/carbon/human/crushee = hit_atom + var/zone = ran_zone(throwingdatum.target_zone) // Base 80% to hit the zone you're aiming for + var/obj/item/organ/external/hit_limb = crushee.get_organ(zone) + if(hit_limb) + hit_limb.fracture() + + /////////////////////Multiverse Blade//////////////////// GLOBAL_LIST_EMPTY(multiverse) diff --git a/code/game/gamemodes/wizard/magic_tarot.dm b/code/game/gamemodes/wizard/magic_tarot.dm index 1bf82da346d1..992ddf86336d 100644 --- a/code/game/gamemodes/wizard/magic_tarot.dm +++ b/code/game/gamemodes/wizard/magic_tarot.dm @@ -475,10 +475,10 @@ card_icon = "the_hanged_man" /datum/tarot/the_hanged_man/activate(mob/living/target) - if(target.flying) + if(HAS_TRAIT(target, TRAIT_FLYING)) return - target.flying = TRUE - addtimer(VARSET_CALLBACK(target, flying, FALSE), 60 SECONDS) + ADD_TRAIT(target, TRAIT_FLYING, "tarot") + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(callback_remove_trait), target, TRAIT_FLYING, "tarot"), 60 SECONDS) /datum/tarot/death name = "XIII - Death" diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index c698751b4655..3dce596278e8 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -424,7 +424,7 @@ /datum/spellbook_entry/item/scryingorb name = "Scrying Orb" - desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision." + desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision. It will also work as an excellent throwing weapon, and will return to your hand after throwing." item_path = /obj/item/scrying category = "Artefacts" diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 21d50f46bab3..19cd1be96291 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -15,26 +15,6 @@ else return check_access_list(acc) -/obj/proc/generate_req_lists() - //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. - if(!req_access) - req_access = list() - if(req_access_txt) - var/list/req_access_str = splittext(req_access_txt, ";") - for(var/x in req_access_str) - var/n = text2num(x) - if(n) - req_access += n - - if(!req_one_access) - req_one_access = list() - if(req_one_access_txt) - var/list/req_one_access_str = splittext(req_one_access_txt,";") - for(var/x in req_one_access_str) - var/n = text2num(x) - if(n) - req_one_access += n - /obj/proc/check_access(obj/item/I) var/list/L if(I) @@ -44,8 +24,6 @@ return check_access_list(L) /obj/proc/check_access_list(list/L) - generate_req_lists() - if(!L) return 0 if(!istype(L, /list)) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 7ea202bf802e..3a896dcb5c12 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -48,7 +48,7 @@ id = /obj/item/card/id/quartermaster l_hand = /obj/item/clipboard l_pocket = /obj/item/mail_scanner - pda = /obj/item/pda/quartermaster + pda = /obj/item/pda/heads/qm backpack_contents = list( /obj/item/melee/classic_baton/telescopic = 1 ) @@ -473,7 +473,7 @@ if(visualsOnly) return - qdel(H.GetComponent(/datum/component/footstep)) + H.DeleteComponent(/datum/component/footstep) /datum/outfit/job/mime/on_mind_initialize(mob/living/carbon/human/H) . = ..() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 96c54e3e9474..ffcdfdad7d17 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -416,6 +416,8 @@ new_item.materials[MAT_GLASS] /= coeff new_item.pixel_y = rand(-5, 5) new_item.pixel_x = rand(-5, 5) + if(is_station_level(z)) + SSblackbox.record_feedback("tally", "station_autolathe_production", 1, "[D.type]") SStgui.update_uis(src) desc = initial(desc) diff --git a/code/game/machinery/clonepod.dm b/code/game/machinery/clonepod.dm index 3113a14f56dc..9dbbc05c9840 100644 --- a/code/game/machinery/clonepod.dm +++ b/code/game/machinery/clonepod.dm @@ -245,7 +245,7 @@ create_clone() return - if(clone.cloneloss >= 25) + if(clone.getCloneLoss() >= 25) clone.adjustCloneLoss(-2) return @@ -373,7 +373,7 @@ reset_cloning() return TRUE - if(!clone.cloneloss) + if(!clone.getCloneLoss()) clone.forceMove(loc) var/datum/mind/patient_mind = locateUID(patient_data.mindUID) patient_mind.transfer_to(clone) diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 93435e09ba4a..ae795b6b92e8 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -7,33 +7,33 @@ light_color = LIGHT_COLOR_CYAN // List of alarms and their state in areas. This is sent to TGUI var/list/alarm_cache + var/parent_area_type /obj/machinery/computer/atmos_alert/Initialize(mapload) . = ..() alarm_cache = list() alarm_cache["minor"] = list() alarm_cache["priority"] = list() + var/area/machine_area = get_area(src) + parent_area_type = machine_area.get_top_parent_type() /obj/machinery/computer/atmos_alert/process() // This is relatively cheap because the areas list is pretty small - for(var/area/A as anything in GLOB.all_areas) - if(!A.master_air_alarm) - continue // No alarm - if(A.master_air_alarm.z != z) - continue // Not on our z-level - if(!A.master_air_alarm.report_danger_level) + for(var/obj/machinery/alarm/air_alarm as anything in GLOB.air_alarms) + if(!((get_area(air_alarm)).type in typesof(parent_area_type)) || air_alarm.z != z) + continue // Not an area we monitor, or outside our z-level + if(!air_alarm.report_danger_level) continue - - switch(A.atmosalm) + switch(air_alarm.alarm_area.atmosalm) if(ATMOS_ALARM_DANGER) - alarm_cache["priority"] |= A.name - alarm_cache["minor"] -= A.name + alarm_cache["priority"] |= air_alarm.alarm_area.name + alarm_cache["minor"] -= air_alarm.alarm_area.name if(ATMOS_ALARM_WARNING) - alarm_cache["priority"] -= A.name - alarm_cache["minor"] |= A.name + alarm_cache["priority"] -= air_alarm.alarm_area.name + alarm_cache["minor"] |= air_alarm.alarm_area.name else - alarm_cache["priority"] -= A.name - alarm_cache["minor"] -= A.name + alarm_cache["priority"] -= air_alarm.alarm_area.name + alarm_cache["minor"] -= air_alarm.alarm_area.name update_icon() diff --git a/code/game/machinery/computer/atmos_controllers.dm b/code/game/machinery/computer/atmos_controllers.dm index cb1d2638e43f..9e005b49b460 100644 --- a/code/game/machinery/computer/atmos_controllers.dm +++ b/code/game/machinery/computer/atmos_controllers.dm @@ -506,10 +506,15 @@ GLOBAL_LIST_EMPTY(gas_sensors) circuit = /obj/item/circuitboard/atmoscontrol req_access = list(ACCESS_ATMOSPHERICS) var/datum/ui_module/atmos_control/atmos_control + var/parent_area_type /obj/machinery/computer/atmoscontrol/Initialize(mapload) . = ..() atmos_control = new(src) + var/area/machine_area = get_area(src) + parent_area_type = machine_area.get_top_parent_type() + atmos_control.parent_area_type = parent_area_type + atmos_control.z_level = z /obj/machinery/computer/atmoscontrol/Destroy() QDEL_NULL(atmos_control) @@ -529,6 +534,7 @@ GLOBAL_LIST_EMPTY(gas_sensors) /obj/machinery/computer/atmoscontrol/ui_interact(mob/user, datum/tgui/ui = null) atmos_control.ui_interact(user, ui) + #undef SENSOR_PRESSURE #undef SENSOR_TEMPERATURE #undef SENSOR_O2 diff --git a/code/game/machinery/computer/camera_console.dm b/code/game/machinery/computer/camera_console.dm index bc7f2429707c..b53aeb6d3b7c 100644 --- a/code/game/machinery/computer/camera_console.dm +++ b/code/game/machinery/computer/camera_console.dm @@ -302,9 +302,17 @@ icon_keyboard = "power_key" icon_screen = "engie_cams" light_color = "#FAC54B" - network = list("Power Alarms","Atmosphere Alarms","Fire Alarms") + network = list() circuit = /obj/item/circuitboard/camera/engineering +/obj/machinery/computer/security/engineering/Initialize() + . = ..() + network = list() + var/area/console_area = get_area(src) + network += console_area.fire_cam_network + network += console_area.power_cam_network + network += console_area.atmos_cam_network + /obj/machinery/computer/security/telescreen/engine name = "engine monitor" desc = "A telescreen that connects to the engine's camera network."; diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index f647b5e241b8..0f3b2aee844f 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -719,7 +719,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) modify.access = list() return if("grant_all") - modify.access = get_all_accesses() + modify.access |= get_all_accesses() return // JOB SLOT MANAGEMENT functions diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 70eca5d39826..5075852969d7 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -7,12 +7,19 @@ light_color = LIGHT_COLOR_CYAN circuit = /obj/item/circuitboard/stationalert_engineering var/list/alarms_listend_for = list("Fire", "Atmosphere", "Power") + var/parent_area_type + var/list/areas = list() /obj/machinery/computer/station_alert/Initialize(mapload) . = ..() RegisterSignal(GLOB.alarm_manager, COMSIG_TRIGGERED_ALARM, PROC_REF(alarm_triggered)) RegisterSignal(GLOB.alarm_manager, COMSIG_CANCELLED_ALARM, PROC_REF(alarm_cancelled)) + var/area/machine_area = get_area(src) + parent_area_type = machine_area.get_top_parent_type() + if(parent_area_type) + areas = typesof(parent_area_type) + /obj/machinery/computer/station_alert/attack_ai(mob/user) add_fingerprint(user) @@ -46,7 +53,7 @@ for(var/area in GLOB.alarm_manager.alarms[class]) for(var/thing in GLOB.alarm_manager.alarms[class][area][3]) var/atom/A = locateUID(thing) - if(atoms_share_level(A, src)) + if(A && ((get_area(A)).type in areas) && A.z == z) data["alarms"][class] += area return data diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 52e49c98f03c..f9fc2b92e7be 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -625,11 +625,13 @@ to destroy them and players will be able to make replacements. build_path = /obj/machinery/chem_dispenser board_type = "machine" origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3" - req_components = list( /obj/item/stock_parts/matter_bin = 2, - /obj/item/stock_parts/capacitor = 1, - /obj/item/stock_parts/manipulator = 1, - /obj/item/stack/sheet/glass = 1, - /obj/item/stock_parts/cell = 1) + req_components = list( + /obj/item/stock_parts/matter_bin = 2, + /obj/item/stock_parts/capacitor = 1, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stack/sheet/glass = 1, + /obj/item/stock_parts/cell = 1 + ) /obj/item/circuitboard/chem_master board_name = "ChemMaster 3000" diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 3ed9620e54dc..c2481554cda1 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1541,8 +1541,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays) DA.polarized_glass = polarized_glass DA.state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS DA.created_name = name - DA.update_name() - DA.update_icon() + DA.update_appearance(UPDATE_NAME|UPDATE_ICON) if(!disassembled) if(DA) diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 828fbb9001f6..9a2a29a93f90 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -197,8 +197,7 @@ DA = new /obj/structure/door_assembly(loc) if(glass) DA.glass = TRUE - DA.update_icon() - DA.update_name() + DA.update_appearance(UPDATE_NAME|UPDATE_ICON) qdel(src) /obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params) @@ -367,11 +366,11 @@ /obj/machinery/door/airlock/hatch/syndicate name = "syndicate hatch" - req_access_txt = "150" + req_access = list(ACCESS_SYNDICATE) /obj/machinery/door/airlock/hatch/syndicate/command name = "Command Center" - req_access_txt = "153" + req_access = list(ACCESS_SYNDICATE_COMMAND) explosion_block = 2 normal_integrity = 1000 security_level = 6 @@ -398,7 +397,7 @@ /obj/machinery/door/airlock/hatch/syndicate/vault name = "syndicate vault hatch" - req_access_txt = "151" + req_access = list(ACCESS_SYNDICATE) icon = 'icons/obj/doors/airlocks/vault/vault.dmi' overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi' assemblytype = /obj/structure/door_assembly/door_assembly_vault diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 071811f3137a..1c1451bb5669 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -610,6 +610,6 @@ blockage.max_integrity += 25 foam_level++ blockage.icon_state = "foamed_[foam_level]" - blockage.update_icon_state() + blockage.update_icon(UPDATE_ICON_STATE) #undef MAX_FOAM_LEVEL diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 46c30b82a1a4..20abc3eaf814 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -13,6 +13,8 @@ active_power_consumption = 300 //when active, this turret takes up constant 300 Equipment power power_channel = PW_CHANNEL_EQUIPMENT //drains power from the EQUIPMENT channel armor = list(melee = 50, bullet = 30, laser = 30, energy = 30, bomb = 30, rad = 0, fire = 90, acid = 90) + ///this will be visible when above doors/firelocks/blastdoors to prevent cheese + layer = ABOVE_OBJ_LAYER var/raised = FALSE //if the turret cover is "open" and the turret is raised var/raising= FALSE //if the turret is currently opening or closing its cover var/health = 80 //the turret's health diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 109c1f92d60a..633683cc3fda 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -12,7 +12,7 @@ active_power_consumption = 200 pass_flags = PASSTABLE - var/list/allowed_devices = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/rcs, /obj/item/bodyanalyzer, /obj/item/handheld_chem_dispenser, /obj/item/clothing/suit/armor/reactive) + var/list/allowed_devices = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/rcs, /obj/item/bodyanalyzer, /obj/item/handheld_chem_dispenser, /obj/item/clothing/suit/armor/reactive, /obj/item/wormhole_jaunter/wormhole_weaver) var/recharge_coeff = 1 var/obj/item/charging = null // The item that is being charged @@ -203,6 +203,10 @@ var/obj/item/clothing/suit/armor/reactive/A = I return A.cell + if(istype(I, /obj/item/wormhole_jaunter/wormhole_weaver)) + var/obj/item/wormhole_jaunter/wormhole_weaver/W = I + return W.wcell + return null /obj/machinery/recharger/proc/check_cell_needs_recharging(obj/item/stock_parts/cell/C) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index e1690fa8d3ca..d07d7a946c6f 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -147,7 +147,7 @@ R.cell.charge = min(R.cell.charge + recharge_speed, R.cell.maxcharge) else if(ishuman(occupant)) var/mob/living/carbon/human/H = occupant - if(H.get_int_organ(/obj/item/organ/internal/cell)) + if(ismachineperson(H)) if(H.nutrition < NUTRITION_LEVEL_FULL - 1) H.set_nutrition(min(H.nutrition + recharge_speed_nutrition, NUTRITION_LEVEL_FULL - 1)) if(repairs) @@ -206,7 +206,7 @@ if(occupant) to_chat(H, "The cell is already occupied!") return - if(ismodcontrol(H.back) || H.get_int_organ(/obj/item/organ/internal/cell)) + if(ismodcontrol(H.back) || ismachineperson(H)) can_accept_user = TRUE if(!can_accept_user) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 18cc38eac8b7..f31a573e270e 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -383,7 +383,7 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) /obj/machinery/requests_console/proc/print_label(tag_name, tag_index) var/obj/item/shippingPackage/sp = new /obj/item/shippingPackage(get_turf(src)) sp.sortTag = tag_index - sp.update_desc() + sp.update_appearance(UPDATE_DESC) print_cooldown = world.time + 600 //1 minute cooldown before you can print another label, but you can still configure the next one during this time /obj/machinery/requests_console/proc/view_messages() diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index dda3f5cef56b..c9e42b3434ec 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -165,7 +165,7 @@ // No cheesing with buckling ourselves, this spinning is too fast for seatbelts if(user.buckled) - user.buckled.unbuckle_mob(user, force = TRUE) + user.unbuckle(force = TRUE) // Check if the machine and the user are still next to each other if(!do_after(user, delay = 1.2 SECONDS, target = src, use_default_checks = FALSE)) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 6a3d980797d9..d726a0c00a0b 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -372,7 +372,7 @@ * **/ /obj/machinery/suit_storage_unit/proc/store_item(obj/item/I, mob/user) - if((istype(I, /obj/item/clothing/suit)|| istype(I, /obj/item/mod/control)) && !suit) + if((istype(I, /obj/item/clothing/suit) || istype(I, /obj/item/mod/control) || istype(I, /obj/item/storage/backpack)) && !suit) if(try_store_item(I, user)) suit = I return TRUE diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 3baacc328778..2517b3a3749a 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -214,6 +214,8 @@ continue if(!is_teleport_allowed(T.z) && !R.cc_beacon) continue + if(R.wormhole_weaver) + continue if(R.syndicate && !emagged) continue var/tmpname = T.loc.name diff --git a/code/game/machinery/vendors/contraband_vendors.dm b/code/game/machinery/vendors/contraband_vendors.dm index 10992d51c29c..6b9d4d3542a2 100644 --- a/code/game/machinery/vendors/contraband_vendors.dm +++ b/code/game/machinery/vendors/contraband_vendors.dm @@ -13,7 +13,7 @@ "Don't you want some?", "Ping!") - req_access_txt = "150" + req_access = list(ACCESS_SYNDICATE) products = list(/obj/item/stack/medical/bruise_pack = 2, /obj/item/stack/medical/ointment = 2, /obj/item/reagent_containers/syringe/charcoal = 4, @@ -107,7 +107,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/syndicate, 32 desc = "An overwhelming amount of ancient patriotism washes over you just by looking at the machine." icon_state = "liberationstation" icon_lightmask = "liberationstation" - req_access_txt = "1" + req_access = list(ACCESS_SECURITY) slogan_list = list("Liberation Station: Your one-stop shop for all things second amendment!", "Be a patriot today, pick up a gun!", "Quality weapons for cheap prices!", diff --git a/code/game/machinery/vendors/departmental_vendors.dm b/code/game/machinery/vendors/departmental_vendors.dm index 069f677f5b4c..63d9b65e5d1f 100644 --- a/code/game/machinery/vendors/departmental_vendors.dm +++ b/code/game/machinery/vendors/departmental_vendors.dm @@ -5,7 +5,7 @@ icon_deny = "engivend_deny" icon_panel = "generic" category = VENDOR_TYPE_DEPARTMENTAL - req_one_access_txt = "11;24" // Engineers and atmos techs can use this + req_one_access = list(ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS) products = list(/obj/item/clothing/glasses/meson/engine = 2, /obj/item/clothing/glasses/meson/engine/tray = 4, /obj/item/multitool = 4, @@ -28,7 +28,7 @@ icon_state = "engi" icon_deny = "engi_deny" category = VENDOR_TYPE_DEPARTMENTAL - req_access_txt = "11" + req_access = list(ACCESS_ENGINE_EQUIP) products = list(/obj/item/clothing/under/rank/engineering/chief_engineer = 4, /obj/item/clothing/under/rank/engineering/engineer = 40, /obj/item/clothing/shoes/workboots = 4, @@ -62,7 +62,7 @@ icon_deny = "robotics_deny" category = VENDOR_TYPE_DEPARTMENTAL icon_lightmask = "robotics" - req_access_txt = "29" + req_access = list(ACCESS_ROBOTICS) products = list(/obj/item/clothing/suit/storage/labcoat = 4, /obj/item/clothing/under/rank/rnd/roboticist = 4, /obj/item/stack/cable_coil = 4, /obj/item/flash = 4, @@ -208,6 +208,7 @@ /obj/item/seeds/orange = 3, /obj/item/seeds/peanuts = 3, /obj/item/seeds/pineapple = 3, + /obj/item/seeds/plum = 3, /obj/item/seeds/poppy = 3, /obj/item/seeds/potato = 3, /obj/item/seeds/pumpkin = 3, @@ -252,7 +253,7 @@ "Don't you want some?", "Ping!") - req_access_txt = "5" + req_access = list(ACCESS_MEDICAL) category = VENDOR_TYPE_DEPARTMENTAL products = list(/obj/item/reagent_containers/hypospray/autoinjector/epinephrine = 4, /obj/item/stack/medical/bruise_pack/advanced = 2, @@ -330,7 +331,7 @@ icon_deny = "sec_deny" icon_panel = "wide_vendor" category = VENDOR_TYPE_DEPARTMENTAL - req_access_txt = "1" + req_access = list(ACCESS_SECURITY) products = list(/obj/item/restraints/handcuffs = 8, /obj/item/restraints/handcuffs/cable/zipties = 8, /obj/item/grenade/flashbang = 4, diff --git a/code/game/machinery/vendors/generic_vendors.dm b/code/game/machinery/vendors/generic_vendors.dm index 4627b13a0d9d..f60dc1aaee1f 100644 --- a/code/game/machinery/vendors/generic_vendors.dm +++ b/code/game/machinery/vendors/generic_vendors.dm @@ -249,7 +249,6 @@ "Dont carry your size? How about you shave off some pounds you fat lazy- *BZZT*") products = list(/obj/item/clothing/under/color/black = 10, - /obj/item/clothing/under/dress/blackskirt = 10, /obj/item/clothing/under/color/grey = 10, /obj/item/clothing/under/color/white = 10, /obj/item/clothing/under/color/darkred = 10, @@ -269,11 +268,34 @@ /obj/item/clothing/under/color/purple = 10, /obj/item/clothing/under/color/lightpurple = 10, /obj/item/clothing/under/color/pink = 10, + /obj/item/clothing/under/dress/blackskirt = 10, + /obj/item/clothing/under/color/jumpskirt/black = 10, + /obj/item/clothing/under/color/jumpskirt/grey = 10, + /obj/item/clothing/under/color/jumpskirt/white = 10, + /obj/item/clothing/under/color/jumpskirt/darkred = 10, + /obj/item/clothing/under/color/jumpskirt/red = 10, + /obj/item/clothing/under/color/jumpskirt/lightred = 10, + /obj/item/clothing/under/color/jumpskirt/brown = 10, + /obj/item/clothing/under/color/jumpskirt/orange = 10, + /obj/item/clothing/under/color/jumpskirt/lightbrown = 10, + /obj/item/clothing/under/color/jumpskirt/yellow = 10, + /obj/item/clothing/under/color/jumpskirt/yellowgreen = 10, + /obj/item/clothing/under/color/jumpskirt/lightgreen = 10, + /obj/item/clothing/under/color/jumpskirt/green = 10, + /obj/item/clothing/under/color/jumpskirt/aqua = 10, + /obj/item/clothing/under/color/jumpskirt/darkblue = 10, + /obj/item/clothing/under/color/jumpskirt/blue = 10, + /obj/item/clothing/under/color/jumpskirt/lightblue = 10, + /obj/item/clothing/under/color/jumpskirt/purple = 10, + /obj/item/clothing/under/color/jumpskirt/lightpurple = 10, + /obj/item/clothing/under/color/jumpskirt/pink = 10, + /obj/item/clothing/under/color/jumpskirt/rainbow = 1, /obj/item/clothing/under/color/rainbow = 1) contraband = list(/obj/item/clothing/under/syndicate/tacticool = 5, /obj/item/clothing/under/syndicate/greyman = 5, - /obj/item/clothing/under/color/orange/prison = 5) + /obj/item/clothing/under/color/orange/prison = 10, + /obj/item/clothing/under/color/jumpskirt/orange/prison = 10) prices = list(/obj/item/clothing/under/color/black = 30, /obj/item/clothing/under/dress/blackskirt = 30, @@ -297,8 +319,30 @@ /obj/item/clothing/under/color/lightpurple = 50, /obj/item/clothing/under/color/pink = 50, /obj/item/clothing/under/color/rainbow = 100, + /obj/item/clothing/under/color/jumpskirt/black = 30, + /obj/item/clothing/under/color/jumpskirt/grey = 30, + /obj/item/clothing/under/color/jumpskirt/white = 50, + /obj/item/clothing/under/color/jumpskirt/darkred = 50, + /obj/item/clothing/under/color/jumpskirt/red = 50, + /obj/item/clothing/under/color/jumpskirt/lightred = 50, + /obj/item/clothing/under/color/jumpskirt/brown = 30, + /obj/item/clothing/under/color/jumpskirt/orange = 50, + /obj/item/clothing/under/color/jumpskirt/lightbrown = 30, + /obj/item/clothing/under/color/jumpskirt/yellow = 50, + /obj/item/clothing/under/color/jumpskirt/yellowgreen = 50, + /obj/item/clothing/under/color/jumpskirt/lightgreen = 50, + /obj/item/clothing/under/color/jumpskirt/green = 50, + /obj/item/clothing/under/color/jumpskirt/aqua = 50, + /obj/item/clothing/under/color/jumpskirt/darkblue = 50, + /obj/item/clothing/under/color/jumpskirt/blue = 50, + /obj/item/clothing/under/color/jumpskirt/lightblue = 30, + /obj/item/clothing/under/color/jumpskirt/purple = 50, + /obj/item/clothing/under/color/jumpskirt/lightpurple = 50, + /obj/item/clothing/under/color/jumpskirt/pink = 50, + /obj/item/clothing/under/color/jumpskirt/rainbow = 100, /obj/item/clothing/under/syndicate/tacticool = 75, /obj/item/clothing/under/syndicate/greyman = 75, + /obj/item/clothing/under/color/jumpskirt/orange/prison = 75, /obj/item/clothing/under/color/orange/prison = 75) refill_canister = /obj/item/vending_refill/suitdispenser diff --git a/code/game/machinery/vendors/vending.dm b/code/game/machinery/vendors/vending.dm index 00d957ab8107..76090845a8f5 100644 --- a/code/game/machinery/vendors/vending.dm +++ b/code/game/machinery/vendors/vending.dm @@ -64,7 +64,6 @@ // List of vending_product items available. var/list/product_records = list() var/list/hidden_records = list() - var/list/imagelist = list() /// Unimplemented list of ads that are meant to show up somewhere, but don't. var/list/ads_list = list() @@ -160,10 +159,6 @@ if(build_inv) //non-constructable vending machine build_inventory(products, product_records) build_inventory(contraband, hidden_records) - for(var/datum/data/vending_product/R in (product_records + hidden_records)) - var/obj/item/I = R.product_path - var/pp = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-") - imagelist[pp] = "[icon2base64(icon(initial(I.icon), initial(I.icon_state), SOUTH, 1))]" if(LAZYLEN(slogan_list)) // So not all machines speak at the exact same time. @@ -645,10 +640,12 @@ data["product_records"] = list() var/i = 1 for(var/datum/data/vending_product/R in product_records) + var/obj/item = R.product_path var/list/data_pr = list( - path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"), name = R.name, - price = (R.product_path in prices) ? prices[R.product_path] : 0, + price = (item in prices) ? prices[item] : 0, + icon = item.icon, + icon_state = item.icon_state, max_amount = R.max_amount, is_hidden = FALSE, inum = i++ @@ -656,17 +653,18 @@ data["product_records"] += list(data_pr) data["hidden_records"] = list() for(var/datum/data/vending_product/R in hidden_records) + var/obj/item = R.product_path var/list/data_hr = list( - path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"), name = R.name, - price = (R.product_path in prices) ? prices[R.product_path] : 0, + price = (item in prices) ? prices[item] : 0, + icon = item.icon, + icon_state = item.icon_state, max_amount = R.max_amount, is_hidden = TRUE, inum = i++, premium = TRUE ) data["hidden_records"] += list(data_hr) - data["imagelist"] = imagelist return data /obj/machinery/economy/vending/ui_act(action, params, datum/tgui/ui) diff --git a/code/game/mecha/equipment/tools/janitor_tools.dm b/code/game/mecha/equipment/tools/janitor_tools.dm new file mode 100644 index 000000000000..fa045b8fc0cf --- /dev/null +++ b/code/game/mecha/equipment/tools/janitor_tools.dm @@ -0,0 +1,302 @@ +// Mecha mop, light replacer, mecha spray, garbage bag + +/obj/item/mecha_parts/mecha_equipment/janitor + +/obj/item/mecha_parts/mecha_equipment/janitor/can_attach(obj/mecha/nkarrdem/M) + if(..() && istype(M)) + return TRUE + +// Mop +//! How many seconds before the mopping sound triggers again +#define MOP_SOUND_CD 2 SECONDS + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_mop + name = "\improper WLLY mega mop" + desc = "An upsized advanced mop, designed for use in exosuits." + icon_state = "mecha_mop" + equip_cooldown = 1.5 SECONDS + energy_drain = 1 + range = MECHA_MELEE | MECHA_RANGED + /// When the mopping sound was last played. + COOLDOWN_DECLARE(mop_sound_cooldown) + /// How fast does this mop? + var/mop_speed = 2 SECONDS + /// Toggle for refilling itself + var/refill_enabled = TRUE + /// Rate per process() tick mop refills itself + var/refill_rate = 5 + /// Power use per process to refill reagents + var/refill_cost = 10 + /// What reagent to refill with + var/refill_reagent = "water" + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_mop/Initialize(mapload) + . = ..() + create_reagents(1000) + reagents.add_reagent("water", 1000) + START_PROCESSING(SSobj, src) + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_mop/emag_act(mob/user) + . = ..() + emagged = TRUE + to_chat(user, "You short out the automatic watering system on [src].") + reagents.clear_reagents() + refill_reagent = "lube" + refill_cost = 50 + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_mop/action(atom/target) + if(get_dist(chassis, target) > 2) + return + if(istype(target, /obj/structure/reagent_dispensers/watertank) && get_dist(chassis,target) <= 1) + var/obj/structure/reagent_dispensers/watertank/WT = target + WT.reagents.trans_to(src, 1000) + occupant_message("Mop refilled.") + playsound(chassis, 'sound/effects/refill.ogg', 50, TRUE, -6) + return + if(reagents.total_volume > 0) + if(COOLDOWN_FINISHED(src, mop_sound_cooldown)) + playsound(loc, pick('sound/weapons/mopping1.ogg', 'sound/weapons/mopping2.ogg'), 30, TRUE, -1) + COOLDOWN_START(src, mop_sound_cooldown, MOP_SOUND_CD) + // 3x3 mopping area + var/turf/target_turf = get_turf(target) + if(!istype(target_turf) || iswallturf(target_turf)) + return + chassis.occupant.visible_message("[chassis] begins to mop \the [target_turf] with \the [src].", "You begin to mop \the [target_turf] with \the [src].") + if(do_after(chassis.occupant, mop_speed, target = target, allow_moving = 0)) + for(var/turf/current_target_turf in view(1, target)) + current_target_turf.cleaning_act(chassis.occupant, src, mop_speed, "mop", ".", skip_do_after = TRUE) + chassis.occupant_message("You mop \the [target].") + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_mop/post_clean(atom/target, mob/user) + var/turf/T = get_turf(target) + if(issimulatedturf(T)) + reagents.reaction(T, REAGENT_TOUCH, 10) // 10 is the multiplier for the reaction effect. 10 is needed to properly wet a floor. + reagents.remove_any(1) // reaction() doesn't use up the reagents + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_mop/can_clean() + return reagents.has_reagent("water", 1) || reagents.has_reagent("cleaner", 1) || reagents.has_reagent("holywater", 1) + +// Auto-regeneration of water. Takes energy. +/obj/item/mecha_parts/mecha_equipment/janitor/mega_mop/process() + if(reagents.total_volume < 1000) + reagents.add_reagent(refill_reagent, refill_rate) + chassis.use_power(refill_cost) + update_equip_info() + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_mop/get_equip_info() + var/output = ..() + if(output) + return "[output] \[Refill [refill_enabled? "Enabled" : "Disabled"]\] \[[reagents.total_volume]\]" + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_mop/Topic(href, href_list) + ..() + var/datum/topic_input/afilter = new (href, href_list) + if(afilter.get("toggle_mode")) + refill_enabled = !refill_enabled + if(refill_enabled) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + update_equip_info() + +#undef MOP_SOUND_CD + +// Light Replacer +/obj/item/mecha_parts/mecha_equipment/janitor/light_replacer + name = "\improper NT-12 illuminator" + desc = "A modified light replacer fit for an exosuit that zaps lights into place." + icon_state = "mecha_light_replacer" + equip_cooldown = 1.5 SECONDS + energy_drain = 100 + range = MECHA_MELEE | MECHA_RANGED + +/obj/item/mecha_parts/mecha_equipment/janitor/light_replacer/emag_act(mob/user) + . = ..() + emagged = TRUE + to_chat(user, "You short out the safeties on [src].") + +/obj/item/mecha_parts/mecha_equipment/janitor/light_replacer/action(atom/target) + if(istype(target, /obj/machinery/light)) + chassis.Beam(target, icon_state = "rped_upgrade", icon = 'icons/effects/effects.dmi', time = 5) + playsound(src, 'sound/items/pshoom.ogg', 40, 1) + var/obj/machinery/light/light_to_fix = target + light_to_fix.fix(chassis.occupant, src, emagged) + +// Mecha spray +/obj/item/mecha_parts/mecha_equipment/janitor/mega_spray + name = "\improper JS-33 super spray" + desc = "A spray bottle, upscaled for an exosuit. Capable of mass sanitation." + icon_state = "mecha_spray" + equip_cooldown = 1.5 SECONDS + energy_drain = 200 + range = MECHA_MELEE | MECHA_RANGED + /// Toggle for refilling itself + var/refill_enabled = TRUE + /// Rate per process() tick spray refills itself + var/refill_rate = 1 + /// Power use per process to refill reagents + var/refill_cost = 25 + /// What reagent to refill with + var/refill_reagent = "cleaner" + /// The range of tiles the sprayer will reach. + var/spray_range = 4 + /// Internal sprayer object + var/obj/item/reagent_containers/spray/spray_controller = new /obj/item/reagent_containers/spray + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_spray/Initialize(mapload) + . = ..() + // Setup spray controller + spray_controller.loc = src + spray_controller.spray_maxrange = spray_range + spray_controller.spray_currentrange = spray_range + spray_controller.volume = 100 + spray_controller.reagents.add_reagent("cleaner", 100) + START_PROCESSING(SSobj, src) + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_spray/emag_act(mob/user) + . = ..() + emagged = TRUE + to_chat(user, "You short out the automatic watering system on [src].") + spray_controller.reagents.clear_reagents() + refill_reagent = "lube" + refill_cost = 50 + refill_rate = 5 + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_spray/action(atom/target) + if(spray_controller.reagents.total_volume < 15) // Needs at least enough reagents to apply the full spray + to_chat(chassis.occupant, "*click*") + playsound(src, 'sound/weapons/empty.ogg', 100, 1) + return + var/direction = get_dir(chassis, target) + var/turf/T = get_turf(target) + var/turf/T1 = get_step(T, turn(direction, 90)) + var/turf/T2 = get_step(T, turn(direction, -90)) + var/list/the_targets = list(T, T1, T2) + playsound(chassis, 'sound/effects/spray2.ogg', 75, TRUE, -3) + for(var/turf/target_turf in the_targets) + INVOKE_ASYNC(src, PROC_REF(spray), target_turf) + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_spray/proc/spray(turf/target) + spray_controller.spray(target) + +// Auto-regeneration of space cleaner. Takes energy. +/obj/item/mecha_parts/mecha_equipment/janitor/mega_spray/process() + if(spray_controller.reagents.total_volume < 100) + spray_controller.reagents.add_reagent(refill_reagent, refill_rate) + chassis.use_power(refill_cost) + update_equip_info() + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_spray/get_equip_info() + var/output = ..() + if(output) + return "[output] \[Refill [refill_enabled? "Enabled" : "Disabled"]\] \[[spray_controller.reagents.total_volume]\]" + +/obj/item/mecha_parts/mecha_equipment/janitor/mega_spray/Topic(href,href_list) + ..() + var/datum/topic_input/afilter = new (href,href_list) + if(afilter.get("toggle_mode")) + refill_enabled = !refill_enabled + if(refill_enabled) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + update_equip_info() + +// Garbage Magnet +/obj/item/mecha_parts/mecha_equipment/janitor/garbage_magnet + name = "\improper WA1E Garbage Magnet" + desc = "Bluespace technology integrated with an oversized garbage bag and heavy duty magnets allows this device to pick up all manner of litter. \ + The complex technology prevents users from directly looking inside the bag." + icon_state = "mecha_trash_magnet" + equip_cooldown = 1.5 SECONDS + energy_drain = 5 + range = MECHA_MELEE | MECHA_RANGED + /// Toggle for filling the bag (true) or emptying (false) + var/bagging = TRUE + /// Toggle for wide area or single tile pickups + var/extended = FALSE + /// Garbage magnet range + var/max_range = 3 + /// List of items the bag cannot hold + var/list/cant_hold = list(/obj/item/disk/nuclear, /obj/item/grown/bananapeel/traitorpeel, /obj/item/storage/bag) + /// Handles controlling the storage of items + var/obj/item/storage/bag/trash/storage_controller = new /obj/item/storage/bag/trash + +/obj/item/mecha_parts/mecha_equipment/janitor/garbage_magnet/Initialize(mapload) + . = ..() + storage_controller.loc = src + storage_controller.storage_slots = 100 + storage_controller.max_combined_w_class = 100 + storage_controller.max_w_class = WEIGHT_CLASS_NORMAL + storage_controller.w_class = WEIGHT_CLASS_NORMAL + storage_controller.allow_same_size = TRUE // This needs to be true or it won't be able to pick up smaller storages like boxes + storage_controller.cant_hold = typecacheof(cant_hold) + +/obj/item/mecha_parts/mecha_equipment/janitor/garbage_magnet/deconstruct() + var/turf/T = get_turf(src) + for(var/obj/item/I in storage_controller.contents) + storage_controller.remove_from_storage(I, T) + qdel(src) + +/obj/item/mecha_parts/mecha_equipment/janitor/garbage_magnet/get_equip_info() + var/output = ..() + if(output) + return "[output] \[[bagging? "Filling" : "Dumping"]\] \[Area [extended? "Extended" : "Focused"]\] \[Cargo: [length(storage_controller.contents)]/[storage_controller.max_combined_w_class]\]\]" + +/obj/item/mecha_parts/mecha_equipment/janitor/garbage_magnet/Topic(href,href_list) + ..() + var/datum/topic_input/afilter = new (href,href_list) + if(afilter.get("toggle_bagging")) + bagging = !bagging + update_equip_info() + return + if(afilter.get("toggle_extended")) + extended = !extended + update_equip_info() + return + +/obj/item/mecha_parts/mecha_equipment/janitor/garbage_magnet/action(atom/target) + var/target_distance = get_dist(chassis, target) + if(target_distance > max_range) + return + + for(var/turf/tested_turf in get_line(chassis, target)) // Check if the path is blocked + if(iswallturf(tested_turf) || locate(/obj/structure/window) in tested_turf || locate(/obj/machinery/door) in tested_turf) // walls, windows, and doors + chassis.occupant_message("The target is out of reach of the magnet!") + return + + if(istype(target, /obj/machinery/disposal)) // Emptying stuff into disposals + chassis.occupant.visible_message( + "[chassis.occupant] empties [src] into the disposal unit.", + "You empty [src] into disposal unit.", + "You hear someone emptying something into a disposal unit." + ) + chassis.Beam(target, icon_state = "rped_upgrade", icon = 'icons/effects/effects.dmi', time = 5) + playsound(src, 'sound/items/pshoom.ogg', 40, 1) + for(var/obj/item/I in storage_controller.contents) + storage_controller.remove_from_storage(I, target) + return + var/turf/target_turf + if(iswallturf(target)) + return + if(isturf(target)) + target_turf = target + else + target_turf = get_turf(target) + if(bagging) // If picking up + if(extended) // If extended reach + for(var/turf/current_target_turf in view(1, target_turf)) + for(var/obj/item/I in current_target_turf.contents) + if(storage_controller.can_be_inserted(I)) + storage_controller.handle_item_insertion(I, null, TRUE) + else // Single turf + for(var/obj/item/I in target_turf.contents) + if(storage_controller.can_be_inserted(I)) + storage_controller.handle_item_insertion(I, null, TRUE) + chassis.occupant_message("You pick up all the items with [src]. Remaining cargo compartment capacity: [storage_controller.max_combined_w_class - length(storage_controller.contents)]") + + else // Dumping + for(var/obj/item/I in storage_controller.contents) + storage_controller.remove_from_storage(I, target_turf) + chassis.occupant_message("You dump everything out of [src].") + update_equip_info() diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 64a264cf40a2..6552d9b32067 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -292,10 +292,10 @@ if(mode) return analyze_reagents(target) if(!length(syringes)) - occupant_message("No syringes loaded.") + occupant_message("No syringes loaded.") return if(reagents.total_volume<=0) - occupant_message("No available reagents to load syringe with.") + occupant_message("No available reagents to load syringe with.") return var/turf/trg = get_turf(target) var/obj/item/reagent_containers/syringe/mechsyringe = syringes[1] @@ -324,7 +324,7 @@ var/mob/living/carbon/M = safepick(mobs) if(M) var/R - mechsyringe.visible_message(" [M] was hit by the syringe!") + mechsyringe.visible_message(" [M] was hit by the syringe!") if(M.can_inject(originaloccupant, TRUE, original_target_zone)) if(mechsyringe.reagents) for(var/datum/reagent/A in mechsyringe.reagents.reagent_list) @@ -470,7 +470,7 @@ occupant_message("The object is too far away.") return FALSE if(!A.reagents || ismob(A)) - occupant_message("No reagent info gained from [A].") + occupant_message("No reagent info gained from [A].") return FALSE occupant_message("Analyzing reagents...") for(var/datum/reagent/R as anything in A.reagents.reagent_list) @@ -504,7 +504,7 @@ if(..()) return if(!length(processed_reagents) || reagents.total_volume >= reagents.maximum_volume || !chassis.has_charge(energy_drain)) - occupant_message("Reagent processing stopped.") + occupant_message("Reagent processing stopped.") log_message("Reagent processing stopped.") STOP_PROCESSING(SSobj, src) return diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 7d8f64ed04e9..934c7c364bfc 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -479,10 +479,9 @@ /obj/item/kinetic_crusher/mecha/Initialize(mapload) . = ..() - var/datum/component/unwanted = GetComponent(/datum/component/parry) - unwanted?.RemoveComponent() - unwanted = GetComponent(/datum/component/two_handed) - unwanted?.RemoveComponent() + DeleteComponent(/datum/component/parry) + DeleteComponent(/datum/component/two_handed) + /// This is only for the sake of internal checks in the crusher itself. ADD_TRAIT(src, TRAIT_WIELDED, "mech[UID()]") diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 59762a095485..13a6887278ba 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -391,6 +391,37 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/rearm() return//Extra bit of security +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/cleaner + name = "\improper N23 Rotary Janitation Launcher" + desc = "A tool of mass cleaning. Launches primed cleaning foam grenades. Major slipping hazard." + icon_state = "mecha_grenadelnchr" + origin_tech = "combat=4;engineering=4" + projectile = /obj/item/grenade/chem_grenade/cleaner + fire_sound = 'sound/effects/bang.ogg' + equip_cooldown = 6 SECONDS + projectiles = 6 + missile_speed = 1.5 + projectile_energy_cost = 1000 + size = 1 + /// Time until grenade detonates + var/det_time = 2 SECONDS + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/cleaner/action(target, params) + if(!action_checks(target)) + return + set_ready_state(0) + var/obj/item/grenade/chem_grenade/cleaner/grenade = new projectile(chassis.loc) + playsound(chassis, fire_sound, 50, TRUE) + grenade.throw_at(target, missile_range, missile_speed) + projectiles-- + log_message("Fired from [name], targeting [target].") + log_attack(chassis.occupant, target, "Cleaning grenade fired from [name], targeting [target].") + addtimer(CALLBACK(grenade, TYPE_PROC_REF(/obj/item/grenade/chem_grenade/cleaner, prime)), det_time) + do_after_cooldown() + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/cleaner/can_attach(obj/mecha/nkarrdem/M as obj) + return istype(M) && length(M.equipment) < M.max_equip + /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar equip_cooldown = 2 SECONDS name = "banana mortar" diff --git a/code/game/mecha/janitor/nkarrdem.dm b/code/game/mecha/janitor/nkarrdem.dm new file mode 100644 index 000000000000..7018c5979403 --- /dev/null +++ b/code/game/mecha/janitor/nkarrdem.dm @@ -0,0 +1,92 @@ +/obj/mecha/nkarrdem + desc = "A heavy duty sanitation exosuit; optimized for the removal of mass amounts of dirt, grime, and grease." + name = "Nkarrdem" + icon_state = "nkarrdem" + initial_icon = "nkarrdem" + step_in = 3 + turnsound = 'sound/mecha/mechmove01.ogg' + stepsound = 'sound/mecha/mechstep.ogg' + max_temperature = 10000 + max_integrity = 110 + max_equip = 4 + wreckage = /obj/structure/mecha_wreckage/nkarrdem + internal_damage_threshold = 35 + deflect_chance = 15 + step_energy_drain = 6 + normal_step_energy_drain = 6 + /// Is the janihud on? + var/builtin_hud_user = FALSE + /// Action that controls the floor buffer + var/datum/action/innate/mecha/mech_toggle_floorbuffer/floorbuffer_action = new + +/obj/mecha/nkarrdem/examine_more(mob/user) + ..() + . = list() + . += "The Nkarrdem is an older-generation CBRN mech developed jointly by Interdyne and Shellguard for rapid decontamination during a period where biological weapons are frequently used, though it suffered from several \ + cost-cutting measures that exposes the operator to the hazardous environments. Surplus units are then sold for cleaning purposes." + . += "" + . += "The name 'Nkarrdem' comes from Skrellian legend, meaning 'Turquoise Fields'. The Turquoise Fields are an algae plataeu, where the kings of old would go to their final rest." + + +/obj/mecha/nkarrdem/moved_inside(mob/living/carbon/human/H) + . = ..() + if(. && ishuman(H)) + if(istype(H.glasses, /obj/item/clothing/glasses/hud)) + occupant_message("[H.glasses] prevent you from using [src]'s built-in janitorial HUD.") + else + var/datum/atom_hud/data/janitor/jani_hud = GLOB.huds[DATA_HUD_JANITOR] + jani_hud.add_hud_to(H) + builtin_hud_user = TRUE + +/obj/mecha/nkarrdem/mmi_moved_inside(obj/item/mmi/mmi_as_oc, mob/user) + . = ..() + if(.) + if(occupant.client) + var/datum/atom_hud/data/janitor/jani_hud = GLOB.huds[DATA_HUD_JANITOR] + jani_hud.add_hud_to(occupant) + builtin_hud_user = TRUE + +/obj/mecha/nkarrdem/go_out() + if(ishuman(occupant) && builtin_hud_user) + var/mob/living/carbon/human/H = occupant + var/datum/atom_hud/data/janitor/jani_hud = GLOB.huds[DATA_HUD_JANITOR] + jani_hud.remove_hud_from(H) + builtin_hud_user = FALSE + else if((isbrain(occupant) || pilot_is_mmi()) && builtin_hud_user) + var/mob/living/brain/H = occupant + var/datum/atom_hud/data/janitor/jani_hud = GLOB.huds[DATA_HUD_JANITOR] + jani_hud.remove_hud_from(H) + builtin_hud_user = FALSE + return ..() + +/obj/mecha/nkarrdem/GrantActions(mob/living/user, human_occupant = 0) + . = ..() + floorbuffer_action.Grant(user, src) + +/obj/mecha/nkarrdem/RemoveActions(mob/living/user, human_occupant = 0) + . = ..() + floorbuffer_action.Remove(user) + +// Moving has to clean floors if the buffer is active +/obj/mecha/nkarrdem/Move() + . = ..() + if(!floor_buffer) + return + var/turf/tile = get_turf(src) + if(!isturf(tile)) + return + tile.clean_blood() + for(var/obj/effect/E in tile) + if(E.is_cleanable()) + qdel(E) + +/obj/mecha/nkarrdem/loaded/Initialize(mapload) + . = ..() + var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/janitor/mega_spray + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/janitor/mega_mop + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/janitor/light_replacer + ME.attach(src) + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/cleaner + ME.attach(src) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index c64cfd40f11e..efcbd0ff3bfa 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -71,6 +71,7 @@ "MODsuit Modules", "Ripley", "Firefighter", + "Nkarrdem", "Odysseus", "Gygax", "Durand", @@ -246,6 +247,8 @@ /obj/machinery/mecha_part_fabricator/proc/build_design_timer_finish(datum/design/D, list/final_cost) // Spawn the item (in a lockbox if restricted) OR mob (e.g. IRC body) var/atom/A = new D.build_path(get_step(src, output_dir)) + if(is_station_level(z)) + SSblackbox.record_feedback("tally", "station_mechfab_production", 1, "[D.type]") if(isitem(A)) var/obj/item/I = A I.materials = final_cost diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 813b9983e04f..bd96797ad522 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -109,6 +109,10 @@ var/phasing = FALSE var/phasing_energy_drain = 200 var/phase_state = "" //icon_state when phasing + /// How much speed the mech loses while the buffer is active + var/buffer_delay = 1 + /// Does it clean the tile under it? + var/floor_buffer = FALSE //Action datums var/datum/action/innate/mecha/mech_eject/eject_action = new @@ -155,7 +159,7 @@ qdel(V) set_light(lights_range_ambient, lights_power_ambient) - update_overlays() + update_icon(UPDATE_OVERLAYS) /obj/mecha/update_overlays() . = ..() @@ -1033,7 +1037,7 @@ AI.forceMove(src) occupant = AI icon_state = reset_icon(icon_state) - update_overlays() + update_icon(UPDATE_OVERLAYS) playsound(src, 'sound/machines/windowdoor.ogg', 50, 1) if(!hasInternalDamage()) SEND_SOUND(occupant, sound(nominalsound, volume = 50)) @@ -1191,7 +1195,7 @@ H.throw_alert("locked", /atom/movable/screen/alert/mech_maintenance) if(connected_port) H.throw_alert("mechaport_d", /atom/movable/screen/alert/mech_port_disconnect) - update_overlays() + update_icon(UPDATE_OVERLAYS) return TRUE else return FALSE @@ -1247,7 +1251,7 @@ Move(loc) icon_state = reset_icon() dir = dir_in - update_overlays() + update_icon(UPDATE_OVERLAYS) log_message("[mmi_as_oc] moved in as pilot.") if(!hasInternalDamage()) SEND_SOUND(occupant, sound(nominalsound, volume = 50)) @@ -1337,7 +1341,7 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L H.regenerate_icons() // workaround for 14457 - update_overlays() + update_icon(UPDATE_OVERLAYS) /obj/mecha/force_eject_occupant(mob/target) go_out() diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index 316e4eb737e5..437cf6aba105 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -221,6 +221,22 @@ playsound(src, 'sound/mecha/mechmove01.ogg', 50, TRUE) UpdateButtons() +// Floor Buffer Action +/datum/action/innate/mecha/mech_toggle_floorbuffer + name = "Toggle Floor Buffer" + desc = "Movement speed is decreased while active." + button_overlay_icon = 'icons/obj/vehicles.dmi' + button_overlay_icon_state = "upgrade" + +/datum/action/innate/mecha/mech_toggle_floorbuffer/Activate() + if(!chassis.floor_buffer) + chassis.floor_buffer = TRUE + chassis.step_in += chassis.buffer_delay + else + chassis.floor_buffer = FALSE + chassis.step_in -= chassis.buffer_delay + to_chat(usr, "The floor buffer is now [chassis.floor_buffer ? "active" : "deactivated"].") + /datum/action/innate/mecha/select_module name = "Hey, you shouldn't see this please make a bug report" var/obj/item/mecha_parts/mecha_equipment/equipment diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 02e7450f548c..9f212e3400a8 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -1810,4 +1810,249 @@ holder.icon_state = "odysseus12" return 1 +// NKARRDEM + +/datum/construction/mecha/nkarrdem_chassis + steps = list(list("key"=/obj/item/mecha_parts/part/nkarrdem_torso), // 1 + list("key"=/obj/item/mecha_parts/part/nkarrdem_head), // 2 + list("key"=/obj/item/mecha_parts/part/nkarrdem_left_arm), // 3 + list("key"=/obj/item/mecha_parts/part/nkarrdem_right_arm), // 4 + list("key"=/obj/item/mecha_parts/part/nkarrdem_left_leg), // 5 + list("key"=/obj/item/mecha_parts/part/nkarrdem_right_leg) // 6 + ) + +/datum/construction/mecha/nkarrdem_chassis/custom_action(step, atom/used_atom, mob/user) + user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]") + holder.overlays += used_atom.icon_state + "+o" + qdel(used_atom) + return TRUE + +/datum/construction/mecha/nkarrdem_chassis/action(atom/used_atom,mob/user as mob) + return check_all_steps(used_atom,user) + +/datum/construction/mecha/nkarrdem_chassis/spawn_result(mob/user, result_name) + ..(user, "Nkarrdem") + var/obj/item/mecha_parts/chassis/const_holder = holder + const_holder.construct = new /datum/construction/reversible/mecha/nkarrdem(const_holder) + const_holder.icon = 'icons/mecha/mech_construction.dmi' + const_holder.icon_state = "nkarrdem0" + const_holder.density = TRUE + qdel(src) + +/datum/construction/reversible/mecha/nkarrdem + result = "/obj/mecha/nkarrdem" + steps = list( + //1 + list( + "key" = TOOL_WELDER, + "backkey" = TOOL_WRENCH, + "desc" = "External armor is wrenched."), + //2 + list( + "key" = TOOL_WRENCH, + "backkey" = TOOL_CROWBAR, + "desc" = "External armor is installed."), + //3 + list( + "key" = /obj/item/stack/sheet/plasteel, + "backkey" = TOOL_WELDER, + "desc" = "Internal armor is welded."), + //4 + list( + "key" = TOOL_WELDER, + "backkey" = TOOL_WRENCH, + "desc" = "Internal armor is wrenched."), + //5 + list( + "key" = TOOL_WRENCH, + "backkey" = TOOL_CROWBAR, + "desc" = "Internal armor is installed."), + //6 + list( + "key" = /obj/item/stack/sheet/metal, + "backkey" = TOOL_SCREWDRIVER, + "desc" = "Floor buffer is secured."), + //7 + list( + "key" = TOOL_SCREWDRIVER, + "backkey" = TOOL_CROWBAR, + "desc" = "Floor buffer is installed."), + //8 + list( + "key" = /obj/item/borg/upgrade/floorbuffer, + "backkey" = TOOL_SCREWDRIVER, + "desc" = "Peripherals control module is secured."), + //9 + list( + "key" = TOOL_SCREWDRIVER, + "backkey" = TOOL_CROWBAR, + "desc" = "Peripherals control module is installed."), + //10 + list( + "key" = /obj/item/circuitboard/mecha/nkarrdem/peripherals, + "backkey" = TOOL_SCREWDRIVER, + "desc" = "Central control module is secured."), + + //11 + list( + "key" = TOOL_SCREWDRIVER, + "backkey" = TOOL_CROWBAR, + "desc" = "Central control module is installed."), + //12 + list( + "key" = /obj/item/circuitboard/mecha/nkarrdem/main, + "backkey" = TOOL_SCREWDRIVER, + "desc" = "The wiring is adjusted."), + //13 + list( + "key" = /obj/item/wirecutters, + "backkey" = TOOL_SCREWDRIVER, + "desc" = "The wiring is added."), + //14 + list( + "key" = /obj/item/stack/cable_coil, + "backkey" = TOOL_SCREWDRIVER, + "desc" = "The hydraulic systems are active."), + //15 + list( + "key" = TOOL_SCREWDRIVER, + "backkey" = TOOL_WRENCH, + "desc" = "The hydraulic systems are connected."), + //16 + list( + "key" = TOOL_WRENCH, + "desc" = "The hydraulic systems are disconnected.") + ) + +/datum/construction/reversible/mecha/nkarrdem/action(atom/used_atom, mob/user) + return check_step(used_atom,user) + +/datum/construction/reversible/mecha/nkarrdem/custom_action(index, diff, atom/used_atom, mob/user) + if(!..()) + return FALSE + + switch(index) + if(16) + user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.") + holder.icon_state = "nkarrdem1" + if(15) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.") + holder.icon_state = "nkarrdem2" + else + user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.") + holder.icon_state = "nkarrdem0" + if(14) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].") + holder.icon_state = "nkarrdem3" + else + user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.") + holder.icon_state = "nkarrdem1" + if(13) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].") + holder.icon_state = "nkarrdem4" + else + user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].") + var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder)) + coil.amount = 4 + holder.icon_state = "nkarrdem2" + if(12) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].") + qdel(used_atom) + holder.icon_state = "nkarrdem5" + else + user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].") + holder.icon_state = "nkarrdem3" + if(11) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + holder.icon_state = "nkarrdem6" + else + user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].") + new /obj/item/circuitboard/mecha/nkarrdem/main(get_turf(holder)) + holder.icon_state = "nkarrdem4" + if(10) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].") + qdel(used_atom) + holder.icon_state = "nkarrdem7" + else + user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + holder.icon_state = "nkarrdem5" + if(9) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + holder.icon_state = "nkarrdem8" + else + user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].") + new /obj/item/circuitboard/mecha/nkarrdem/peripherals(get_turf(holder)) + holder.icon_state = "nkarrdem6" + if(8) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] installs a floor buffer into [holder].", "You install a floor buffer into [holder].") + qdel(used_atom) + holder.icon_state = "nkarrdem9" + else + user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "nkarrdem7" + if(7) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] secures a floor buffer into [holder].", "You secure the floor buffer into [holder].") + holder.icon_state = "nkarrdem10" + else + user.visible_message("[user] removes the floor buffer from the [holder].", "You unfasten the floor buffer from the [holder].") + new /obj/item/borg/upgrade/floorbuffer(get_turf(holder)) + holder.icon_state = "nkarrdem8" + if(6) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].") + holder.icon_state = "nkarrdem11" + else + user.visible_message("[user] unfastens the floor buffer.", "You unfasten the floor buffer.") + holder.icon_state = "nkarrdem9" + if(5) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.") + holder.icon_state = "nkarrdem12" + else + user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].") + var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder)) + MS.amount = 5 + holder.icon_state = "nkarrdem10" + if(4) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].") + holder.icon_state = "nkarrdem13" + else + user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + holder.icon_state = "nkarrdem11" + if(3) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] installs [used_atom] layer to the [holder].", "You install the external reinforced armor layer to the [holder].") + + holder.icon_state = "nkarrdem14" + else + user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].") + holder.icon_state = "nkarrdem12" + if(2) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.") + holder.icon_state = "nkarrdem15" + else + var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder)) + MS.amount = 5 + user.visible_message("[user] pries [MS] from the [holder].", "You pry [MS] from the [holder].") + holder.icon_state = "nkarrdem13" + if(1) + if(diff == CONSTRUCTION_PATH_FORWARDS) + user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].") + holder.icon_state = "nkarrdem16" + else + user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") + holder.icon_state = "nkarrdem14" + return TRUE + #undef STANDARD_STACK_AMOUNT diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 6773202fd413..f21c8c915731 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -349,6 +349,44 @@ icon_state = "odysseus_armour" origin_tech = "materials=3;engineering=3")*/ +///////// Nkarrdem +/obj/item/mecha_parts/chassis/nkarrdem + name = "\improper Nkarrdem Chassis" + +/obj/item/mecha_parts/chassis/nkarrdem/New() + ..() + construct = new /datum/construction/mecha/nkarrdem_chassis(src) + +/obj/item/mecha_parts/part/nkarrdem_head + name = "\improper Nkarrdem head" + icon_state = "nkarrdem_head" + +/obj/item/mecha_parts/part/nkarrdem_torso + name = "\improper Nkarrdem torso" + desc = "A torso part of Nkarrdem. Contains power unit, processing core and life support systems." + icon_state = "nkarrdem_harness" + origin_tech = "programming=2;materials=2;biotech=2;engineering=2" + +/obj/item/mecha_parts/part/nkarrdem_left_arm + name = "\improper Nkarrdem left arm" + desc = "A Nkarrdem left arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "nkarrdem_l_arm" + +/obj/item/mecha_parts/part/nkarrdem_right_arm + name = "\improper Nkarrdem right arm" + desc = "A Nkarrdem right arm. Data and power sockets are compatible with most exosuit tools." + icon_state = "nkarrdem_r_arm" + +/obj/item/mecha_parts/part/nkarrdem_left_leg + name = "\improper Nkarrdem left leg" + desc = "A Nkarrdem left leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "nkarrdem_l_leg" + +/obj/item/mecha_parts/part/nkarrdem_right_leg + name = "\improper Nkarrdem right leg" + desc = "A Nkarrdem right leg. Contains somewhat complex servodrives and balance maintaining systems." + icon_state = "nkarrdem_r_leg" + ///////// Circuitboards @@ -373,6 +411,16 @@ board_name = "Ripley Peripherals Control Module" icon_state = "mcontroller" +/obj/item/circuitboard/mecha/nkarrdem + origin_tech = "programming=2" + +/obj/item/circuitboard/mecha/nkarrdem/main + board_name = "Nkarrdem Central Control Module" + icon_state = "mainboard" + +/obj/item/circuitboard/mecha/nkarrdem/peripherals + board_name = "Nkarrdem Peripherals Control Module" + icon_state = "mcontroller" /obj/item/circuitboard/mecha/gygax origin_tech = "programming=4;combat=3;engineering=3" diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index c5e87d3789d0..18938ca20548 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -218,3 +218,15 @@ /obj/item/mecha_parts/part/odysseus_right_arm, /obj/item/mecha_parts/part/odysseus_left_leg, /obj/item/mecha_parts/part/odysseus_right_leg) + +/obj/structure/mecha_wreckage/nkarrdem + name = "\improper Nkarrdem wreckage" + icon_state = "nkarrdem-broken" + parts = list( + /obj/item/mecha_parts/part/nkarrdem_torso, + /obj/item/mecha_parts/part/nkarrdem_head, + /obj/item/mecha_parts/part/nkarrdem_left_arm, + /obj/item/mecha_parts/part/nkarrdem_right_arm, + /obj/item/mecha_parts/part/nkarrdem_left_leg, + /obj/item/mecha_parts/part/nkarrdem_right_leg + ) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 9d4b3ab2dc48..cc12806842f4 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -194,4 +194,4 @@ /mob/living/proc/check_buckled() if(buckled && !(buckled in loc)) - buckled.unbuckle_mob(src, force = TRUE) + unbuckle(force = TRUE) diff --git a/code/game/objects/cleaning.dm b/code/game/objects/cleaning.dm index 5c81fd4b27bb..82c1df319614 100644 --- a/code/game/objects/cleaning.dm +++ b/code/game/objects/cleaning.dm @@ -13,7 +13,9 @@ //Can normally be left alone, but needs to be defined if the thing being cleaned isn't necessarily the thing being clicked on, //such as /obj/effect/rune/cleaning_act() bouncing to turf/simulated/cleaning_act(). -/atom/proc/cleaning_act(mob/user, atom/cleaner, cleanspeed = 5 SECONDS, text_verb = "clean", text_description = " with [cleaner].", text_targetname = name) +// skip_do_after - When TRUE, do after and visible messages are disabled + +/atom/proc/cleaning_act(mob/user, atom/cleaner, cleanspeed = 5 SECONDS, text_verb = "clean", text_description = " with [cleaner].", text_targetname = name, skip_do_after = FALSE) var/is_cmagged = FALSE if(user.client && (src in user.client.screen)) //You can't clean items you're wearing for technical reasons @@ -25,9 +27,10 @@ text_verb = "clean the ooze off" cleanspeed = CMAG_CLEANTIME - user.visible_message("[user] begins to [text_verb] \the [text_targetname][text_description]", "You begin to [text_verb] \the [text_targetname][text_description]") - if(!do_after(user, cleanspeed, target = src)) - return FALSE + if(!skip_do_after) + user.visible_message("[user] begins to [text_verb] \the [text_targetname][text_description]", "You begin to [text_verb] \the [text_targetname][text_description]") + if(!do_after(user, cleanspeed, target = src)) + return FALSE if(!cleaner.can_clean()) cleaner.post_clean(src, user) @@ -35,7 +38,8 @@ cleaner.post_clean(src, user) - to_chat(user, "You [text_verb] \the [text_targetname][text_description]") + if(!skip_do_after) + to_chat(user, "You [text_verb] \the [text_targetname][text_description]") if(is_cmagged) //If we've cleaned a cmagged object REMOVE_TRAIT(src, TRAIT_CMAGGED, CLOWN_EMAG) diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm index 86c1c0c2c730..afc114502d52 100644 --- a/code/game/objects/effects/alien_acid.dm +++ b/code/game/objects/effects/alien_acid.dm @@ -53,7 +53,7 @@ /obj/effect/acid/Crossed(AM as mob|obj) if(isliving(AM)) var/mob/living/L = AM - if(L.flying) + if(HAS_TRAIT(L, TRAIT_FLYING)) return if(L.m_intent != MOVE_INTENT_WALK && prob(40)) var/acid_used = min(acid_level * 0.05, 20) diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index ecc63e2fd6a5..05d1197a40b4 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -51,6 +51,11 @@ countdown.color = countdown_colour countdown.start() + // Only log an anomaly if it drops a core. Prevents logging of SM events and Vetus. + if(drops_core) + message_admins("\A [name] has spawned at [impact_area][ADMIN_COORDJMP(impact_area)]") + log_admin("\A [name] has spawned at [impact_area]") + /obj/effect/anomaly/Destroy() GLOB.poi_list.Remove(src) STOP_PROCESSING(SSobj, src) @@ -82,17 +87,17 @@ if(drops_core) aSignal.forceMove(drop_location()) aSignal = null - // else, anomaly core gets deleted by qdel(src). + // Subtracts the time remaining from lifespan to get defuse time, converts it to seconds + var/defuse_time = round((lifespan - (death_time - world.time)) / 10) + SSblackbox.record_feedback("ledger", "anomaly_defuse_time", "[defuse_time]", "[type]") + // Else, anomaly core gets deleted by qdel(src). qdel(src) - /obj/effect/anomaly/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/analyzer)) to_chat(user, "Analyzing... [src]'s unstable field is fluctuating along frequency [format_frequency(aSignal.frequency)], code [aSignal.code].") -/////////////////////// - /obj/effect/anomaly/grav name = "gravitational anomaly" icon_state = "shield2" @@ -169,8 +174,7 @@ if(T && length(GLOB.gravity_generators["[T.z]"])) var/obj/machinery/gravity_generator/main/G = pick(GLOB.gravity_generators["[T.z]"]) G.set_broken() //Requires engineering to fix the gravity generator, as it gets overloaded by the anomaly. - -///////////////////// + log_and_message_admins("A [name] has detonated a gravity generator") /obj/effect/anomaly/flux name = "flux wave anomaly" @@ -222,12 +226,12 @@ /obj/effect/anomaly/flux/detonate() if(explosive) - explosion(src, 1, 4, 16, 18) //Low devastation, but hits a lot of stuff. + explosion(src, 1, 4, 16, 18, FALSE) // Set adminlog to FALSE for custom logging + message_admins("\A [name] has detonated at [impact_area][ADMIN_COORDJMP(impact_area)]") + log_admin("\A [name] has detonated at [impact_area]") else new /obj/effect/particle_effect/sparks(loc) -///////////////////// - /obj/effect/anomaly/bluespace name = "bluespace anomaly" icon = 'icons/obj/projectiles.dmi' @@ -328,9 +332,6 @@ M.client.screen -= blueeffect qdel(blueeffect) - -///////////////////// - /obj/effect/anomaly/pyro name = "pyroclastic anomaly" icon_state = "mustard" @@ -365,6 +366,9 @@ /obj/effect/anomaly/pyro/detonate() if(produces_slime) INVOKE_ASYNC(src, PROC_REF(makepyroslime)) + if(drops_core) + message_admins("\A [name] has detonated at [impact_area][ADMIN_COORDJMP(impact_area)]") + log_admin("\A [name] has detonated at [impact_area]") /obj/effect/anomaly/pyro/proc/makepyroslime() var/turf/simulated/T = get_turf(src) @@ -391,8 +395,6 @@ dust_if_respawnable(chosen) log_game("[key_name(S.key)] was made into a slime by pyroclastic anomaly at [AREACOORD(T)].") -///////////////////// - /obj/effect/anomaly/cryo name = "cryogenic anomaly" desc = "Hope you brought a jacket!" @@ -466,8 +468,8 @@ air.set_sleeping_agent(3000) air.set_carbon_dioxide(3000) T.blind_release_air(air) - -///////////////////// + message_admins("\A [name] has detonated at [impact_area][ADMIN_COORDJMP(impact_area)]") + log_admin("\A [name] has detonated at [impact_area]") /obj/effect/anomaly/bhole name = "vortex anomaly" diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 1e93d42a1040..152ce009b9e1 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -55,7 +55,7 @@ var/turf/T = get_turf(src) check_gravity(T) - if((T && (T.density)) || !gravity_check || locate(/obj/structure/window/) in T || locate(/obj/structure/grille/) in T) + if(!istype(src, /obj/effect/decal/cleanable/blood/footprints) && ((T && (T.density)) || !gravity_check || locate(/obj/structure/window/full) in T || locate(/obj/structure/grille/) in T)) off_floor = TRUE layer = ABOVE_MOB_LAYER plane = GAME_PLANE diff --git a/code/game/objects/effects/map_effects/mapmanip.dm b/code/game/objects/effects/map_effects/mapmanip.dm new file mode 100644 index 000000000000..d0be4103dd90 --- /dev/null +++ b/code/game/objects/effects/map_effects/mapmanip.dm @@ -0,0 +1,26 @@ +/obj/effect/map_effect/marker/mapmanip + name = "mapmanip marker" + layer = POINT_LAYER + +/obj/effect/map_effect/marker/mapmanip/Initialize(mapload) + . = ..() + qdel(src) + +/obj/effect/map_effect/marker/mapmanip/submap/extract + name = "mapmanip marker, extract submap" + icon = 'icons/effects/map_effects_96x96.dmi' + icon_state = "mapmanip_extract" + pixel_x = -32 + pixel_y = -32 + +/obj/effect/map_effect/marker/mapmanip/submap/insert + name = "mapmanip marker, insert submap" + icon = 'icons/effects/map_effects_96x96.dmi' + icon_state = "mapmanip_insert" + pixel_x = -32 + pixel_y = -32 + +/obj/effect/map_effect/marker_helper/mapmanip/submap/edge + name = "mapmanip helper marker, edge of submap" + icon = 'icons/effects/mapping_helpers.dmi' + icon_state = "mapmanip_submap_edge" diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 08b657be0ed8..756be876e05c 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -16,7 +16,7 @@ var/mob/living/M = AM if(faction && (faction in M.faction)) return - if(M.flying) + if(HAS_TRAIT(M, TRAIT_FLYING)) return triggermine(M) diff --git a/code/game/objects/effects/misc_effects.dm b/code/game/objects/effects/misc_effects.dm index ee56195d173f..bc12b3c7851c 100644 --- a/code/game/objects/effects/misc_effects.dm +++ b/code/game/objects/effects/misc_effects.dm @@ -58,7 +58,7 @@ /obj/effect/shut_controller name = "shut controller" var/moving = null - var/list/parts = list( ) + var/list/parts = list() /obj/structure/showcase name = "Showcase" @@ -86,7 +86,7 @@ name = "mobl" var/master = null - var/list/container = list( ) + var/list/container = list() /obj/structure/showcase/horrific_experiment diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 3513a8827f81..c57228f9fb69 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -60,3 +60,11 @@ ..() pixel_x += rand(-10, 10) pixel_y += rand(-10, 10) + +/// Door overlay for animating closets +/obj/effect/overlay/closet_door + anchored = TRUE + plane = FLOAT_PLANE + layer = FLOAT_LAYER + vis_flags = VIS_INHERIT_ID + appearance_flags = KEEP_TOGETHER | LONG_GLIDE | PIXEL_SCALE diff --git a/code/game/objects/effects/spawners/airlock_spawner.dm b/code/game/objects/effects/spawners/airlock_spawner.dm index cfeea9b4448e..3fa3c557e4b8 100644 --- a/code/game/objects/effects/spawners/airlock_spawner.dm +++ b/code/game/objects/effects/spawners/airlock_spawner.dm @@ -207,14 +207,10 @@ This spawner places pipe leading up to the interior door, you will need to finis // Since airlocks are created first, we steal the payload logic // to apply to the controls later req_access = airlock.req_access - req_access_txt = airlock.req_access_txt req_one_access = airlock.req_one_access - req_one_access_txt = airlock.req_one_access_txt else I.req_access = req_access - I.req_access_txt = req_access_txt I.req_one_access = req_one_access - I.req_one_access_txt = req_one_access_txt // MARK: AIRLOCK HELPERS diff --git a/code/game/objects/effects/spawners/decorative_spawners.dm b/code/game/objects/effects/spawners/decorative_spawners.dm index 7b200d627308..c01caca049a5 100644 --- a/code/game/objects/effects/spawners/decorative_spawners.dm +++ b/code/game/objects/effects/spawners/decorative_spawners.dm @@ -112,20 +112,3 @@ result = list( /datum/nothing = 7, /obj/effect/decal/cleanable/dirt = 1) - -/obj/effect/spawner/random_spawners/fungus_maybe - name = "fungus maybe" - icon_state = "fungus" - color = "#D5820B" - result = list( - /datum/nothing = 7, - /obj/effect/decal/cleanable/fungus = 1) - -/obj/effect/spawner/random_spawners/fungus_probably - name = "fungus probably" - icon_state = "fungus" - color = "#D5820B" - result = list( - /datum/nothing = 1, - /obj/effect/decal/cleanable/fungus = 7) - diff --git a/code/game/objects/effects/spawners/depot_spawners.dm b/code/game/objects/effects/spawners/depot_spawners.dm index 49742158d155..e2e380831927 100644 --- a/code/game/objects/effects/spawners/depot_spawners.dm +++ b/code/game/objects/effects/spawners/depot_spawners.dm @@ -37,14 +37,14 @@ name = "33pc trap pizza" icon_state = "pizzabox" loot = list( - /obj/item/pizzabox/pepperoni = 7, // Higher weight as a pizza bomb looks like pepperoni by default - /obj/item/pizzabox/pizza_bomb/autoarm = 7, + /obj/item/pizzabox/pizza_bomb/autoarm = 4, /obj/item/pizzabox/firecracker = 1, /obj/item/pizzabox/garlic = 1, /obj/item/pizzabox/hawaiian = 1, /obj/item/pizzabox/margherita = 1, /obj/item/pizzabox/meat = 1, /obj/item/pizzabox/mushroom = 1, + /obj/item/pizzabox/pepperoni = 1, /obj/item/pizzabox/vegetable = 1, ) @@ -58,12 +58,16 @@ /obj/effect/spawner/random/syndicate/trapped_documents name = "50pc trapped documents" icon_state = "folder" + spawn_inside = /obj/structure/closet/secure_closet/syndicate/depot loot = list( /obj/item/documents/syndicate/yellow, /obj/item/documents/syndicate/yellow/trapped, ) // Loot +/obj/effect/spawner/random/syndicate/loot + spawn_inside = /obj/structure/closet/secure_closet/syndicate/depot + /obj/effect/spawner/random/syndicate/loot/common name = "syndicate depot loot, common" icon_state = "loot" @@ -87,6 +91,7 @@ /obj/effect/spawner/random/syndicate/loot/stetchkin name = "syndicate depot loot, 20pct stetchkin" icon_state = "stetchkin" + spawn_inside = null spawn_loot_chance = 80 loot = list( /obj/item/gun/projectile/automatic/pistol, @@ -155,6 +160,7 @@ /obj/effect/spawner/random/syndicate/loot/armory name = "syndicate depot loot, armory" + spawn_inside = /obj/structure/closet/secure_closet/syndicate/depot/armory // Combat orientated items that could give the player an advantage if an antag messes with them. loot = list( /obj/item/autosurgeon/organ/syndicate/oneuse/razorwire, @@ -167,6 +173,7 @@ /obj/item/shield/energy, /obj/item/storage/box/syndie_kit/teleporter, /obj/item/weaponcrafting/gunkit/universal_gun_kit, + /obj/item/mod/control/pre_equipped/traitor_elite ) // Layout-affecting spawns diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 0daaeef79308..ee32405e0680 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -272,7 +272,7 @@ /obj/item/melee/baseball_bat/homerun = 50, /obj/item/rcd/combat = 50, /obj/item/weaponcrafting/gunkit/universal_gun_kit/sol_gov = 50, - /obj/item/storage/box/buck = 30, //Only seven shots, make them count + /obj/item/storage/fancy/shell/buck = 30, //Only eight shots, make them count /obj/item/mod/module/noslip = 40, /obj/item/clothing/mask/holo_cigar = 50 ) @@ -389,7 +389,7 @@ /obj/item/mod/construction/plating/research = 30, /obj/item/assembly/signaler/anomaly/random = 20, /obj/item/gun/energy/gun = 50, - /obj/item/storage/box/dragonsbreath = 30, + /obj/item/storage/fancy/shell/dragonsbreath = 30, /obj/item/storage/box/turbine_kit = 20, /obj/item/mod/module/firefighting_tank = 40, /obj/item/mod/module/jetpack/advanced = 40 diff --git a/code/game/objects/effects/spawners/random/furniture_spawners.dm b/code/game/objects/effects/spawners/random/furniture_spawners.dm new file mode 100644 index 000000000000..f5c41a3e050b --- /dev/null +++ b/code/game/objects/effects/spawners/random/furniture_spawners.dm @@ -0,0 +1,18 @@ +/obj/effect/spawner/random/storage + name = "storage furniture spawner" + icon = 'icons/effects/random_spawners.dmi' + icon_state = "shelf" + layer = BELOW_OBJ_LAYER + loot = list( + list( + /obj/structure/shelf = 10, + /obj/structure/shelf/command, + /obj/structure/shelf/engineering, + /obj/structure/shelf/medbay, + /obj/structure/shelf/science, + /obj/structure/shelf/security, + /obj/structure/shelf/service, + /obj/structure/shelf/supply, + ), + /obj/structure/rack, + ) diff --git a/code/game/objects/effects/spawners/random/random_spawner.dm b/code/game/objects/effects/spawners/random/random_spawner.dm index 880454842f71..1120de174df5 100644 --- a/code/game/objects/effects/spawners/random/random_spawner.dm +++ b/code/game/objects/effects/spawners/random/random_spawner.dm @@ -35,6 +35,8 @@ var/spawn_random_angle = FALSE /// Whether blackbox should record when the spawner spawns. var/record_spawn = FALSE + /// Where do we want to spawn an item (closet, safe etc.) + var/spawn_inside // Brief explanation: // Rather then setting up and then deleting spawners, we block all atomlike setup @@ -57,6 +59,9 @@ var/list/spawn_locations = get_spawn_locations(spawn_scatter_radius) var/spawn_loot_count = isnull(lootcount_override) ? src.spawn_loot_count : lootcount_override + if(spawn_inside) + new spawn_inside(loc) + if(spawn_all_loot) spawn_loot_count = INFINITY spawn_loot_double = FALSE @@ -71,6 +76,8 @@ var/loot_spawned = 0 var/pixel_divider = FLOOR(spawn_random_offset_max_pixels / spawn_loot_split_pixel_offsets, 1) while((spawn_loot_count-loot_spawned) && length(loot)) + loot_spawned++ + var/lootspawn = pick_weight_recursive(loot) if(!spawn_loot_double) loot.Remove(lootspawn) @@ -79,6 +86,10 @@ if(spawn_scatter_radius > 0 && length(spawn_locations)) spawn_loc = pick(spawn_locations) + if(ispath(lootspawn, /turf)) + spawn_loc.ChangeTurf(lootspawn) + continue + var/atom/movable/spawned_loot = make_item(spawn_loc, lootspawn) spawned_loot.setDir(dir) @@ -95,7 +106,6 @@ var/column = FLOOR(loot_spawned / pixel_divider, 1) spawned_loot.pixel_x = spawn_loot_split_pixel_offsets * (loot_spawned % pixel_divider) + (column * spawn_loot_split_pixel_offsets) spawned_loot.pixel_y = spawn_loot_split_pixel_offsets * (loot_spawned % pixel_divider) - loot_spawned++ /** * Makes the actual item related to our spawner. If `record_spawn` is `TRUE`, diff --git a/code/game/objects/effects/spawners/random/trash_spawners.dm b/code/game/objects/effects/spawners/random/trash_spawners.dm index bc15b76c47d0..6fc25c65a82d 100644 --- a/code/game/objects/effects/spawners/random/trash_spawners.dm +++ b/code/game/objects/effects/spawners/random/trash_spawners.dm @@ -58,8 +58,16 @@ // Ammo casings rarely list( - /obj/item/ammo_casing/c10mm, - /obj/item/trash/spentcasing, + /obj/item/trash/spentcasing/shotgun, + /obj/item/trash/spentcasing/shotgun/rubbershot, + /obj/item/trash/spentcasing/shotgun/beanbag, + /obj/item/trash/spentcasing/shotgun/slug, + /obj/item/trash/spentcasing/shotgun/dragonsbreath, + /obj/item/trash/spentcasing/shotgun/stun, + /obj/item/trash/spentcasing/bullet, + /obj/item/trash/spentcasing/bullet/medium, + /obj/item/trash/spentcasing/bullet/large, + /obj/item/trash/spentcasing/bullet/lasershot ) = 1, ) diff --git a/code/game/objects/effects/spawners/random/wall_decal_spawners.dm b/code/game/objects/effects/spawners/random/wall_decal_spawners.dm new file mode 100644 index 000000000000..20e586a82aad --- /dev/null +++ b/code/game/objects/effects/spawners/random/wall_decal_spawners.dm @@ -0,0 +1,13 @@ +/obj/effect/spawner/random/fungus + icon_state = "fungus" + color = "#D5820B" + loot = list(/obj/effect/decal/cleanable/fungus) + +/obj/effect/spawner/random/fungus/maybe + spawn_loot_chance = 15 + +/obj/effect/spawner/random/fungus/frequent + spawn_loot_chance = 50 + +/obj/effect/spawner/random/fungus/probably + spawn_loot_chance = 85 diff --git a/code/game/objects/effects/spawners/random_barrier.dm b/code/game/objects/effects/spawners/random_barrier.dm index 385b0c38ace4..0843419470d1 100644 --- a/code/game/objects/effects/spawners/random_barrier.dm +++ b/code/game/objects/effects/spawners/random_barrier.dm @@ -1,72 +1,58 @@ -/obj/effect/spawner/random_barrier - name = "random tile" - icon = 'icons/effects/spawner_icons.dmi' - icon_state = "questionmark" - var/list/result = list( - /turf/simulated/floor/plasteel = 1, - /turf/simulated/wall = 1, - /obj/structure/falsewall = 1, - /obj/effect/spawner/window/reinforced = 1, - /obj/machinery/door/airlock = 1, - /obj/machinery/door/airlock/welded = 1, - /obj/structure/barricade/wooden = 1) - -// This needs to come before the initialization wave because -// the thing it creates might need to be initialized too -/obj/effect/spawner/random_barrier/Initialize() - . = ..() - var/turf/T = get_turf(src) - if(!T) - CRASH("Barrier spawner placed in nullspace!") - var/thing_to_place = pickweight(result) - if(ispath(thing_to_place, /turf)) - T.ChangeTurf(thing_to_place) - else - new thing_to_place(T) - return INITIALIZE_HINT_QDEL +/obj/effect/spawner/random/barrier + name = "random barrier spawner" + icon = 'icons/effects/random_spawners.dmi' + icon_state = "barrier" + loot = list( + /obj/effect/spawner/window/reinforced, + /obj/machinery/door/airlock, + /obj/machinery/door/airlock/welded, + /obj/structure/barricade/wooden, + /obj/structure/falsewall, + /turf/simulated/floor/plasteel, + /turf/simulated/wall, + ) -/obj/effect/spawner/random_barrier/wall_probably +/obj/effect/spawner/random/barrier/wall_probably name = "probably a wall" - icon_state = "girder" - result = list( - /turf/simulated/wall = 9, - /obj/structure/falsewall = 1) - -/obj/effect/spawner/random_barrier/floor_probably - name = "probably a floor" - result = list( - /turf/simulated/floor/plasteel = 3, - /turf/simulated/wall = 1) + icon_state = "wall" + loot = list( + /obj/structure/falsewall = 1, + /turf/simulated/wall = 9, + ) -/obj/effect/spawner/random_barrier/obstruction +/obj/effect/spawner/random/barrier/obstruction name = "obstruction" icon_state = "barrier" - result = list( - /turf/simulated/wall = 1, - /obj/structure/falsewall = 1, - /obj/structure/barricade/wooden = 1, - /obj/machinery/door/airlock/welded = 1) + loot = list( + /obj/machinery/door/airlock/welded, + /obj/structure/barricade/wooden, + /obj/structure/falsewall, + /turf/simulated/wall, + ) /// these have no access restrictions, so for internal maintenance only -/obj/effect/spawner/random_barrier/possibly_welded_airlock +/obj/effect/spawner/random/barrier/possibly_welded_airlock name = "possibly welded airlock" icon_state = "airlock" - result = list( - /obj/machinery/door/airlock = 3, - /obj/machinery/door/airlock/welded = 1) + loot = list( + /obj/machinery/door/airlock = 3, + /obj/machinery/door/airlock/welded = 1, + ) -/obj/effect/spawner/random_spawners/grille_often +/obj/effect/spawner/random/barrier/grille_often name = "grille often" icon_state = "grille" - result = list( - /obj/structure/grille = 8, - /obj/structure/grille/broken = 4, - /turf/simulated/floor/plating = 2) + loot = list( + /obj/structure/grille = 8, + /obj/structure/grille/broken = 4, + /turf/simulated/floor/plating = 2, + ) -/obj/effect/spawner/random_spawners/grille_maybe +/obj/effect/spawner/random/barrier/grille_maybe name = "grille maybe" icon_state = "grille" - result = list( - /obj/structure/grille = 2, - /obj/structure/grille/broken = 2, - /turf/simulated/floor/plating = 5) + loot = list( + /obj/structure/grille = 2, + /obj/structure/grille/broken = 2, + /turf/simulated/floor/plating = 5, + ) diff --git a/code/game/objects/effects/temporary_visuals/misc_visuals.dm b/code/game/objects/effects/temporary_visuals/misc_visuals.dm index 77cdaa73bf46..f06a632c2957 100644 --- a/code/game/objects/effects/temporary_visuals/misc_visuals.dm +++ b/code/game/objects/effects/temporary_visuals/misc_visuals.dm @@ -520,3 +520,20 @@ icon = 'icons/effects/96x96.dmi' icon_state = "warning" duration = 3 SECONDS + +/obj/effect/temp_visual/bsa_splash + name = "\improper Bluespace energy wave" + desc = "A massive, rippling wave of bluepace energy, all rapidly exhausting itself the moment it leaves the concentrated beam of light." + icon = 'icons/effects/beam_splash.dmi' + icon_state = "beam_splash_l" + layer = ABOVE_ALL_MOB_LAYER + pixel_y = -16 + duration = 50 + +/obj/effect/temp_visual/bsa_splash/Initialize(mapload, dir) + . = ..() + switch(dir) + if(WEST) + icon_state = "beam_splash_w" + if(EAST) + icon_state = "beam_splash_e" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 2789b031739f..399f4791ae3a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1022,7 +1022,7 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons if(!istype(cig)) return null - if(user.zone_selected != "mouth" || !user.a_intent == INTENT_HELP) + if(!direct_attackby_item && (user.zone_selected != "mouth" || user.a_intent != INTENT_HELP)) return null if(cig.lit) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 12341795b450..68bb083c199d 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -16,9 +16,9 @@ name = "body bag" desc = "A plastic bag designed for the storage and transportation of cadavers." icon = 'icons/obj/bodybag.dmi' - icon_state = "bodybag_closed" - icon_closed = "bodybag_closed" - icon_opened = "bodybag_open" + icon_state = "bodybag" + enable_door_overlay = FALSE + door_anim_time = 0 density = FALSE integrity_failure = 0 open_sound = 'sound/items/zip.ogg' @@ -27,7 +27,6 @@ close_sound_volume = 15 var/item_path = /obj/item/bodybag - /obj/structure/closet/body_bag/attackby(obj/item/I, mob/user, params) if(is_pen(I)) var/t = rename_interactive(user, I) @@ -54,7 +53,7 @@ return FALSE /obj/structure/closet/body_bag/update_overlays() - ..() + . = ..() if(name != initial(name)) . += "bodybag_label" diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 107beb353738..13fb3a5cf097 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -359,6 +359,9 @@ attackee.lip_color = colour attackee.update_body() + play_spray_sound(user) + +/obj/item/toy/crayon/spraycan/proc/play_spray_sound(mob/user) playsound(user, 'sound/effects/spray.ogg', 5, TRUE, 5) /obj/item/toy/crayon/spraycan/update_icon_state() diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 8ac39ab3c0ed..604a8f0e13d5 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -345,7 +345,7 @@ name = "glowing slime extract" desc = "A glowing ball of what appears to be amber." icon = 'icons/obj/lighting.dmi' - icon_state = "floor1" //not a slime extract sprite but... something close enough! + icon_state = "slime-on" item_state = "slime" w_class = WEIGHT_CLASS_TINY brightness_on = 6 diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 30a73ab0ad11..7dac6e3640e0 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -31,13 +31,6 @@ // access to them, and only one of them can emag their device. // // The explosion cannot insta-kill anyone with 30% or more health. - -#define LIGHT_OK 0 -#define LIGHT_EMPTY 1 -#define LIGHT_BROKEN 2 -#define LIGHT_BURNED 3 - - /obj/item/lightreplacer name = "light replacer" desc = "A device to automatically replace lights. Refill with broken or working light bulbs, or sheets of glass." @@ -198,21 +191,10 @@ if(CanUse(U)) if(!Use(U)) return - to_chat(U, "You replace the light [target.fitting] with [src].") - if(target.status != LIGHT_EMPTY) AddShards(1, U) target.status = LIGHT_EMPTY - - var/obj/item/light/replacement = target.light_type - target.status = LIGHT_OK - target.switchcount = 0 - target.rigged = emagged - target.brightness_range = initial(replacement.brightness_range) - target.brightness_power = initial(replacement.brightness_power) - target.brightness_color = initial(replacement.brightness_color) - target.on = target.has_power() - target.update(TRUE, TRUE, FALSE) + target.fix(U, src, emagged) else to_chat(U, "[src]'s refill light blinks red.") @@ -270,8 +252,3 @@ /obj/item/lightreplacer/bluespace/emag_act() return // long range explosions are stupid - -#undef LIGHT_OK -#undef LIGHT_EMPTY -#undef LIGHT_BROKEN -#undef LIGHT_BURNED diff --git a/code/game/objects/items/devices/painter/floor_painter.dm b/code/game/objects/items/devices/painter/floor_painter.dm index 6d796aebc37d..206500d4a182 100644 --- a/code/game/objects/items/devices/painter/floor_painter.dm +++ b/code/game/objects/items/devices/painter/floor_painter.dm @@ -4,7 +4,7 @@ module_name = "floor painter" module_state = "floor_painter" - var/floor_icon + var/floor_icon = 'icons/turf/floors.dmi' var/floor_state = "floor" var/floor_dir = SOUTH @@ -21,23 +21,6 @@ "darkred", "darkredcorners", "darkredfull", "darkblue", "darkbluecorners", "darkbluefull", "darkgreen", "darkgreencorners", "darkgreenfull", "darkyellow", "darkyellowcorners", "darkyellowfull", "darkbrown", "darkbrowncorners", "darkbrownfull") - // This is a double-list. First entry is the type key, second is the direction, with the final value being the b64 of the icon - var/static/list/lookup_cache = list() - -/datum/painter/floor/New(obj/item/painter/parent_painter) - . = ..() - if(!length(lookup_cache)) - for(var/style in allowed_states) - if(!(style in lookup_cache)) - lookup_cache += style - lookup_cache[style] = list() - - for(var/dir in GLOB.alldirs) - var/icon/floor_icon = icon('modular_ss220/aesthetics/floors/icons/floors.dmi', style, dir) // SS220 EDIT - // These indexes have to be strings otherwise it treats it as a list index not a map lookup index - lookup_cache[style] += "[dir]" - lookup_cache[style]["[dir]"] = icon2base64(floor_icon) - /datum/painter/floor/paint_atom(atom/target, mob/user) if(!istype(target, /turf/simulated/floor/plasteel)) to_chat(user, "[holder] can only be used on station flooring.") @@ -65,31 +48,20 @@ ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "FloorPainter", module_name) - // Disable automatic updates, because: - // 1) we are the only user of the item, and don't expect to observe external changes - // 2) generating and sending the icon each tick is a bit expensive, and creates small but noticeable lag + // Disable automatic updates, because we are the only user of the item, and don't expect to observe external changes ui.set_autoupdate(FALSE) ui.open() /datum/painter/floor/ui_data(mob/user) var/list/data = list() - data["availableStyles"] = allowed_states data["selectedStyle"] = floor_state - data["selectedDir"] = dir2text(floor_dir) - - data["directionsPreview"] = list() - for(var/dir in GLOB.alldirs) - data["directionsPreview"][dir2text(dir)] = lookup_cache[floor_state]["[dir]"] - + data["selectedDir"] = floor_dir return data - /datum/painter/floor/ui_static_data(mob/user) var/list/data = list() - data["allStylesPreview"] = list() - for(var/style in allowed_states) - data["allStylesPreview"][style] = lookup_cache[style]["[SOUTH]"] - + data["icon"] = floor_icon + data["availableStyles"] = allowed_states return data /datum/painter/floor/ui_act(action, params) @@ -111,7 +83,7 @@ floor_state = allowed_states[index] if(action == "select_direction") - var/dir = text2dir(params["direction"]) + var/dir = params["direction"] if(dir != 0) floor_dir = dir diff --git a/code/game/objects/items/devices/painter/pipe_painter.dm b/code/game/objects/items/devices/painter/pipe_painter.dm index 879533899fb6..85770060657d 100644 --- a/code/game/objects/items/devices/painter/pipe_painter.dm +++ b/code/game/objects/items/devices/painter/pipe_painter.dm @@ -7,7 +7,7 @@ /datum/painter/pipe/New() ..() if(!length(modes)) - for(var/C in GLOB.pipe_colors) + for(var/C in GLOB.pipe_icon_manager.pipe_colors) modes += "[C]" paint_setting = pick(modes) @@ -25,7 +25,7 @@ if(is_type_in_list(P, blacklisted_pipes)) return - if(P.pipe_color == GLOB.pipe_colors[paint_setting]) + if(P.pipe_color == GLOB.pipe_icon_manager.pipe_colors[paint_setting]) to_chat(user, "This pipe is aready painted [paint_setting]!") return @@ -34,5 +34,5 @@ to_chat(user, "You must remove the flooring first.") return - P.change_color(GLOB.pipe_colors[paint_setting]) + P.change_color(GLOB.pipe_icon_manager.pipe_colors[paint_setting]) return TRUE diff --git a/code/game/objects/items/devices/painter/window_painter.dm b/code/game/objects/items/devices/painter/window_painter.dm index 92671f7fc71b..20ddaf7d78b1 100644 --- a/code/game/objects/items/devices/painter/window_painter.dm +++ b/code/game/objects/items/devices/painter/window_painter.dm @@ -20,17 +20,17 @@ var/obj/structure/window/W = target if(is_type_in_list(target, polarized_windows)) - if((W.opacity && W.old_color == GLOB.pipe_colors[paint_setting]) || (!W.opacity && W.color == GLOB.pipe_colors[paint_setting])) + if((W.opacity && W.old_color == GLOB.pipe_icon_manager.pipe_colors[paint_setting]) || (!W.opacity && W.color == GLOB.pipe_icon_manager.pipe_colors[paint_setting])) to_chat(user, "This window is aready painted [paint_setting]!") return if(!W.opacity) - W.color = GLOB.pipe_colors[paint_setting] - W.old_color = GLOB.pipe_colors[paint_setting] + W.color = GLOB.pipe_icon_manager.pipe_colors[paint_setting] + W.old_color = GLOB.pipe_icon_manager.pipe_colors[paint_setting] return TRUE - if(W.color == GLOB.pipe_colors[paint_setting]) + if(W.color == GLOB.pipe_icon_manager.pipe_colors[paint_setting]) to_chat(user, "This window is aready painted [paint_setting]!") return - W.color = GLOB.pipe_colors[paint_setting] + W.color = GLOB.pipe_icon_manager.pipe_colors[paint_setting] return TRUE diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 498e3c41aba1..b09a7739b99a 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -15,6 +15,7 @@ var/syndicate = FALSE var/area_bypass = FALSE var/cc_beacon = FALSE //set if allowed to teleport to even if on zlevel2 + var/wormhole_weaver = FALSE // special beacons for wormwhole weaver /obj/item/beacon/Initialize() . = ..() @@ -169,3 +170,9 @@ /obj/item/beacon/engine/sing name = "Engine Beacon for Singularity" enginetype = list(ENGTYPE_SING) + +/obj/item/beacon/wormhole_weaver + name = "prototype beacon" + desc = "A beacon used by a prototype wormhole device." + wormhole_weaver = TRUE + icon_state = "beacon_wormhole_weaver" diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 642e3f497f2c..ea8dac2bb266 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -346,7 +346,7 @@ /obj/item/radio/headset/ert/alt name = "emergency response team's bowman headset" - desc = "The headset of the boss. Protects ears from flashbangs." + desc = "An ergonomic tactical headset used by Nanotrasen-affiliated PMCs. Protects against loud noises." flags = EARBANGPROTECT icon_state = "com_headset_alt" item_state = "com_headset_alt" diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 463a69a18d3c..6feda858d4c8 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -116,10 +116,11 @@ /obj/item/taperecorder/AltClick(mob/user) if(in_range(user, src) && mytape && !HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) - var/list/options = list( "Playback Tape" = image(icon = 'icons/obj/device.dmi', icon_state = "taperecorder_playing"), - "Print Transcript" = image(icon = 'icons/obj/bureaucracy.dmi', icon_state = "paper_words"), - "Eject Tape" = image(icon = 'icons/obj/device.dmi', icon_state = "[mytape.icon_state]") - ) + var/list/options = list( + "Playback Tape" = image(icon = 'icons/obj/device.dmi', icon_state = "taperecorder_playing"), + "Print Transcript" = image(icon = 'icons/obj/bureaucracy.dmi', icon_state = "paper_words"), + "Eject Tape" = image(icon = 'icons/obj/device.dmi', icon_state = "[mytape.icon_state]") + ) var/choice = show_radial_menu(user, src, options) if(user.incapacitated()) return diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 5fc6a3614cf9..2b279b5a781b 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -108,15 +108,20 @@ if(!charges && !EMP_D) //If it's empd, you are moving no matter what. to_chat(user, "[src] is still recharging.") return - + var/turf/starting = get_turf(src) + var/area/starting_area = get_area(starting) + if(!is_teleport_allowed(starting.z) || starting_area.tele_proof) + to_chat(user, "[src] will not work here!") + return var/mob/living/M = user var/turf/mobloc = get_turf(M) var/list/turfs = list() var/found_turf = FALSE var/list/bagholding = user.search_contents_for(/obj/item/storage/backpack/holding) for(var/turf/T in range(user, tp_range)) - if(!is_teleport_allowed(T.z)) - break + var/area/dropping_area = get_area(T) + if(dropping_area.tele_proof) //There might be some valid turfs before / after you reach such an area, so we continue, not break. + continue if(!(length(bagholding) && !flawless)) //Chaos if you have a bag of holding if(get_dir(M, T) != M.dir) continue @@ -316,7 +321,7 @@ if(used) to_chat(user, "The injector is empty!") return - used = TRUE + used = TRUE to_chat(user, "You inject yourself with the enhancer!") ADD_TRAIT(user, TRAIT_DRASK_SUPERCOOL, "cryoregenerative_enhancer") diff --git a/code/game/objects/items/mountable_frames/frames.dm b/code/game/objects/items/mountable_frames/frames.dm index 5823064a91a1..6da3982e04d1 100644 --- a/code/game/objects/items/mountable_frames/frames.dm +++ b/code/game/objects/items/mountable_frames/frames.dm @@ -22,15 +22,15 @@ /obj/item/mounted/frame/try_build(turf/on_wall, mob/user) if(!..()) - return + return FALSE var/turf/build_turf = get_turf(user) if((mount_requirements & MOUNTED_FRAME_SIMFLOOR) && !isfloorturf(build_turf)) to_chat(user, "[src] cannot be placed on this spot.") - return + return FALSE if(mount_requirements & MOUNTED_FRAME_NOSPACE) var/area/my_area = get_area(build_turf) if(!istype(my_area) || !my_area.requires_power || isspacearea(my_area)) to_chat(user, "[src] cannot be placed in this area.") - return + return FALSE return TRUE diff --git a/code/game/objects/items/mountable_frames/light_frames.dm b/code/game/objects/items/mountable_frames/light_frames.dm index 7d31cf49a249..ab59c8c29521 100644 --- a/code/game/objects/items/mountable_frames/light_frames.dm +++ b/code/game/objects/items/mountable_frames/light_frames.dm @@ -22,6 +22,8 @@ newlight = new /obj/machinery/light_construct/small(constrloc) if("tube") newlight = new /obj/machinery/light_construct(constrloc) + if("floor") + newlight = new /obj/machinery/light_construct/floor(on_wall) else newlight = new /obj/machinery/light_construct/small(constrloc) newlight.dir = constrdir @@ -40,3 +42,13 @@ icon_state = "bulb-construct-item" fixture_type = "bulb" metal_sheets_refunded = 1 + +/obj/item/mounted/frame/light_fixture/floor + name = "floor light fixture frame" + desc = "Used for building floor lights." + icon = 'icons/obj/lighting.dmi' + icon_state = "floor-construct-item" + fixture_type = "floor" + metal_sheets_refunded = 3 + buildon_types = list(/turf/simulated/floor) + allow_floor_mounting = TRUE diff --git a/code/game/objects/items/mountable_frames/mountables.dm b/code/game/objects/items/mountable_frames/mountables.dm index c850bb5b6e9d..31fa665a51b5 100644 --- a/code/game/objects/items/mountable_frames/mountables.dm +++ b/code/game/objects/items/mountable_frames/mountables.dm @@ -3,35 +3,31 @@ /turf/simulated/mineral/ancient, /turf/simulated/wall ) + var/allow_floor_mounting = FALSE /obj/item/mounted/afterattack(atom/A, mob/user, proximity_flag) - var/found_type = 0 - for(var/turf_type in src.buildon_types) - if(istype(A, turf_type)) - found_type = 1 - break - - if(found_type) + if(is_type_in_list(A, buildon_types)) if(try_build(A, user, proximity_flag)) return do_build(A, user) - else - ..() + ..() /obj/item/mounted/proc/try_build(turf/on_wall, mob/user, proximity_flag) //checks if(!on_wall || !user) - return - if(proximity_flag != 1) //if we aren't next to the wall - return - if(!( get_dir(on_wall,user) in GLOB.cardinal)) - to_chat(user, "You need to be standing next to a wall to place \the [src].") - return + return FALSE + if(!proximity_flag) //if we aren't next to the turf + return FALSE + + if(!allow_floor_mounting) + if(!(get_dir(on_wall, user) in GLOB.cardinal)) + to_chat(user, "You need to be standing next to [on_wall] to place [src].") + return FALSE - if(gotwallitem(get_turf(user), get_dir(on_wall,user))) - to_chat(user, "There's already an item on this wall!") - return + if(gotwallitem(get_turf(user), get_dir(user, on_wall))) + to_chat(user, "There's already an item on this wall!") + return FALSE - return 1 + return TRUE /obj/item/mounted/proc/do_build(turf/on_wall, mob/user) //the buildy bit after we pass the checks return diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 777564380bfe..75748a9dc986 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -17,6 +17,10 @@ var/list/items_to_add = list() /// A list of replacement items will need to be placed into a cyborg module's `special_rechargable` list after this upgrade is installed. var/list/special_rechargables = list() + /// Allow the same upgrade to be installed multiple times, FALSE by default + var/allow_duplicate = FALSE + /// Delete the module after installing it. For deleting upgrades that might be installed multiple times, like the rename/reset upgrades. + var/delete_after_install = FALSE /** * Called when someone clicks on a borg with an upgrade in their hand. @@ -24,12 +28,19 @@ * Arguments: * * R - the cyborg that was clicked on with an upgrade. */ -/obj/item/borg/upgrade/proc/action(mob/living/silicon/robot/R) - if(!pre_install_checks(R)) +/obj/item/borg/upgrade/proc/action(mob/user, mob/living/silicon/robot/R) + if(!pre_install_checks(user, R)) return + if(!user.drop_item()) + to_chat(user, "\The [src] is stuck to your hand, you cannot install it in [R]") + return FALSE if(!do_install(R)) return after_install(R) + if(delete_after_install) + qdel(src) + else + forceMove(R) return TRUE /** @@ -38,13 +49,17 @@ * Arguments: * * R - the cyborg that was clicked on with an upgrade. */ -/obj/item/borg/upgrade/proc/pre_install_checks(mob/living/silicon/robot/R) +/obj/item/borg/upgrade/proc/pre_install_checks(mob/user, mob/living/silicon/robot/R) if(R.stat == DEAD) - to_chat(usr, "[src] will not function on a deceased cyborg.") + to_chat(user, "[src] will not function on a deceased cyborg.") return if(module_type && !istype(R.module, module_type)) - to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") - to_chat(usr, "There's no mounting point for the module!") + to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") + to_chat(user, "There's no mounting point for the module!") + return + var/obj/item/borg/upgrade/u = locate(type) in R + if(u && !allow_duplicate) + to_chat(user, "This unit already has [src] installed!") return return TRUE @@ -89,6 +104,7 @@ desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the cyborg." icon_state = "cyborg_upgrade1" require_module = TRUE + delete_after_install = TRUE /obj/item/borg/upgrade/reset/do_install(mob/living/silicon/robot/R) R.reset_module() @@ -101,6 +117,7 @@ name = "cyborg reclassification board" desc = "Used to rename a cyborg." icon_state = "cyborg_upgrade1" + delete_after_install = TRUE var/heldname = "default name" /obj/item/borg/upgrade/rename/attack_self(mob/user) @@ -125,6 +142,7 @@ name = "cyborg emergency reboot module" desc = "Used to force a reboot of a disabled-but-repaired cyborg, bringing it back online." icon_state = "cyborg_upgrade1" + delete_after_install = TRUE /obj/item/borg/upgrade/restart/do_install(mob/living/silicon/robot/R) if(R.health < 0) @@ -150,10 +168,6 @@ origin_tech = "engineering=4;powerstorage=4" /obj/item/borg/upgrade/thrusters/do_install(mob/living/silicon/robot/R) - if(R.ionpulse) - to_chat(usr, "This unit already has ion thrusters installed!") - return - R.ionpulse = TRUE return TRUE @@ -170,11 +184,6 @@ var/mob/living/silicon/robot/cyborg /obj/item/borg/upgrade/selfrepair/do_install(mob/living/silicon/robot/R) - var/obj/item/borg/upgrade/selfrepair/U = locate() in R - if(U) - to_chat(usr, "This unit is already equipped with a self-repair module.") - return - cyborg = R icon_state = "selfrepair_off" var/datum/action/A = new /datum/action/item_action/toggle(src) @@ -259,11 +268,6 @@ origin_tech = "engineering=4;materials=5;programming=4" /obj/item/borg/upgrade/vtec/do_install(mob/living/silicon/robot/R) - for(var/obj/item/borg/upgrade/vtec/U in R.contents) - to_chat(R, "A VTEC unit is already installed!") - to_chat(usr, "There's no room for another VTEC unit!") - return - R.slowdown_cap = 3.5 return TRUE @@ -376,10 +380,6 @@ var/mob/living/silicon/robot/cyborg /obj/item/borg/upgrade/floorbuffer/do_install(mob/living/silicon/robot/R) - for(var/obj/item/borg/upgrade/floorbuffer/U in R) - to_chat(R, "A floor buffer unit is already installed!") - to_chat(usr, "There's no room for another floor buffer unit!") - return cyborg = R var/datum/action/A = new /datum/action/item_action/floor_buffer(src) A.Grant(R) diff --git a/code/game/objects/items/salvage.dm b/code/game/objects/items/salvage.dm index 67152ab26597..a4903a6cb2ac 100644 --- a/code/game/objects/items/salvage.dm +++ b/code/game/objects/items/salvage.dm @@ -27,7 +27,7 @@ icon_state = "barrel" color = "#7e5c00" // So that it's slightly different from normal kegs -/obj/item/salvage/ruin/russian +/obj/item/salvage/ruin/soviet name = "armaments cache" desc = "A crate of old disused Belastrav ballistic firearms that have been weathered into uselessness. They still may be of value to collectors, however." icon_state = "weapon_crate" @@ -85,7 +85,7 @@ pickup_sound = 'sound/items/handling/taperecorder_pickup.ogg' drop_sound = 'sound/items/handling/taperecorder_drop.ogg' -/obj/item/salvage/loot/russian +/obj/item/salvage/loot/soviet name = "\improper Cygni manifesto" desc = "A small book, written in Neo-Russkyia, detailing the manifesto of Malfoy Ames, father of The Cygni Rebellion. Banned in Federation space, it may fetch a decent price on the black market." icon_state = "ussp_manual" diff --git a/code/game/objects/items/scratch_card.dm b/code/game/objects/items/scratch_card.dm index 2a6f372fe7d0..5864b207e7ee 100644 --- a/code/game/objects/items/scratch_card.dm +++ b/code/game/objects/items/scratch_card.dm @@ -27,7 +27,7 @@ icon_state = "scard_loser" playsound(user, 'sound/items/scratching.ogg', 25, TRUE) scratched = TRUE - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/scratch/attack_obj(obj/O, mob/living/user, params) if(winner && istype(O, /obj/machinery/economy/atm)) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index def83cd1a56f..9510c01b0336 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -81,6 +81,8 @@ GLOBAL_LIST_INIT(metal_recipes, list( new /datum/stack_recipe("firelock frame", /obj/structure/firelock_frame, 3, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), new /datum/stack_recipe("meatspike frame", /obj/structure/kitchenspike_frame, 5, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), new /datum/stack_recipe("reflector frame", /obj/structure/reflector, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe("storage shelf", /obj/structure/shelf, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), + new /datum/stack_recipe("gun rack", /obj/structure/gunrack, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), null, new /datum/stack_recipe_list("airlock assemblies", list( new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), @@ -110,6 +112,7 @@ GLOBAL_LIST_INIT(metal_recipes, list( new /datum/stack_recipe("grenade casing", /obj/item/grenade/chem_grenade), new /datum/stack_recipe("light fixture frame", /obj/item/mounted/frame/light_fixture, 2), new /datum/stack_recipe("small light fixture frame", /obj/item/mounted/frame/light_fixture/small, 1), + new /datum/stack_recipe("floor light fixture frame", /obj/item/mounted/frame/light_fixture/floor, 3), null, new /datum/stack_recipe("apc frame", /obj/item/mounted/frame/apc_frame, 2), new /datum/stack_recipe("air alarm frame", /obj/item/mounted/frame/alarm_frame, 2), diff --git a/code/game/objects/items/stacks/stack_recipe.dm b/code/game/objects/items/stacks/stack_recipe.dm index 0cabc52e5368..3e1b60222c20 100644 --- a/code/game/objects/items/stacks/stack_recipe.dm +++ b/code/game/objects/items/stacks/stack_recipe.dm @@ -104,11 +104,15 @@ if(!do_after(user, time, target = material.loc)) return FALSE + if(material.get_amount() < req_amount * multiplier) // Check they still have enough. + return FALSE + if(cult_structure && locate(/obj/structure/cult) in get_turf(material)) // Check again after do_after to prevent queuing construction exploit. to_chat(user, "There is a structure here!") return FALSE - if(material.get_amount() < req_amount * multiplier) // Check they still have enough. + if(one_per_turf && (locate(result_type) in get_turf(material))) // Yes, we need to do this twice. Once during try_build, and when we build the actual thing, in case it was on a do-after and there's now a structure here. + to_chat(user, "There is another [title] here!") return FALSE if(max_res_amount > 1) // Is it a stack? diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index b92eab964a2a..da72b17dade1 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -335,6 +335,7 @@ mineralType = "metal" armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 100, ACID = 70) resistance_flags = FIRE_PROOF + merge_type = /obj/item/stack/tile/catwalk /obj/item/stack/tile/catwalk/cyborg energy_type = /datum/robot_storage/energy/catwalk diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index eaa00d8e6388..cd68290806c2 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -36,7 +36,7 @@ user.visible_message("[user] cuts [C]'s restraints with [src]!") QDEL_NULL(C.handcuffed) if(C.buckled && C.buckled.buckle_requires_restraints) - C.buckled.unbuckle_mob(C) + C.unbuckle() C.update_handcuffed() return else diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index d921a5a4cd42..fc90779a97a4 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -88,6 +88,7 @@ throwforce = 4 origin_tech = "materials=1;engineering=1;biotech=3" attack_verb = list("wrenched", "medicaled", "tapped", "jabbed", "whacked") + toolspeed = 0.75 /obj/item/wrench/medical/suicide_act(mob/living/user) user.visible_message("[user] is praying to the medical wrench to take [user.p_their()] soul. It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index f9a3c96d3dd9..73bbf852c76c 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -17,6 +17,9 @@ return TRUE return ..() +/obj/item/trash/attack(mob/M as mob, mob/living/user as mob) + return + /obj/item/trash/raisins name = "4no raisins" icon_state= "4no_raisins" @@ -117,12 +120,6 @@ name = "bread tube" icon_state = "tastybread" -/obj/item/trash/spentcasing - icon = 'icons/obj/ammo.dmi' - name = "bullet casing" - desc = "A spent bullet casing. Smells like cordite." - icon_state = "gshell" - /obj/item/trash/tapetrash name = "old duct tape" icon_state = "tape" @@ -134,5 +131,61 @@ icon_state = "popsicle_stick_s" desc = "Still tastes sweet." -/obj/item/trash/attack(mob/M as mob, mob/living/user as mob) - return +// Ammo casings +/obj/item/trash/spentcasing + icon = 'icons/obj/ammo.dmi' + name = "arbitrary spent casing item" + desc = "If you can see this and didn't spawn it, make an issue report on GitHub." + icon_state = "gshell" + +/obj/item/trash/spentcasing/Initialize(mapload) + . = ..() + pixel_x = rand(-10, 10) + pixel_y = rand(-10, 10) + transform = turn(transform, rand(0, 360)) + +/obj/item/trash/spentcasing/shotgun + name = "spent buckshot shell" + desc = "A spent shotgun shell. It smells like cordite." + icon_state = "gshell" + +/obj/item/trash/spentcasing/shotgun/rubbershot + name = "spent rubbershot shell" + desc = "A spent shotgun shell. It smells like cordite and singed rubber." + icon_state = "cshell" + +/obj/item/trash/spentcasing/shotgun/beanbag + name = "spent beanbag shell" + icon_state = "bshell" + +/obj/item/trash/spentcasing/shotgun/slug + name = "spent slug shell" + icon_state = "blshell" + +/obj/item/trash/spentcasing/shotgun/dragonsbreath + name = "spent dragonsbreath shell" + desc = "A spent shotgun shell. It smells like cordite, burnt plastic, and a hint of petroleum." + icon_state = "ishell" + +/obj/item/trash/spentcasing/shotgun/stun + name = "spent stun shell" + icon_state = "stunshell" + +/obj/item/trash/spentcasing/bullet + name = "spent bullet casing" + desc = "A spent bullet casing. It smells of brass and cordite." + icon_state = "s-casing" + +/obj/item/trash/spentcasing/bullet/medium + name = "spent large bullet casing" + desc = "A spent high-caliber bullet casing. It smells of brass and cordite." + icon_state = "762-casing" + +/obj/item/trash/spentcasing/bullet/large + name = "spent .50 BMG bullet casing" + desc = "A spent .50 BMG bullet casing. It smells of brass and cordite." + icon_state = ".50" + +/obj/item/trash/spentcasing/bullet/lasershot + desc = "A spent IK-series single-use lasershot cell. It smells of burnt plastic with a metallic-chemical undertone." + icon_state = "lasercasing" diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 5e5a6e874050..741357eb01c1 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -13,7 +13,7 @@ w_class = WEIGHT_CLASS_TINY var/associated_account_number = 0 - var/list/files = list( ) + var/list/files = list() /obj/item/card/proc/get_card_account() return GLOB.station_money_database.find_user_account(associated_account_number) @@ -1191,3 +1191,7 @@ return "Thunderdome Green" else return capitalize(skin) + +/proc/GetNameAndAssignmentFromId(obj/item/card/id/I) + // Format currently matches that of newscaster feeds: Registered Name (Assigned Rank) + return I.assignment ? "[I.registered_name] ([I.assignment])" : I.registered_name diff --git a/code/game/objects/items/weapons/chemical_flamethrower/chemical_flamethrower.dm b/code/game/objects/items/weapons/chemical_flamethrower/chemical_flamethrower.dm index a2e480d1e591..ae1300409363 100644 --- a/code/game/objects/items/weapons/chemical_flamethrower/chemical_flamethrower.dm +++ b/code/game/objects/items/weapons/chemical_flamethrower/chemical_flamethrower.dm @@ -30,7 +30,7 @@ /// How many firestacks will our reagent apply var/canister_fire_applications = 1 /// How much ammo do we use per tile? - var/ammo_usage = 2 + var/ammo_usage = 1 /// Is this a syndicate flamethrower var/syndicate = FALSE @@ -39,7 +39,7 @@ if(should_start_with_canisters && !length(canisters)) canisters += new /obj/item/chemical_canister update_canister_stats() - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/chemical_flamethrower/Destroy() QDEL_LIST_CONTENTS(canisters) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 06daebbcfeff..4b67c9867856 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -519,6 +519,8 @@ payload_name = "cleaner" desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas." stage = READY + /// The chemical used to clean things + var/cleaning_chem = "cleaner" /obj/item/grenade/chem_grenade/cleaner/Initialize(mapload) . = ..() @@ -526,13 +528,28 @@ var/obj/item/reagent_containers/glass/beaker/B2 = new(src) B1.reagents.add_reagent("fluorosurfactant", 40) - B2.reagents.add_reagent("cleaner", 10) + B2.reagents.add_reagent(cleaning_chem, 10) B2.reagents.add_reagent("water", 40) //when you make pre-designed foam reactions that carry the reagents, always add water last beakers += B1 beakers += B2 update_icon(UPDATE_ICON_STATE) +/obj/item/grenade/chem_grenade/cleaner/everything + payload_name = "melter" + desc = "Inside of this grenade are black-market Syndicate nanites that consume everything they come in cross with. Organs, clothes, consoles, people. Nothing is safe.
Now with a new foaming applicator!" + cleaning_chem = "admincleaner_all" + +/obj/item/grenade/chem_grenade/cleaner/object + payload_name = "object dissolving" + desc = "Inside of this grenade are black-market Syndicate nanites that curiously only consume objects, leaving living creatures and larger machinery alone.
Now with a new foaming applicator!" + cleaning_chem = "admincleaner_item" + +/obj/item/grenade/chem_grenade/cleaner/organic + payload_name = "organic dissolving" + desc = "Inside of this grenade are black-market Syndicate nanites that have an appetite for living creatures and their organs, be they silicon or organic, dead or alive.
Now with a new foaming applicator!" + cleaning_chem = "admincleaner_mob" + /obj/item/grenade/chem_grenade/teargas payload_name = "teargas" diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm index 32922e07aff9..054f3f97b7a7 100644 --- a/code/game/objects/items/weapons/grenades/clusterbuster.dm +++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm @@ -254,3 +254,14 @@ desc = "Proving once and for all that the maximum bomb explosion radius is just a suggestion." payload = /obj/item/grenade/clusterbuster/syndieminibomb +/obj/item/grenade/clusterbuster/admincleaner + desc = "For cleaning really big messes." + payload = /obj/item/grenade/chem_grenade/cleaner/everything + +/obj/item/grenade/clusterbuster/admincleaner/organic + desc = "For cleaning remnants of many, many crime scenes." + payload = /obj/item/grenade/chem_grenade/cleaner/organic + +/obj/item/grenade/clusterbuster/admincleaner/object + desc = "For cleaning up after a typical Nanotrasen office party." + payload = /obj/item/grenade/chem_grenade/cleaner/object diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index b2e0fee35fdd..212088822e73 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -29,7 +29,7 @@ . += "The fuze is set to [det_time / 10] second\s." else . += "[src] is set for instant detonation." - + if(modifiable_timer) . += "Use a screwdriver to modify the time on the fuze." else @@ -125,8 +125,4 @@ if(!HAS_TRAIT(src, TRAIT_CMAGGED)) return REMOVE_TRAIT(src, TRAIT_CMAGGED, "cmagged grenade") - var/datum/component/bomberang = GetComponent(/datum/component/boomerang) - if(!bomberang) - return - bomberang.RemoveComponent() - qdel(bomberang) + DeleteComponent(/datum/component/boomerang) diff --git a/code/game/objects/items/weapons/legcuffs.dm b/code/game/objects/items/weapons/legcuffs.dm index f816d7c8dd5e..c6ce59d40b29 100644 --- a/code/game/objects/items/weapons/legcuffs.dm +++ b/code/game/objects/items/weapons/legcuffs.dm @@ -102,7 +102,7 @@ return ..() var/mob/living/L = AM - if((iscarbon(AM) || isanimal(AM)) && !L.flying) + if((iscarbon(AM) || isanimal(AM)) && !HAS_TRAIT(L, TRAIT_FLYING)) spring_trap(AM) if(ishuman(AM)) diff --git a/code/game/objects/items/weapons/melee/energy_melee_weapons.dm b/code/game/objects/items/weapons/melee/energy_melee_weapons.dm index 96893ff65c9e..9aeedf0b9d83 100644 --- a/code/game/objects/items/weapons/melee/energy_melee_weapons.dm +++ b/code/game/objects/items/weapons/melee/energy_melee_weapons.dm @@ -346,12 +346,17 @@ ////////////////////////////// /obj/item/melee/energy/sword/pirate name = "energy cutlass" - desc = "Arrrr matey." + desc = "A crude copy of syndicate technology. Favored among space pirates for its small form factor while inactive. Arrrr, matey!" force_on = 20 + throwforce_on = 10 // No PvP shenanigans, this is main weapon in PvE explorer gameplay and can be obtained very easy + embed_chance = 45 + embedded_impact_pain_multiplier = 4 + armour_penetration_percentage = 0 + armour_penetration_flat = 0 icon_state = "cutlass0" icon_state_on = "cutlass1" light_color = LIGHT_COLOR_RED - origin_tech = "combat=3;magnets=4;syndicate=2" + origin_tech = "combat=3;magnets=4" ////////////////////////////// // MARK: HARDLIGHT BLADE diff --git a/code/game/objects/items/weapons/melee/melee_misc.dm b/code/game/objects/items/weapons/melee/melee_misc.dm index 6e03cbd66531..99c3652f28e3 100644 --- a/code/game/objects/items/weapons/melee/melee_misc.dm +++ b/code/game/objects/items/weapons/melee/melee_misc.dm @@ -39,6 +39,9 @@ hitsound = 'sound/weapons/rapierhit.ogg' materials = list(MAT_METAL = 1000) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF // Theft targets should be hard to destroy + // values for slapping + var/slap_sound = 'sound/effects/woodhit.ogg' + COOLDOWN_DECLARE(slap_cooldown) /obj/item/melee/saber/examine(mob/user) . = ..() @@ -58,6 +61,34 @@ AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.5, _parryable_attack_types = NON_PROJECTILE_ATTACKS) RegisterSignal(src, COMSIG_PARENT_QDELETING, PROC_REF(alert_admins_on_destroy)) +/obj/item/melee/saber/attack(mob/living/target, mob/living/user) + if(user.a_intent != INTENT_HELP || !ishuman(target)) + return ..() + if(!COOLDOWN_FINISHED(src, slap_cooldown)) + return + var/mob/living/carbon/human/H = target + if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) + user.visible_message("[user] accidentally slaps [user.p_themselves()] with [src]!", \ + "You accidentally slap yourself with [src]!") + slap(user, user) + else + user.visible_message("[user] slaps [H] with the flat of the blade!", \ + "You slap [H] with the flat of the blade!") + slap(target, user) + +/obj/item/melee/saber/proc/slap(mob/living/carbon/human/target, mob/living/user) + user.do_attack_animation(target, ATTACK_EFFECT_DISARM) + playsound(loc, slap_sound, 50, TRUE, -1) + target.AdjustConfused(4 SECONDS, 0, 4 SECONDS) + target.apply_damage(10, STAMINA) + add_attack_logs(user, target, "Slapped by [src]", ATKLOG_ALL) + COOLDOWN_START(src, slap_cooldown, 4 SECONDS) + +/obj/item/melee/saber/suicide_act(mob/user) + user.visible_message(pick("[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku!", \ + "[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!")) + return BRUTELOSS + // Traitor Sword /obj/item/melee/snakesfang name = "snakesfang" @@ -143,11 +174,11 @@ /obj/item/melee/breach_cleaver/proc/wield(obj/item/source, mob/living/carbon/human/user) to_chat(user, "You heave [src] up in both hands.") user.apply_status_effect(STATUS_EFFECT_BREACH_AND_CLEAVE) - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/melee/breach_cleaver/proc/unwield(obj/item/source, mob/living/carbon/human/user) user.remove_status_effect(STATUS_EFFECT_BREACH_AND_CLEAVE) - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/melee/breach_cleaver/attack_obj(obj/O, mob/living/user, params) if(!HAS_TRAIT(src, TRAIT_WIELDED)) // Only works good when wielded diff --git a/code/game/objects/items/weapons/misc_items.dm b/code/game/objects/items/weapons/misc_items.dm index bce1df899f20..9722f91518f1 100644 --- a/code/game/objects/items/weapons/misc_items.dm +++ b/code/game/objects/items/weapons/misc_items.dm @@ -113,7 +113,10 @@ desc = "A tube... of cardboard." icon = 'icons/obj/stacks/miscellaneous.dmi' icon_state = "c_tube" + hitsound = 'sound/items/cardboard_tube.ogg' throwforce = 1 + force = 1 + attack_verb = list("bonked", "thunked") w_class = WEIGHT_CLASS_TINY throw_speed = 4 throw_range = 5 diff --git a/code/game/objects/items/weapons/powerfist.dm b/code/game/objects/items/weapons/powerfist.dm index 8151e7fd1c0a..33c96483d5b7 100644 --- a/code/game/objects/items/weapons/powerfist.dm +++ b/code/game/objects/items/weapons/powerfist.dm @@ -14,8 +14,9 @@ origin_tech = "combat=5;powerstorage=3;syndicate=3" var/click_delay = 1.5 var/fisto_setting = 1 - ///base pressure in kpa used by the powerfist per hit + /// Base pressure in kpa used by the powerfist per hit var/gasperfist = 17.5 + var/obj/item/tank/internals/tank = null //Tank used for the gauntlet's piston-ram. /obj/item/melee/powerfist/Destroy() @@ -93,7 +94,7 @@ if(!tank) to_chat(user, "[src] can't operate without a source of gas!") return - if(tank && !tank.air_contents.boolean_remove(((gasperfist * fisto_setting) * tank.air_contents.return_volume()) / (R_IDEAL_GAS_EQUATION * tank.air_contents.temperature()))) + if(!use_air()) to_chat(user, "[src]'s piston-ram lets out a weak hiss, it needs more gas!") playsound(loc, 'sound/effects/refill.ogg', 50, 1) return @@ -114,3 +115,18 @@ add_attack_logs(user, target, "POWER FISTED with [src]") user.changeNext_move(CLICK_CD_MELEE * click_delay) + +/obj/item/melee/powerfist/proc/use_air() + if(!tank) + return FALSE + + var/amount_to_remove = gasperfist * fisto_setting + var/pressure_in_tank = tank.air_contents.return_pressure() + + // So this check is here to see if the amount of pressure currently in the tank is higher than 10 atmospheres + // If it is higher, we instead take 10% out of the tank so it'll deplete a lot faster, but is still a bit more ammo + if(pressure_in_tank > (ONE_ATMOSPHERE * 10)) + amount_to_remove = 0.1 * pressure_in_tank + + var/moles_to_remove = (amount_to_remove * tank.air_contents.volume) / (R_IDEAL_GAS_EQUATION * tank.air_contents.temperature()) + return tank.air_contents.boolean_remove(moles_to_remove) diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm index a66919d4e775..4da6b3284ac0 100644 --- a/code/game/objects/items/weapons/scrolls.dm +++ b/code/game/objects/items/weapons/scrolls.dm @@ -21,7 +21,7 @@ . += "Number of uses: [uses]. This scroll will vanish after the final use." . += "P.S. Don't forget to bring your gear, you'll need it to cast most spells." -/obj/item/teleportation_scroll/attack_self(mob/user) +/obj/item/teleportation_scroll/attack_self(mob/living/user) if(!uses) //somehow? to_chat(user, "You attempt to read the scroll but it disintegrates in your hand, it appears that is has run out of charges!") qdel(src) @@ -59,7 +59,7 @@ return if(user && user.buckled) - user.buckled.unbuckle_mob(user, force = TRUE) + user.unbuckle(force = TRUE) if(user?.has_buckled_mobs()) user.unbuckle_all_mobs(force = TRUE) diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index ce0a58932858..7f25b42f7603 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -72,7 +72,7 @@ /obj/item/shard/Crossed(mob/living/L, oldloc) if(istype(L) && has_gravity(loc)) - if(L.incorporeal_move || L.flying || L.floating) + if(L.incorporeal_move || HAS_TRAIT(L, TRAIT_FLYING) || L.floating) return playsound(loc, 'sound/effects/glass_step.ogg', 50, TRUE) return ..() diff --git a/code/game/objects/items/weapons/staff.dm b/code/game/objects/items/weapons/staff.dm index 255b2d4cfe12..8da6c38f2d79 100644 --- a/code/game/objects/items/weapons/staff.dm +++ b/code/game/objects/items/weapons/staff.dm @@ -34,7 +34,7 @@ user.update_inv_l_hand() user.update_inv_r_hand() if(iswizard(user)) - user.flying = TRUE + ADD_TRAIT(user, TRAIT_FLYING, "broomstick") user.say("QUID 'ITCH") animate(user, pixel_y = pixel_y + 10 , time = 10, loop = 1, easing = SINE_EASING) to_chat(user, "You hold [src] between your legs.") @@ -44,6 +44,7 @@ user.update_inv_l_hand() user.update_inv_r_hand() if(iswizard(user)) + REMOVE_TRAIT(user, TRAIT_FLYING, "broomstick") animate(user, pixel_y = pixel_y + 10 , time = 1, loop = 1) animate(user, pixel_y = pixel_y, time = 10, loop = 1, easing = SINE_EASING) animate(user) @@ -58,8 +59,7 @@ ..() /obj/item/staff/broom/dropped(mob/user) - if(iswizard(user) && user.flying) - user.flying = FALSE + REMOVE_TRAIT(user, TRAIT_FLYING, "broomstick") ..() /obj/item/staff/broom/horsebroom diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 6ec53ab55e5f..fadff4057acd 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -431,7 +431,7 @@ slowdown = 1 if(antidrop_on_zip) flags ^= NODROP - update_icon_state(UPDATE_ICON_STATE) + update_icon(UPDATE_ICON_STATE) return slowdown = 0 @@ -440,7 +440,7 @@ container.hide_from_all() // Hide everything inside the bag too if(antidrop_on_zip) flags |= NODROP - update_icon_state(UPDATE_ICON_STATE) + update_icon(UPDATE_ICON_STATE) /obj/item/storage/backpack/duffel/update_icon_state() . = ..() @@ -805,6 +805,7 @@ desc = "Stimulate your senses." list_reagents = list("nutriment" = 5, "stimulants" = 25) bitesize = 100 + goal_difficulty = FOOD_GOAL_SKIP /obj/item/food/plum_pie name = "perfect plum pie" @@ -909,30 +910,30 @@ //Commander /obj/item/storage/backpack/ert/commander name = "emergency response team commander backpack" - desc = "A spacious backpack with lots of pockets, worn by the commander of a Nanotrasen Emergency Response Team." + desc = "A spacious blue-striped combat backpack with plenty of easily-accessible pockets." //Security /obj/item/storage/backpack/ert/security name = "emergency response team security backpack" - desc = "A spacious backpack with lots of pockets, worn by security members of a Nanotrasen Emergency Response Team." + desc = "A spacious red-striped combat backpack with plenty of easily-accessible pockets." icon_state = "ert_security" //Engineering /obj/item/storage/backpack/ert/engineer name = "emergency response team engineer backpack" - desc = "A spacious backpack with lots of pockets, worn by engineering members of a Nanotrasen Emergency Response Team." + desc = "A spacious orange-striped combat backpack with plenty of easily-accessible pockets." icon_state = "ert_engineering" //Medical /obj/item/storage/backpack/ert/medical name = "emergency response team medical backpack" - desc = "A spacious backpack with lots of pockets, worn by medical members of a Nanotrasen Emergency Response Team." + desc = "A spacious white-striped combat backpack with plenty of easily-accessible pockets." icon_state = "ert_medical" //Janitorial /obj/item/storage/backpack/ert/janitor name = "emergency response team janitor backpack" - desc = "A spacious backpack with lots of pockets, worn by janitorial members of a Nanotrasen Emergency Response Team." + desc = "A spacious purple-striped combat backpack with plenty of easily-accessible pockets." icon_state = "ert_janitor" //Solgov @@ -943,6 +944,6 @@ /obj/item/storage/backpack/ert/deathsquad name = "Deathsquad backpack" - desc = "A spacious backpack with lots of pockets, worn by those working in Special Operations." + desc = "A spacious red & black combat rucksack made of lightweight nanomesh. Likely the most intimidating backpack one will ever see." icon_state = "ert_security" diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 1c1f589b1978..e58bb74b023d 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -107,7 +107,9 @@ /obj/item/extinguisher/mini, /obj/item/holosign_creator, /obj/item/stack/nanopaste, - /obj/item/robotanalyzer) + /obj/item/robotanalyzer, + /obj/item/rpd/bluespace + ) /obj/item/storage/belt/utility/full/populate_contents() new /obj/item/screwdriver(src) @@ -182,6 +184,11 @@ new /obj/item/stack/cable_coil(src, 30, COLOR_BLUE) update_icon() +/obj/item/storage/belt/utility/expedition/vendor + +/obj/item/storage/belt/utility/expedition/vendor/populate_contents() + return // only cool-looking belt, nothing more + /obj/item/storage/belt/medical name = "medical belt" desc = "Can hold various medical equipment." @@ -292,6 +299,7 @@ max_w_class = WEIGHT_CLASS_NORMAL use_item_overlays = TRUE can_hold = list( + /obj/item/radio, /obj/item/grenade/flashbang, /obj/item/grenade/chem_grenade/teargas, /obj/item/reagent_containers/spray/pepper, @@ -342,29 +350,9 @@ icon_state = "securitywebbing" item_state = "securitywebbing" storage_slots = 6 + max_combined_w_class = 15 use_item_overlays = FALSE layer_over_suit = TRUE - can_hold = list( - /obj/item/grenade/flashbang, - /obj/item/grenade/chem_grenade/teargas, - /obj/item/reagent_containers/spray/pepper, - /obj/item/restraints/handcuffs, - /obj/item/flash, - /obj/item/clothing/glasses, - /obj/item/ammo_casing/shotgun, - /obj/item/ammo_box, - /obj/item/food/donut, - /obj/item/kitchen/knife/combat, - /obj/item/melee/baton, - /obj/item/melee/classic_baton, - /obj/item/flashlight/seclite, - /obj/item/holosign_creator/security, - /obj/item/melee/classic_baton/telescopic, - /obj/item/restraints/legcuffs/bola, - /obj/item/clothing/mask/gas/sechailer, - /obj/item/detective_scanner, - /obj/item/ammo_box/magazine/wt550m9 - ) /obj/item/storage/belt/soulstone name = "soul stone belt" @@ -409,7 +397,8 @@ /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, - /obj/item/multitool + /obj/item/multitool, + /obj/item/rpd/bluespace ) /obj/item/storage/belt/military/sst @@ -482,6 +471,24 @@ icon_state = "assaultbelt" item_state = "assault" storage_slots = 6 + w_class_override = list( + /obj/item/crowbar, + /obj/item/screwdriver, + /obj/item/weldingtool, + /obj/item/wirecutters, + /obj/item/wrench, + /obj/item/multitool, + /obj/item/ammo_box, + /obj/item/melee/baton, + /obj/item/melee/classic_baton, + /obj/item/detective_scanner + ) + +/obj/item/storage/belt/military/assault/attackby(obj/item/I, mob/user) + if(I.w_class > WEIGHT_CLASS_NORMAL) + to_chat(user, "[I] is too big for [src].") + return + return ..() /obj/item/storage/belt/military/assault/marines/full/populate_contents() new /obj/item/ammo_box/magazine/m12g(src) @@ -561,7 +568,7 @@ /obj/item/storage/belt/lazarus name = "trainer's belt" desc = "For the mining master, holds your lazarus capsules." - icon_state = "lazarusbelt" + icon_state = "lazarusbelt_0" item_state = "lazbelt" w_class = WEIGHT_CLASS_BULKY max_w_class = WEIGHT_CLASS_TINY @@ -575,7 +582,7 @@ update_icon() /obj/item/storage/belt/lazarus/update_icon_state() - icon_state = "[initial(icon_state)]_[length(contents)]" + icon_state = "lazarusbelt_[length(contents)]" /obj/item/storage/belt/lazarus/attackby(obj/item/I, mob/user) var/amount = length(contents) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 31e29968b4d0..cb423ae1cad2 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -320,6 +320,8 @@ desc = "A full set of labelled components for assembling an R&D setup with. There are wordless picrographs of how to assemble everything on the back." /obj/item/storage/box/large/rnd_parts/populate_contents() + new /obj/item/circuitboard/rnd_network_controller(src) + new /obj/item/circuitboard/rdserver(src) new /obj/item/circuitboard/rdconsole(src) new /obj/item/circuitboard/protolathe(src) new /obj/item/circuitboard/destructive_analyzer(src) @@ -332,6 +334,7 @@ new /obj/item/stock_parts/matter_bin(src) new /obj/item/stock_parts/matter_bin(src) new /obj/item/stock_parts/scanning_module(src) + new /obj/item/stock_parts/scanning_module(src) new /obj/item/stock_parts/micro_laser(src) new /obj/item/reagent_containers/glass/beaker(src) new /obj/item/reagent_containers/glass/beaker(src) @@ -340,6 +343,7 @@ new /obj/item/stack/sheet/glass/fifty(src) new /obj/item/stack/sheet/metal/fifty(src) new /obj/item/stack/cable_coil(src) + new /obj/item/stack/cable_coil(src) /obj/item/storage/box/large/glowstick/emergency name = "emergency glowstick box" @@ -699,77 +703,83 @@ //////////////// /* Ammo Boxes */ //////////////// -/obj/item/storage/box/slug - name = "ammunition box (Slug)" + +/obj/item/storage/fancy/shell + icon = 'icons/obj/shell_boxes.dmi' + storage_slots = 8 + appearance_flags = parent_type::appearance_flags | KEEP_TOGETHER + can_hold = list(/obj/item/ammo_casing/shotgun) + /// What shell do we fill the box with + var/shell_type + +/obj/item/storage/fancy/shell/update_icon_state() + icon_state = "open" + +/obj/item/storage/fancy/shell/populate_contents() + if(!shell_type) + return + for(var/i in 1 to storage_slots) + new shell_type(src) + +/obj/item/storage/fancy/shell/update_overlays() + . = ..() + var/list/cached_contents = contents + for(var/index in 1 to length(cached_contents)) + var/obj/shell = cached_contents[index] + var/image/I = image(icon, src, initial(shell.icon_state)) + I.pixel_x = 3 * (round((index - 1) / 2)) + I.pixel_y = -4 * ((index + 1) % 2) + . += I + + . += "shell_box_front" // need to add another overlay to prevent from other overlays from showing on top + +/obj/item/storage/fancy/shell/tranquilizer + name = "ammunition box (Tranquilizer darts)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "slug_box" + icon_state = "tranqbox" + shell_type = /obj/item/ammo_casing/shotgun/tranquilizer -/obj/item/storage/box/slug/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun(src) +/obj/item/storage/fancy/shell/slug + name = "ammunition box (Slug)" + desc = "A small box capable of holding seven shotgun shells." + icon_state = "slugbox" + shell_type = /obj/item/ammo_casing/shotgun -/obj/item/storage/box/buck +/obj/item/storage/fancy/shell/buck name = "ammunition box (Buckshot)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "buckshot_box" + icon_state = "buckbox" + shell_type = /obj/item/ammo_casing/shotgun/buckshot -/obj/item/storage/box/buck/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/buckshot(src) - -/obj/item/storage/box/dragonsbreath +/obj/item/storage/fancy/shell/dragonsbreath name = "ammunition box (Dragonsbreath)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "dragonsbreath_box" + icon_state = "dragonsbox" + shell_type = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath -/obj/item/storage/box/dragonsbreath/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath(src) - -/obj/item/storage/box/stun +/obj/item/storage/fancy/shell/stun name = "ammunition box (Stun shells)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "stun_box" + icon_state = "stunbox" + shell_type = /obj/item/ammo_casing/shotgun/stunslug -/obj/item/storage/box/stun/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/stunslug(src) - -/obj/item/storage/box/beanbag +/obj/item/storage/fancy/shell/beanbag name = "ammunition box (Beanbag shells)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "beanbag_box" - -/obj/item/storage/box/beanbag/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/beanbag(src) + icon_state = "beanbox" + shell_type = /obj/item/ammo_casing/shotgun/beanbag -/obj/item/storage/box/rubbershot +/obj/item/storage/fancy/shell/rubbershot name = "ammunition box (Rubbershot shells)" desc = "A small box capable of holding seven shotgun shells." - icon_state = "rubbershot_box" + icon_state = "rubberbox" + shell_type = /obj/item/ammo_casing/shotgun/rubbershot -/obj/item/storage/box/rubbershot/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/rubbershot(src) - -/obj/item/storage/box/tranquilizer - name = "ammunition box (Tranquilizer darts)" - desc = "A small box capable of holding seven shotgun shells." - icon_state = "tranq_box" - -/obj/item/storage/box/tranquilizer/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/tranquilizer(src) - -/obj/item/storage/box/holy +/obj/item/storage/fancy/shell/holy name = "ammunition box (Holy Water darts)" desc = "A small box capable of holding seven shotgun shells." icon_state = "hshell_box" - -/obj/item/storage/box/holy/populate_contents() - for(var/I in 1 to 7) - new /obj/item/ammo_casing/shotgun/holy(src) + shell_type = /obj/item/ammo_casing/shotgun/holy //////////////// /* Donk Boxes */ diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 49f940b18350..4d81698c757c 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -103,8 +103,9 @@ throwforce = 2 slot_flags = SLOT_FLAG_BELT -/obj/item/storage/fancy/candle_box/full - icon_state = "candlebox5" +/obj/item/storage/fancy/candle_box/Initialize(mapload) + . = ..() + update_icon(UPDATE_ICON_STATE) /obj/item/storage/fancy/candle_box/full/populate_contents() for(var/I in 1 to storage_slots) diff --git a/code/game/objects/items/weapons/storage/storage_base.dm b/code/game/objects/items/weapons/storage/storage_base.dm index 9ae621d46932..9130e81e6f30 100644 --- a/code/game/objects/items/weapons/storage/storage_base.dm +++ b/code/game/objects/items/weapons/storage/storage_base.dm @@ -464,7 +464,8 @@ if(observer.client && observer.s_active != src) observer.client.screen -= I I.dropped(user, TRUE) - add_fingerprint(user) + if(user) + add_fingerprint(user) if(!prevent_warning) // all mobs with clients attached, sans the item's user @@ -481,10 +482,10 @@ // restrict player list to include only those in view for(var/mob/M in oviewers(7, user)) M.show_message("[user] puts [I] into [src].") - orient2hud(user) - if(user.s_active) - user.s_active.show_to(user) + if(user) + if(user.s_active) + user.s_active.show_to(user) I.mouse_opacity = MOUSE_OPACITY_OPAQUE //So you can click on the area around the item to equip it, instead of having to pixel hunt I.in_inventory = TRUE @@ -531,6 +532,7 @@ if(I.maptext) I.maptext = "" I.on_exit_storage(src) + I.mouse_opacity = initial(I.mouse_opacity) update_icon() return TRUE diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 748c7a1d54f1..e33a4d681fca 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -52,14 +52,14 @@ if(!current_location||!is_teleport_allowed(current_location.z))//If turf was not found or they're somewhere teleproof to_chat(user, "\The [src] is malfunctioning.") return - var/list/L = list( ) + var/list/L = list() for(var/obj/machinery/computer/teleporter/com in GLOB.machines) if(com.target) if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged) L["[com.id] (Active)"] = com.target else L["[com.id] (Inactive)"] = com.target - var/list/turfs = list( ) + var/list/turfs = list() var/area/A for(var/turf/T in orange(10)) if(T.x>world.maxx-8 || T.x<8) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm new file mode 100644 index 000000000000..8c79b2cd0dcf --- /dev/null +++ b/code/game/objects/items/weapons/thurible.dm @@ -0,0 +1,174 @@ +/obj/item/thurible + name = "thurible" + desc = "A religious artifact used to burn and spread incense when swung from the attached chain." + icon = 'icons/obj/weapons/magical_weapons.dmi' + lefthand_file = 'icons/mob/inhands/religion_lefthand.dmi' + righthand_file = 'icons/mob/inhands/religion_righthand.dmi' + icon_state = "thurible" + item_state = "thurible" + force = 10 + throwforce = 7 + w_class = WEIGHT_CLASS_NORMAL + flags = CONDUCT + container_type = REFILLABLE + /// Whether or not the thurible can be loaded with harmful chems + var/corrupted = FALSE + /// Has the thurible been ignited? + var/lit = FALSE + /// List of chemicals considered safe for the thurible + var/static/list/safe_chem_list = list("antihol", "charcoal", "epinephrine", "insulin", "teporone", "salbutamol", "omnizine", + "weak_omnizine", "godblood", "potass_iodide", "oculine", "mannitol", "spaceacillin", "salglu_solution", + "sal_acid", "cryoxadone", "sugar", "hydrocodone", "mitocholide", "rezadone", "menthol", + "mutadone", "sanguine_reagent", "iron", "ephedrine", "heparin", "corazone", "sodiumchloride", + "lavaland_extract", "synaptizine", "bicaridine", "kelotane", "water", "holywater", "lsd", "thc", "happiness", + "cbd", "space_drugs", "nicotine", "jestosterone", "nothing") + /// How many reagents are consumed with each swing? + var/swing_reagents_consumed = 2 + +/obj/item/thurible/Initialize(mapload) + . = ..() + create_reagents(50) + reagents.set_reacting(FALSE) + +/obj/item/thurible/Destroy() + STOP_PROCESSING(SSobj, src) + QDEL_NULL(reagents) + return ..() + +/obj/item/thurible/examine(mob/user) + . = ..() + . += "[src] can hold up to [reagents.maximum_volume] units." + . += "Contains [reagents.total_volume] units of various reagents." + +/obj/item/thurible/process() + swing() + +/obj/item/thurible/update_appearance() + if(lit) + icon_state = "thurible-lit" + item_state = "thurible-lit" + else + icon_state = "thurible" + item_state = "thurible" + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + if(H.r_hand == src || H.l_hand == src) + H.update_inv_l_hand() + H.update_inv_r_hand() + return ..() + +/obj/item/thurible/attackby(obj/item/fire_source, mob/user, params) + . = ..() + if(fire_source.get_heat()) + user.visible_message( + "[user] lights [src] with [fire_source].", + "You light [src] with [fire_source].", + "You hear a low whoosh." + ) + light(user) + +/obj/item/thurible/attack_self(mob/user) + if(lit) + to_chat(user, "You extinguish [src].") + put_out(user) + return ..() + +/obj/item/thurible/can_enter_storage(obj/item/storage/S, mob/user) + if(lit) + to_chat(user, "[S] can't hold \the [initial(name)] while it's lit!") // initial(name) so it doesn't say "lit" twice in a row + return FALSE + return TRUE + +/obj/item/thurible/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE) + . = ..() + light() + +/obj/item/thurible/on_reagent_change() + . = ..() + if(corrupted) + return + var/found_forbidden_reagent = FALSE + for(var/datum/reagent/R as anything in reagents.reagent_list) + if(R.id == "unholywater") + corrupted = TRUE + visible_message( + "You corrupt [src] with unholy water!", + "You hear a strange gurgling." + ) + return + if(!safe_chem_list.Find(R.id)) + reagents.del_reagent(R.id) + found_forbidden_reagent = TRUE + if(found_forbidden_reagent) + visible_message( + "[src] banishes an unholy substance!", + "You hear a strange fizzing." + ) + +/// Lights the thurible and starts processing reagents +/obj/item/thurible/proc/light(mob/user) + if(lit) + to_chat(user, "[src] is already lit!") + return + + if(!reagents.total_volume) + to_chat(user, "[src] is out of fuel!") + return + + // Plasma explodes when exposed to fire. + if(reagents.get_reagent_amount("plasma")) + var/datum/effect_system/reagents_explosion/E = new() + E.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) + E.start() + return + + // Fuel explodes, too, but much less violently. + if(reagents.get_reagent_amount("fuel")) + var/datum/effect_system/reagents_explosion/E = new() + E.set_up(round(reagents.get_reagent_amount("fuel") / 5, 1), get_turf(src), 0, 0) + E.start() + return + + // And black powder... but more violently. + if(reagents.get_reagent_amount("blackpowder")) + var/datum/effect_system/reagents_explosion/E = new() + E.set_up(round(reagents.get_reagent_amount("blackpowder") / 2, 1), get_turf(src), 0, 0) + E.start() + return + + lit = TRUE + reagents.set_reacting(TRUE) + reagents.handle_reactions() + START_PROCESSING(SSobj, src) + set_light(2, 0.3, "#E38F46") + update_appearance() + return TRUE + +/// Extinguishes the thurible and stops processing +/obj/item/thurible/proc/put_out(mob/user) + lit = FALSE + STOP_PROCESSING(SSobj, src) + set_light(0) + update_appearance() + return TRUE + +/// Spreads reagents in a 3x3 area centered on the thurible +/obj/item/thurible/proc/swing() + var/obj/released_reagents = new + released_reagents.create_reagents(2) + reagents.trans_to(released_reagents, swing_reagents_consumed) + var/list/mobs_to_smoke = list() + for(var/atom/A in view(1, get_turf(src))) + released_reagents.reagents.reaction(A) + if(iscarbon(A)) + var/mob/living/carbon/C = A + if(C.can_breathe_gas()) + mobs_to_smoke += C + if(length(mobs_to_smoke)) + var/percentage_to_add = released_reagents.reagents.total_volume / length(mobs_to_smoke) // Divide the amount of reagents spread around by the number of people inhaling it + + for(var/mob/living/carbon/smoker as anything in mobs_to_smoke) + released_reagents.reagents.copy_to(smoker, percentage_to_add) + + if(reagents.total_volume <= 0) + put_out() diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 6848767af43f..3d11a5dff23b 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -34,10 +34,11 @@ var/emagged = FALSE // Access-related fields + + /// A list of accesses as defined by `code/__DEFINES/access_defines.dm`. All accesses are required when checking. var/list/req_access = null - var/req_access_txt = "0" + /// A list of accesses as defined by `code/__DEFINES/access_defines.dm`. At least one access is required when checking. var/list/req_one_access = null - var/req_one_access_txt = "0" /obj/Initialize(mapload) . = ..() diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index 41affd7a4fc4..80e9ae91f701 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -524,7 +524,8 @@ icon_state = "egg_hatched" flick("egg_opening", src) status = BURSTING - qdel(GetComponent(/datum/component/proximity_monitor)) + DeleteComponent(/datum/component/proximity_monitor) + addtimer(CALLBACK(src, PROC_REF(hatch)), 1.5 SECONDS) ///We now check HOW the hugger is hatching, kill carried from Burst() and obj_break() diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index c6a04c649cbb..8a6331b5d69d 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -9,7 +9,10 @@ armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 10, RAD = 0, FIRE = 70, ACID = 60) var/icon_closed var/icon_opened - var/open_door_sprite = "generic_door" + /// Overwrites icon_state for the opened door sprite. Only necessary if the opened door sprite has a different name than the icon_state. + var/opened_door_sprite + /// Overwrites icon_state for the closed door sprite. Only necessary if the closed door sprite has a different name than the icon_state. + var/closed_door_sprite var/opened = FALSE var/welded = FALSE var/locked = FALSE @@ -25,13 +28,30 @@ var/material_drop = /obj/item/stack/sheet/metal var/material_drop_amount = 2 var/transparent + var/secure = FALSE + + /// The overlay for the closet's door + var/obj/effect/overlay/closet_door/door_obj + /// Whether or not this door is being animated + var/is_animating_door = FALSE + /// Vertical squish of the door + var/door_anim_squish = 0.30 + /// The maximum angle the door will be drawn at + var/door_anim_angle = 136 + /// X position of the closet door hinge + var/door_hinge_x = -6.5 + /// Amount of time it takes for the door animation to play + var/door_anim_time = 2.0 // set to 0 to make the door not animate at all + /// Whether this closet uses a door overlay at all. If FALSE, it'll switch to a system where the entire icon_state is replaced with [icon_state]_open instead. + var/enable_door_overlay = TRUE + /// Whether this closet uses a door overlay for when it is opened + var/has_opened_overlay = TRUE + /// Whether this closet uses a door overlay for when it is closed + var/has_closed_overlay = TRUE // Please dont override this unless you absolutely have to /obj/structure/closet/Initialize(mapload) . = ..() - icon_closed = "[icon_state]" - if(!icon_opened) - icon_opened = "[icon_state]_open" if(mapload && !opened) // Youre probably asking, why is this a 0 seconds timer AA? // Well, I will tell you. One day, all /obj/effect/spawner will use Initialize @@ -42,6 +62,88 @@ populate_contents() // Spawn all its stuff update_icon() // Set it to the right icon if needed +/obj/structure/closet/update_icon() + . = ..() + if(!enable_door_overlay) + if(opened) + icon_state = "[initial(icon_state)]_open" + else + icon_state = initial(icon_state) + +/obj/structure/closet/proc/closet_update_overlays(list/new_overlays) + . = new_overlays + if(enable_door_overlay && !is_animating_door) + if(opened && has_opened_overlay) + var/mutable_appearance/door_overlay = mutable_appearance(icon, "[opened_door_sprite || icon_state]_opened", alpha = src.alpha) + . += door_overlay + door_overlay.overlays += emissive_blocker(door_overlay.icon, door_overlay.icon_state, alpha = door_overlay.alpha) // If we don't do this the door doesn't block emissives and it looks weird. + else if(!opened && has_closed_overlay) + . += "[closed_door_sprite || icon_state]_closed" + + if(opened) + return + + if(welded) + . += "welded" + + if(broken || !secure || is_animating_door) + return + + //Overlay is similar enough for both that we can use the same mask for both + . += emissive_appearance(icon, "locked", alpha = src.alpha) + . += locked ? "locked" : "unlocked" + +/// Animates the closet door opening and closing +/obj/structure/closet/proc/animate_door(closing = FALSE) + if(!door_anim_time) + return + if(!door_obj) + door_obj = new + var/default_door_icon = "[closed_door_sprite || icon_state]_closed" + vis_contents += door_obj + door_obj.icon = icon + door_obj.icon_state = default_door_icon + is_animating_door = TRUE + var/num_steps = door_anim_time / world.tick_lag + + for(var/step in 0 to num_steps) + var/angle = door_anim_angle * (closing ? 1 - (step / num_steps) : (step / num_steps)) + var/matrix/door_transform = get_door_transform(angle) + var/door_state + var/door_layer + + if(angle >= 90) + door_state = "[opened_door_sprite || icon_state]_back" + door_layer = FLOAT_LAYER + else + door_state = "[closed_door_sprite || icon_state]_closed" + door_layer = ABOVE_MOB_LAYER + + if(step == 0) + door_obj.transform = door_transform + door_obj.icon_state = door_state + door_obj.layer = door_layer + else if(step == 1) + animate(door_obj, transform = door_transform, icon_state = door_state, layer = door_layer, time = world.tick_lag, flags = ANIMATION_END_NOW) + else + animate(transform = door_transform, icon_state = door_state, layer = door_layer, time = world.tick_lag) + addtimer(CALLBACK(src, PROC_REF(end_door_animation)), door_anim_time, TIMER_UNIQUE|TIMER_OVERRIDE) + +/// Ends the door animation and removes the animated overlay +/obj/structure/closet/proc/end_door_animation() + is_animating_door = FALSE + vis_contents -= door_obj + update_icon() + COMPILE_OVERLAYS(src) + +/// Calculates the matrix to be applied to the animated door overlay +/obj/structure/closet/proc/get_door_transform(angle) + var/matrix/door_matrix = matrix() + door_matrix.Translate(-door_hinge_x, 0) + door_matrix.Multiply(matrix(cos(angle), 0, 0, -sin(angle) * door_anim_squish, 1, 0)) + door_matrix.Translate(door_hinge_x, 0) + return door_matrix + // Override this to spawn your things in. This lets you use probabilities, and also doesnt cause init overrides /obj/structure/closet/proc/populate_contents() return @@ -60,6 +162,7 @@ /obj/structure/closet/Destroy(force) if(!force) dump_contents() + QDEL_NULL(door_obj) return ..() /obj/structure/closet/CanPass(atom/movable/mover, turf/target) @@ -76,7 +179,6 @@ for(var/obj/structure/closet/closet in get_turf(src)) if(closet != src && closet.anchored != 1) return FALSE - return TRUE /obj/structure/closet/proc/dump_contents() @@ -96,19 +198,20 @@ for(var/atom/A in contents) A.extinguish_light(force) -/obj/structure/closet/proc/open() - if(opened) - return FALSE - +/obj/structure/closet/proc/open(mob/user) if(!can_open()) - return FALSE - - dump_contents() - - opened = TRUE - update_icon() + return + if(opened) + return + welded = FALSE + locked = FALSE playsound(loc, open_sound, open_sound_volume, TRUE, -3) + opened = TRUE density = FALSE + dump_contents() + if(enable_door_overlay) + animate_door(FALSE) + update_appearance() return TRUE /obj/structure/closet/proc/close() @@ -147,11 +250,14 @@ M.forceMove(src) itemcount++ - opened = FALSE - update_icon() + playsound(loc, close_sound, close_sound_volume, TRUE, -3) + if(enable_door_overlay) + animate_door(TRUE) + update_appearance() playsound(loc, close_sound, close_sound_volume, TRUE, -3) density = TRUE + return TRUE /obj/structure/closet/proc/toggle(mob/user) @@ -313,22 +419,9 @@ add_fingerprint(user) toggle(user) -/obj/structure/closet/update_icon_state() - if(!opened) - icon_state = "[icon_closed][transparent ? "_trans" : ""]" - else - icon_state = "[icon_opened][transparent ? "_trans" : ""]" - /obj/structure/closet/update_overlays() . = ..() - if(transparent && opened) - . += "[open_door_sprite]_trans" - return - if(opened) - . += open_door_sprite - return - if(welded) - . += "welded" + closet_update_overlays(.) // Objects that try to exit a locker by stepping were doing so successfully, // and due to an oversight in turf/Enter() were going through walls. That @@ -414,13 +507,11 @@ return ..() - /obj/structure/closet/bluespace name = "bluespace closet" desc = "A storage unit that moves and stores through the fourth dimension." density = FALSE icon_state = "bluespace" - open_door_sprite = "bluespace_door" storage_capacity = 60 var/materials = list(MAT_METAL = 5000, MAT_PLASMA = 2500, MAT_TITANIUM = 500, MAT_BLUESPACE = 500) @@ -433,13 +524,15 @@ for(var/atom/A in location) if(A.density && A != src && A != AM) transparent = TRUE - break + alpha = 180 + update_icon() + return + alpha = 255 update_icon() /obj/structure/closet/bluespace/Crossed(atom/movable/AM, oldloc) if(AM.density) - transparent = TRUE - update_icon() + UpdateTransparency(location = loc) /obj/structure/closet/bluespace/Move(NewLoc, direct) // Allows for "phasing" throug objects but doesn't allow you to stuff your EOC homebois in one of these and push them through walls. var/turf/T = get_turf(NewLoc) diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index 5ebf91d6272e..fb8aaf79bbe8 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -3,7 +3,8 @@ desc = "Just a box..." icon = 'icons/obj/cardboard_boxes.dmi' icon_state = "cardboard" - open_door_sprite = null + enable_door_overlay = FALSE + door_anim_time = 0 resistance_flags = FLAMMABLE max_integrity = 70 integrity_failure = 0 diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index bfd0bb4e0bd0..e1651a81746f 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -2,7 +2,8 @@ name = "coffin" desc = "It's a burial receptacle for the dearly departed." icon_state = "coffin" - open_door_sprite = null + enable_door_overlay = FALSE + door_anim_time = 0 resistance_flags = FLAMMABLE max_integrity = 70 material_drop = /obj/item/stack/sheet/wood @@ -11,15 +12,6 @@ open_sound_volume = 25 close_sound_volume = 50 -/obj/structure/closet/coffin/update_icon_state() - if(!opened) - icon_state = icon_closed - else - icon_state = icon_opened - -/obj/structure/closet/coffin/update_overlays() - return list() - /obj/structure/closet/coffin/sarcophagus name = "sarcophagus" icon_state = "sarc" diff --git a/code/game/objects/structures/crates_lockers/closets/fitness.dm b/code/game/objects/structures/crates_lockers/closets/fitness.dm index cb5bd4a3c777..bf9c8fc54ef2 100644 --- a/code/game/objects/structures/crates_lockers/closets/fitness.dm +++ b/code/game/objects/structures/crates_lockers/closets/fitness.dm @@ -1,9 +1,8 @@ /obj/structure/closet/athletic_mixed name = "athletic wardrobe" desc = "It's a storage unit for athletic wear." - icon_state = "mixed" - icon_opened = "generic_open" - open_door_sprite = "generic_door" + icon_state = "generic" + closed_door_sprite = "mixed" /obj/structure/closet/athletic_mixed/populate_contents() new /obj/item/clothing/under/pants/shorts/grey(src) @@ -21,8 +20,6 @@ /obj/structure/closet/boxinggloves name = "boxing gloves" desc = "It's a storage unit for gloves for use in the boxing ring." - icon_opened = "generic_open" - open_door_sprite = "generic_door" /obj/structure/closet/boxinggloves/populate_contents() new /obj/item/clothing/gloves/boxing/blue(src) @@ -34,8 +31,6 @@ /obj/structure/closet/masks name = "mask closet" desc = "IT'S A STORAGE UNIT FOR FIGHTER MASKS OLE!" - icon_opened = "generic_open" - open_door_sprite = "generic_door" /obj/structure/closet/masks/populate_contents() new /obj/item/clothing/mask/luchador(src) @@ -46,9 +41,8 @@ /obj/structure/closet/lasertag/red name = "red laser tag equipment" desc = "It's a storage unit for laser tag equipment." - icon_state = "red" - icon_opened = "generic_open" - open_door_sprite = "generic_door" + icon_state = "generic" + closed_door_sprite = "red" /obj/structure/closet/lasertag/red/populate_contents() new /obj/item/beach_ball/dodgeball(src) @@ -63,9 +57,8 @@ /obj/structure/closet/lasertag/blue name = "blue laser tag equipment" desc = "It's a storage unit for laser tag equipment." - icon_state = "blue" - icon_opened = "generic_open" - open_door_sprite = "generic_door" + icon_state = "generic" + closed_door_sprite = "blue" /obj/structure/closet/lasertag/blue/populate_contents() new /obj/item/beach_ball/dodgeball(src) diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index dc3c521b27b3..7d35647dcac2 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -2,7 +2,7 @@ name = "cabinet" desc = "Old will forever be in fashion." icon_state = "cabinet" - open_door_sprite = "cabinet_door" + door_anim_time = 0 resistance_flags = FLAMMABLE open_sound = 'sound/machines/wooden_closet_open.ogg' close_sound = 'sound/machines/wooden_closet_close.ogg' @@ -29,22 +29,19 @@ name = "strange closet" desc = "It looks alien!" icon_state = "alien" - open_door_sprite = "alien_door" /obj/structure/closet/gimmick name = "administrative supply closet" desc = "It's a storage unit for things that have no right being here." icon_state = "syndicate1" - open_door_sprite = "syndicate1_door" anchored = FALSE -/obj/structure/closet/gimmick/russian - name = "russian surplus closet" - desc = "It's a storage unit for Russian standard-issue surplus." +/obj/structure/closet/gimmick/soviet + name = "soviet surplus closet" + desc = "A storage unit for surplus USSP equipment." icon_state = "syndicate1" - open_door_sprite = "syndicate1_door" -/obj/structure/closet/gimmick/russian/populate_contents() +/obj/structure/closet/gimmick/soviet/populate_contents() new /obj/item/clothing/head/sovietsidecap(src) new /obj/item/clothing/head/sovietsidecap(src) new /obj/item/clothing/head/sovietsidecap(src) @@ -60,8 +57,6 @@ /obj/structure/closet/gimmick/tacticool name = "tacticool gear closet" desc = "It's a storage unit for Tacticool gear." - icon_state = "syndicate1" - open_door_sprite = "syndicate1_door" /obj/structure/closet/gimmick/tacticool/populate_contents() new /obj/item/clothing/glasses/eyepatch(src) @@ -84,7 +79,8 @@ name = "\improper Thunderdome closet" desc = "Everything you need!" icon_state = "syndicate" - open_door_sprite = "syndicate_door" + opened_door_sprite = "syndicate" + closed_door_sprite = "syndicate" anchored = TRUE /obj/structure/closet/thunderdome/tdred @@ -113,7 +109,8 @@ /obj/structure/closet/thunderdome/tdgreen name = "green-team Thunderdome closet" icon_state = "syndicate1" - open_door_sprite = "syndicate1_door" + opened_door_sprite = "syndicate1" + closed_door_sprite = "syndicate1" /obj/structure/closet/thunderdome/tdgreen/populate_contents() new /obj/item/clothing/suit/armor/tdome/green(src) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index fedd1979d410..c46170d51ad3 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -12,9 +12,8 @@ /obj/structure/closet/gmcloset name = "formal closet" desc = "It's a storage unit for formal clothing." - icon_state = "black" - icon_opened = "generic_open" - open_door_sprite = "generic_door" + icon_state = "generic" + closed_door_sprite = "black" /obj/structure/closet/gmcloset/populate_contents() new /obj/item/clothing/head/that(src) @@ -40,9 +39,9 @@ /obj/structure/closet/chefcloset name = "chef's closet" desc = "It's a storage unit for foodservice garments." - icon_state = "black" - icon_opened = "generic_open" - open_door_sprite = "generic_door" + icon_state = "generic" + closed_door_sprite = "black" + /obj/structure/closet/chefcloset/populate_contents() new /obj/item/clothing/under/misc/waiter(src) @@ -68,9 +67,9 @@ /obj/structure/closet/jcloset name = "custodial closet" desc = "It's a storage unit for janitorial clothes and gear." - icon_state = "mixed" - icon_opened = "generic_open" - open_door_sprite = "generic_door" + icon_state = "generic" + closed_door_sprite = "mixed" + /obj/structure/closet/jcloset/populate_contents() new /obj/item/flashlight(src) @@ -104,9 +103,9 @@ /obj/structure/closet/paramedic name = "paramedic wardrobe" desc = "It's a storage unit for paramedic equipment." - icon_state = "blue" - icon_opened = "generic_open" - open_door_sprite = "generic_door" + icon_state = "generic" + closed_door_sprite = "blue" + /obj/structure/closet/paramedic/populate_contents() diff --git a/code/game/objects/structures/crates_lockers/closets/l3closet.dm b/code/game/objects/structures/crates_lockers/closets/l3closet.dm index fe93f4700a56..adc99a596fed 100644 --- a/code/game/objects/structures/crates_lockers/closets/l3closet.dm +++ b/code/game/objects/structures/crates_lockers/closets/l3closet.dm @@ -2,7 +2,6 @@ name = "level-3 biohazard suit closet" desc = "It's a storage unit for level-3 biohazard gear." icon_state = "bio" - open_door_sprite = "bio_door" /obj/structure/closet/l3closet/populate_contents() new /obj/item/storage/bag/bio( src ) @@ -17,7 +16,6 @@ /obj/structure/closet/l3closet/virology icon_state = "bio_viro" - open_door_sprite = "bio_viro_door" /obj/structure/closet/l3closet/virology/populate_contents() new /obj/item/storage/bag/bio( src ) @@ -28,7 +26,6 @@ /obj/structure/closet/l3closet/security icon_state = "bio_sec" - open_door_sprite = "bio_sec_door" /obj/structure/closet/l3closet/security/populate_contents() new /obj/item/clothing/suit/bio_suit/security( src ) @@ -36,15 +33,12 @@ /obj/structure/closet/l3closet/janitor icon_state = "bio_jan" - open_door_sprite = "bio_jan_door" /obj/structure/closet/l3closet/janitor/populate_contents() new /obj/item/clothing/suit/bio_suit/janitor( src ) new /obj/item/clothing/head/bio_hood/janitor( src ) /obj/structure/closet/l3closet/scientist - icon_state = "bio" - open_door_sprite = "bio_door" /obj/structure/closet/l3closet/scientist/populate_contents() new /obj/item/storage/bag/bio( src ) diff --git a/code/game/objects/structures/crates_lockers/closets/malfunction.dm b/code/game/objects/structures/crates_lockers/closets/malfunction.dm index fb834c86d951..5665c22e2349 100644 --- a/code/game/objects/structures/crates_lockers/closets/malfunction.dm +++ b/code/game/objects/structures/crates_lockers/closets/malfunction.dm @@ -2,7 +2,6 @@ /obj/structure/closet/malf/suits desc = "It's a storage unit for operational gear." icon_state = "syndicate" - open_door_sprite = "syndicate_door" /obj/structure/closet/malf/suits/populate_contents() new /obj/item/tank/jetpack/void(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm index 0cf7d24743a1..cb7b14245c3b 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm @@ -2,7 +2,7 @@ name = "Booze cabinet" req_access = list(ACCESS_BAR) icon_state = "cabinet" - open_door_sprite = "cabinet_door" + door_anim_time = 0 resistance_flags = FLAMMABLE max_integrity = 70 open_sound = 'sound/machines/wooden_closet_open.ogg' diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo_lockers.dm index 4c7538a47569..b7d77603e542 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo_lockers.dm @@ -2,7 +2,6 @@ name = "cargo technician's locker" req_access = list(ACCESS_CARGO) icon_state = "cargo" - open_door_sprite = "mining_door" /obj/structure/closet/secure_closet/cargotech/populate_contents() new /obj/item/clothing/under/rank/cargo/tech(src) @@ -17,11 +16,13 @@ name = "explorer's locker" req_access = list(ACCESS_EXPEDITION) icon_state = "explorer" - open_door_sprite = "mining_door" + opened_door_sprite = "cargo" + /obj/structure/closet/secure_closet/explorer/populate_contents() new /obj/item/radio/headset/headset_cargo/expedition(src) new /obj/item/gun/energy/kinetic_accelerator/pistol(src) + new /obj/item/clothing/suit/hooded/explorer(src) new /obj/item/storage/firstaid/regular(src) new /obj/item/clothing/accessory/holster(src) new /obj/item/beacon(src) @@ -35,7 +36,7 @@ name = "quartermaster's locker" req_access = list(ACCESS_QM) icon_state = "qm" - open_door_sprite = "mining_door" + opened_door_sprite = "cargo" /obj/structure/closet/secure_closet/quartermaster/populate_contents() new /obj/item/radio/headset/heads/qm(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm index ba3921954fcf..396429ac01a8 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm @@ -3,7 +3,9 @@ desc = "A lockable storage unit for Nanotrasen-approved religious attire." req_access = list(ACCESS_CHAPEL_OFFICE) icon_state = "chaplain" - open_door_sprite = "chaplain_door" + opened_door_sprite = "chaplain" + closed_door_sprite = "chaplain" + /obj/structure/closet/secure_closet/chaplain/populate_contents() new /obj/item/storage/bag/garment/chaplain(src) @@ -12,3 +14,4 @@ new /obj/item/storage/fancy/candle_box/eternal(src) new /obj/item/storage/fancy/candle_box/eternal(src) new /obj/item/storage/fancy/candle_box/eternal(src) + new /obj/item/thurible(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm index cd5bc0a40ccb..da1de586b792 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering_lockers.dm @@ -2,7 +2,7 @@ name = "chief engineer's locker" req_access = list(ACCESS_CE) icon_state = "ce" - open_door_sprite = "white_secure_door" + opened_door_sprite = "white_secure" /obj/structure/closet/secure_closet/engineering_chief/populate_contents() if(prob(50)) @@ -36,9 +36,8 @@ /obj/structure/closet/secure_closet/engineering_electrical name = "electrical supplies locker" req_access = list(ACCESS_ENGINE_EQUIP) - icon_state = "eng_elec" - open_door_sprite = "eng_door" - icon_opened = "eng_open" + icon_state = "eng" + closed_door_sprite = "eng_elec" /obj/structure/closet/secure_closet/engineering_electrical/populate_contents() new /obj/item/clothing/gloves/color/yellow(src) @@ -58,9 +57,8 @@ /obj/structure/closet/secure_closet/engineering_welding name = "welding supplies locker" req_access = list(ACCESS_ENGINE_EQUIP) - icon_state = "eng_weld" - open_door_sprite = "eng_door" - icon_opened = "eng_open" + icon_state = "eng" + closed_door_sprite = "eng_weld" /obj/structure/closet/secure_closet/engineering_welding/populate_contents() new /obj/item/clothing/head/welding(src) @@ -74,8 +72,8 @@ /obj/structure/closet/secure_closet/engineering_personal name = "engineer's locker" req_access = list(ACCESS_ENGINE_EQUIP) - icon_state = "eng_secure" - open_door_sprite = "eng_secure_door" + icon_state = "eng" + closed_door_sprite = "eng_secure" /obj/structure/closet/secure_closet/engineering_personal/populate_contents() if(prob(50)) @@ -100,7 +98,7 @@ name = "technician's locker" req_access = list(ACCESS_ATMOSPHERICS) icon_state = "atmos" - open_door_sprite = "eng_secure_door" + opened_door_sprite = "eng_secure" /obj/structure/closet/secure_closet/atmos_personal/populate_contents() new /obj/item/radio/headset/headset_eng(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index 8eead41d2096..b057e49c04d0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -1,5 +1,8 @@ /obj/structure/closet/secure_closet/freezer desc = "It's a card-locked refrigerative storage unit. This one is lead-lined." + door_anim_squish = 0.22 + door_anim_angle = 123 + door_anim_time = 2.50 /obj/structure/closet/secure_closet/freezer/ex_act(severity) // IF INDIANA JONES CAN DO IT SO CAN YOU @@ -40,7 +43,6 @@ /obj/structure/closet/secure_closet/freezer/meat name = "meat fridge" icon_state = "freezer" - open_door_sprite = "freezer_door" /obj/structure/closet/secure_closet/freezer/meat/populate_contents() for(var/i in 1 to 4) @@ -53,7 +55,6 @@ /obj/structure/closet/secure_closet/freezer/fridge name = "refrigerator" icon_state = "freezer" - open_door_sprite = "freezer_door" /obj/structure/closet/secure_closet/freezer/fridge/populate_contents() for(var/i in 1 to 5) @@ -69,7 +70,6 @@ /obj/structure/closet/secure_closet/freezer/money name = "freezer" icon_state = "freezer" - open_door_sprite = "freezer_door" req_access = list(ACCESS_HEADS_VAULT) /obj/structure/closet/secure_closet/freezer/money/populate_contents() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm index 5ceea3aadf7d..6d9594370699 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm @@ -2,6 +2,7 @@ name = "gun cabinet" req_access = list(ACCESS_ARMORY) icon = 'icons/obj/guncabinet.dmi' + door_anim_time = 0 icon_state = "base" anchored = TRUE @@ -45,12 +46,9 @@ gun.pixel_x = i*4 . += gun - - . += "door" if(broken) . += "off" - else if(locked) - . += "locked" + . += ..() // Parent call at the end instead of the beginning because we need the gun overlays to be drawn first, then the door. /obj/structure/closet/secure_closet/guncabinet/cc req_access = list(ACCESS_CENT_SPECOPS_COMMANDER) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics_closets.dm index 7e23e79e0d5a..bd885e2eaefe 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics_closets.dm @@ -2,7 +2,6 @@ name = "botanist's locker" req_access = list(ACCESS_HYDROPONICS) icon_state = "hydro" - open_door_sprite = "hydro_door" /obj/structure/closet/secure_closet/hydroponics/populate_contents() switch(rand(1,2)) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm index dddf8e330afb..4deaab7a3af1 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm @@ -2,8 +2,6 @@ name = "medicine closet" desc = "Filled with medical junk." icon_state = "med" - open_door_sprite = "med_door" - icon_opened = "med_open" req_access = list(ACCESS_MEDICAL) /obj/structure/closet/secure_closet/medical1/populate_contents() @@ -25,8 +23,6 @@ name = "anesthetic locker" desc = "Used to knock people out." icon_state = "med" - open_door_sprite = "med_door" - icon_opened = "med_open" req_access = list(ACCESS_SURGERY) /obj/structure/closet/secure_closet/medical2/populate_contents() @@ -42,7 +38,7 @@ name = "medical doctor's locker" req_access = list(ACCESS_MEDICAL) icon_state = "med_secure" - open_door_sprite = "white_secure_door" + opened_door_sprite = "white_secure" /obj/structure/closet/secure_closet/medical3/populate_contents() if(prob(50)) @@ -68,8 +64,6 @@ name = "exam room closet" desc = "Filled with exam room materials." icon_state = "med" - open_door_sprite = "med_door" - icon_opened = "med_open" req_access = list(ACCESS_MEDICAL) /obj/structure/closet/secure_closet/exam/populate_contents() @@ -121,7 +115,7 @@ name = "psychiatrist's locker" req_access = list(ACCESS_PSYCHIATRIST) icon_state = "med_secure" - open_door_sprite = "white_secure_door" + opened_door_sprite = "white_secure" /obj/structure/closet/secure_closet/psychiatrist/populate_contents() new /obj/item/storage/bag/garment/psychologist(src) @@ -142,7 +136,6 @@ name = "chief medical officer's locker" req_access = list(ACCESS_CMO) icon_state = "cmo" - open_door_sprite = "cmo_door" /obj/structure/closet/secure_closet/CMO/populate_contents() if(prob(50)) @@ -183,9 +176,7 @@ /obj/structure/closet/secure_closet/chemical name = "chemical closet" desc = "Store dangerous chemicals in here." - icon_state = "chemical" - open_door_sprite = "med_door" - icon_opened = "med_open" + icon_state = "med" req_access = list(ACCESS_CHEMISTRY) /obj/structure/closet/secure_closet/chemical/populate_contents() @@ -198,8 +189,6 @@ name = "paramedic EVA gear" desc = "A locker with a Rescue MODsuit." icon_state = "med" - open_door_sprite = "med_door" - icon_opened = "med_open" req_access = list(ACCESS_PARAMEDIC) /obj/structure/closet/secure_closet/paramedic/populate_contents() @@ -220,9 +209,8 @@ /obj/structure/closet/secure_closet/reagents name = "chemical storage closet" desc = "Store dangerous chemicals in here." - icon_state = "chemical" - open_door_sprite = "med_door" - icon_opened = "med_open" + icon_state = "med" + closed_door_sprite = "chemical" req_access = list(ACCESS_CHEMISTRY) /obj/structure/closet/secure_closet/reagents/populate_contents() @@ -236,9 +224,8 @@ /obj/structure/closet/secure_closet/genetics name = "genetics test subject locker" desc = "Storage for lesser form cubes." - icon_state = "genetics" - open_door_sprite = "med_door" - icon_opened = "med_open" + icon_state = "med" + closed_door_sprite = "genetics" req_access = list(ACCESS_GENETICS) /obj/structure/closet/secure_closet/genetics/populate_contents() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm index abcc17d19198..d5c3db2497d2 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm @@ -2,7 +2,6 @@ name = "clown's locker" req_access = list(ACCESS_CLOWN) icon_state = "clown" - open_door_sprite = "clown_door" /obj/structure/closet/secure_closet/clown/populate_contents() new /obj/item/storage/backpack/clown(src) @@ -28,7 +27,6 @@ name = "mime's locker" req_access = list(ACCESS_MIME) icon_state = "mime" - open_door_sprite = "mime_door" // It's silent! open_sound = null close_sound = null diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 7cf47a65ec15..d63ed5eba740 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -23,7 +23,7 @@ /obj/structure/closet/secure_closet/personal/cabinet icon_state = "cabinet" - open_door_sprite = "cabinet_door" + door_anim_time = 0 resistance_flags = FLAMMABLE max_integrity = 70 open_sound = 'sound/machines/wooden_closet_open.ogg' @@ -39,10 +39,6 @@ if(opened || !istype(W, /obj/item/card/id)) return ..() - if(broken) - to_chat(user, "It appears to be broken.") - return - if(istype(W, /obj/item/card/id/guest)) to_chat(user, "Invalid identification card.") return @@ -51,24 +47,16 @@ if(!I || !I.registered_name) return - if(src == user.loc) - to_chat(user, "You can't reach the lock from inside.") - else if(allowed(user) || !registered_name || (istype(I) && (registered_name == I.registered_name))) - cut_overlays() - //they can open all lockers, or nobody owns this, or they own this locker - locked = !locked - if(locked) - add_overlay("locked") - else - add_overlay("unlocked") - icon_state = icon_closed + togglelock(user) + if(!locked) registered_name = null desc = initial(desc) if(!registered_name && locked) registered_name = I.registered_name - desc = "Owned by [I.registered_name]." + desc = "Owned by [I.registered_name]." + else to_chat(user, "Access denied.") diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 85cf3434504a..08b9bfc951a0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -2,7 +2,7 @@ name = "scientist's locker" req_access = list(ACCESS_TOX_STORAGE) icon_state = "science" - open_door_sprite = "white_secure_door" + opened_door_sprite = "white_secure" /obj/structure/closet/secure_closet/scientist/populate_contents() new /obj/item/storage/backpack/science(src) @@ -22,7 +22,6 @@ name = "roboticist's locker" req_access = list(ACCESS_ROBOTICS) icon_state = "robotics" - open_door_sprite = "robotics_door" /obj/structure/closet/secure_closet/roboticist/populate_contents() new /obj/item/mod/core/standard(src) @@ -43,7 +42,7 @@ name = "research director's locker" req_access = list(ACCESS_RD) icon_state = "rd" - open_door_sprite = "rd_door" + /obj/structure/closet/secure_closet/RD/populate_contents() new /obj/item/storage/bag/garment/research_director(src) @@ -65,9 +64,8 @@ /obj/structure/closet/secure_closet/research_reagents name = "research chemical storage closet" desc = "Store dangerous chemicals in here." - icon_state = "rchemical" - open_door_sprite = "med_door" - icon_opened = "med_open" + icon_state = "med" + closed_door_sprite = "rchemical" req_access = list(ACCESS_TOX_STORAGE) /obj/structure/closet/secure_closet/research_reagents/populate_contents() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 88103ce801b1..31c8b8e53641 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -3,9 +3,9 @@ desc = "It's an immobile card-locked storage unit." icon = 'icons/obj/closet.dmi' icon_state = "secure" - open_door_sprite = "secure_door" opened = FALSE locked = TRUE + secure = TRUE can_be_emaged = TRUE max_integrity = 250 armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, RAD = 0, FIRE = 80, ACID = 80) @@ -18,14 +18,6 @@ return FALSE return ..() -/obj/structure/closet/secure_closet/close() - if(..()) - if(broken) - update_icon() - return TRUE - else - return FALSE - /obj/structure/closet/secure_closet/emp_act(severity) for(var/obj/O in src) O.emp_act(severity) @@ -71,9 +63,9 @@ if(!broken) broken = TRUE locked = FALSE - add_overlay("sparking") + flick_overlay_view(image(icon, src, "sparking"), src, 1 SECONDS) to_chat(user, "You break the lock on [src].") - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 1 SECONDS) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 1 SECONDS) // Update the icon so the lock actually appears broken return TRUE /obj/structure/closet/secure_closet/attack_hand(mob/user) @@ -83,20 +75,6 @@ else toggle(user) -/obj/structure/closet/secure_closet/update_overlays() //Putting the welded stuff in update_overlays() so it's easy to overwrite for special cases (Fridges, cabinets, and whatnot) - cut_overlays() - if(opened) - add_overlay(open_door_sprite) - return - if(welded) - add_overlay("welded") - if(broken) - return - if(locked) - add_overlay("locked") - else - add_overlay("unlocked") - /obj/structure/closet/secure_closet/container_resist(mob/living/L) var/breakout_time = 2 MINUTES if(opened) @@ -113,7 +91,7 @@ spawn(0) - if(do_after(usr, breakout_time, target = src, allow_moving = TRUE, allow_moving_target = TRUE)) + if(do_after(usr, breakout_time, target = src, allow_moving = TRUE, allow_moving_target = TRUE)) if(!src || !L || L.stat != CONSCIOUS || L.loc != src || opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm index 6d96d6e054e3..4b077715daf6 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm @@ -2,7 +2,6 @@ name = "captain's locker" req_access = list(ACCESS_CAPTAIN) icon_state = "cap" - open_door_sprite = "cap_door" /obj/structure/closet/secure_closet/captains/populate_contents() if(prob(50)) @@ -25,7 +24,6 @@ name = "head of personnel's locker" req_access = list(ACCESS_HOP) icon_state = "hop" - open_door_sprite = "hop_door" /obj/structure/closet/secure_closet/hop/populate_contents() new /obj/item/cartridge/hop(src) @@ -43,7 +41,6 @@ name = "head of security's locker" req_access = list(ACCESS_HOS) icon_state = "hos" - open_door_sprite = "hos_door" /obj/structure/closet/secure_closet/hos/populate_contents() if(prob(50)) @@ -72,7 +69,7 @@ name = "warden's locker" req_access = list(ACCESS_ARMORY) icon_state = "warden" - open_door_sprite = "sec_door" + opened_door_sprite = "sec" /obj/structure/closet/secure_closet/warden/populate_contents() if(prob(50)) @@ -94,7 +91,6 @@ name = "security officer's locker" req_access = list(ACCESS_SECURITY) icon_state = "sec" - open_door_sprite = "sec_door" /obj/structure/closet/secure_closet/security/populate_contents() if(prob(50)) @@ -123,9 +119,8 @@ /obj/structure/closet/secure_closet/blueshield name = "blueshield's locker" req_access = list(ACCESS_BLUESHIELD) - icon_state = "bs" - open_door_sprite = "hop_door" - icon_opened = "hop_open" + icon_state = "hop" + closed_door_sprite = "bs" /obj/structure/closet/secure_closet/blueshield/populate_contents() new /obj/item/storage/backpack/blueshield(src) @@ -145,9 +140,8 @@ /obj/structure/closet/secure_closet/ntrep name = "\improper Nanotrasen Representative's locker" req_access = list(ACCESS_NTREP) - icon_state = "ntr" - open_door_sprite = "hop_door" - icon_opened = "hop_open" + icon_state = "hop" + closed_door_sprite = "ntr" /obj/structure/closet/secure_closet/ntrep/populate_contents() new /obj/item/book/manual/wiki/faxes(src) @@ -188,7 +182,7 @@ name = "detective's cabinet" req_access = list(ACCESS_FORENSICS_LOCKERS) icon_state = "cabinet" - open_door_sprite = "cabinet_door" + door_anim_time = 0 resistance_flags = FLAMMABLE max_integrity = 70 open_sound = 'sound/machines/wooden_closet_open.ogg' @@ -225,6 +219,7 @@ /obj/structure/closet/secure_closet/brig/populate_contents() new /obj/item/clothing/under/color/orange/prison(src) + new /obj/item/clothing/under/color/jumpskirt/orange/prison(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/card/id/prisoner/random(src) new /obj/item/radio/headset(src) @@ -305,7 +300,7 @@ name = "\improper Magistrate's locker" req_access = list(ACCESS_MAGISTRATE) icon_state = "magi" - open_door_sprite = "chaplain_door" + opened_door_sprite = "chaplain" /obj/structure/closet/secure_closet/magistrate/populate_contents() new /obj/item/book/manual/wiki/faxes(src) @@ -322,9 +317,9 @@ /obj/structure/closet/secure_closet/iaa name = "internal affairs locker" req_access = list(ACCESS_INTERNAL_AFFAIRS) - icon_opened = "magi_open" - icon_state = "iaa" - open_door_sprite = "chaplain_door" + icon_state = "magi" + opened_door_sprite = "chaplain" + closed_door_sprite = "iaa" /obj/structure/closet/secure_closet/iaa/populate_contents() new /obj/item/book/manual/wiki/faxes(src) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate_lockers.dm b/code/game/objects/structures/crates_lockers/closets/syndicate_lockers.dm index 83aa4880511f..c542218bbc37 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate_lockers.dm @@ -2,7 +2,8 @@ name = "armoury closet" desc = "Why is this here?" icon_state = "syndicate" - open_door_sprite = "syndicate_door" + opened_door_sprite = "syndicate" + closed_door_sprite = "syndicate" /obj/structure/closet/syndicate/personal desc = "It's a storage unit for operative gear." diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 500b4adb1011..ca2feacb1a3e 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -16,7 +16,6 @@ name = "emergency closet" desc = "It's a storage unit for emergency breathmasks and o2 tanks." icon_state = "emergency" - open_door_sprite = "emergency_door" /obj/structure/closet/emcloset/anchored anchored = TRUE @@ -60,7 +59,6 @@ name = "fire-safety closet" desc = "It's a storage unit for fire-fighting supplies." icon_state = "fire" - open_door_sprite = "fire_door" /obj/structure/closet/firecloset/populate_contents() new /obj/item/extinguisher(src) @@ -84,9 +82,8 @@ /obj/structure/closet/toolcloset name = "tool closet" desc = "It's a storage unit for tools." - icon_state = "eng_tool" - open_door_sprite = "eng_door" - icon_opened = "eng_open" + icon_state = "eng" + closed_door_sprite = "eng_tool" /obj/structure/closet/toolcloset/populate_contents() if(prob(40)) @@ -127,9 +124,8 @@ /obj/structure/closet/radiation name = "radiation suit closet" desc = "It's a storage unit for rad-protective suits." - icon_state = "eng_rad" - open_door_sprite = "eng_door" - icon_opened = "eng_open" + icon_state = "eng" + closed_door_sprite = "eng_rad" /obj/structure/closet/radiation/populate_contents() new /obj/item/geiger_counter(src) @@ -143,7 +139,6 @@ name = "\improper EOD closet" desc = "It's a storage unit for explosion-protective suits." icon_state = "bomb" - open_door_sprite = "bomb_door" /obj/structure/closet/bombcloset/populate_contents() new /obj/item/clothing/suit/bomb_suit( src ) @@ -156,7 +151,6 @@ name = "\improper EOD closet" desc = "It's a storage unit for explosion-protective suits." icon_state = "bomb" - open_door_sprite = "bomb_door" /obj/structure/closet/bombclosetsecurity/populate_contents() new /obj/item/clothing/suit/bomb_suit/security( src ) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 5a886277cb63..cab056f24be0 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -1,9 +1,9 @@ /obj/structure/closet/wardrobe name = "wardrobe" desc = "It's a storage unit for standard-issue Nanotrasen attire." - icon_opened = "generic_open" - open_door_sprite = "generic_door" - icon_state = "blue" + icon_state = "generic" + closed_door_sprite = "blue" + /obj/structure/closet/wardrobe/generic // Identical to the base wardrobe, aside from containing some stuff. @@ -12,6 +12,9 @@ new /obj/item/clothing/under/color/blue(src) new /obj/item/clothing/under/color/blue(src) new /obj/item/clothing/under/color/blue(src) + new /obj/item/clothing/under/color/jumpskirt/blue(src) + new /obj/item/clothing/under/color/jumpskirt/blue(src) + new /obj/item/clothing/under/color/jumpskirt/blue(src) new /obj/item/clothing/mask/bandana/blue(src) new /obj/item/clothing/mask/bandana/blue(src) new /obj/item/clothing/mask/bandana/blue(src) @@ -22,7 +25,8 @@ /obj/structure/closet/wardrobe/red name = "security wardrobe" - icon_state = "red" + closed_door_sprite = "red" + /obj/structure/closet/wardrobe/populate_contents() new /obj/item/storage/backpack/duffel/security(src) @@ -57,7 +61,7 @@ /obj/structure/closet/redcorp name = "corporate security wardrobe" - icon_state = "red" + closed_door_sprite = "red" /obj/structure/closet/redcorp/populate_contents() new /obj/item/clothing/under/rank/security/officer/corporate(src) @@ -69,24 +73,30 @@ /obj/structure/closet/wardrobe/pink name = "pink wardrobe" - icon_state = "pink" + closed_door_sprite = "pink" /obj/structure/closet/wardrobe/pink/populate_contents() new /obj/item/clothing/under/color/pink(src) new /obj/item/clothing/under/color/pink(src) new /obj/item/clothing/under/color/pink(src) + new /obj/item/clothing/under/color/jumpskirt/pink(src) + new /obj/item/clothing/under/color/jumpskirt/pink(src) + new /obj/item/clothing/under/color/jumpskirt/pink(src) new /obj/item/clothing/shoes/brown(src) new /obj/item/clothing/shoes/brown(src) new /obj/item/clothing/shoes/brown(src) /obj/structure/closet/wardrobe/black name = "black wardrobe" - icon_state = "black" + closed_door_sprite = "black" /obj/structure/closet/wardrobe/black/populate_contents() new /obj/item/clothing/under/color/black(src) new /obj/item/clothing/under/color/black(src) new /obj/item/clothing/under/color/black(src) + new /obj/item/clothing/under/color/jumpskirt/black(src) + new /obj/item/clothing/under/color/jumpskirt/black(src) + new /obj/item/clothing/under/color/jumpskirt/black(src) if(prob(25)) new /obj/item/clothing/suit/jacket/leather(src) new /obj/item/clothing/shoes/black(src) @@ -101,19 +111,22 @@ /obj/structure/closet/wardrobe/green name = "green wardrobe" - icon_state = "green" + closed_door_sprite = "green" /obj/structure/closet/wardrobe/green/populate_contents() new /obj/item/clothing/under/color/green(src) new /obj/item/clothing/under/color/green(src) new /obj/item/clothing/under/color/green(src) + new /obj/item/clothing/under/color/jumpskirt/green(src) + new /obj/item/clothing/under/color/jumpskirt/green(src) + new /obj/item/clothing/under/color/jumpskirt/green(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) /obj/structure/closet/wardrobe/xenos name = "xenos wardrobe" - icon_state = "green" + closed_door_sprite = "green" /obj/structure/closet/wardrobe/xenos/populate_contents() new /obj/item/clothing/suit/unathi/mantle(src) @@ -130,12 +143,15 @@ /obj/structure/closet/wardrobe/orange name = "orange wardrobe" - icon_state = "orange" + closed_door_sprite = "orange" /obj/structure/closet/wardrobe/orange/populate_contents() new /obj/item/clothing/under/color/orange(src) new /obj/item/clothing/under/color/orange(src) new /obj/item/clothing/under/color/orange(src) + new /obj/item/clothing/under/color/jumpskirt/orange(src) + new /obj/item/clothing/under/color/jumpskirt/orange(src) + new /obj/item/clothing/under/color/jumpskirt/orange(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) @@ -148,18 +164,24 @@ new /obj/item/clothing/under/color/orange/prison(src) new /obj/item/clothing/under/color/orange/prison(src) new /obj/item/clothing/under/color/orange/prison(src) + new /obj/item/clothing/under/color/jumpskirt/orange/prison(src) + new /obj/item/clothing/under/color/jumpskirt/orange/prison(src) + new /obj/item/clothing/under/color/jumpskirt/orange/prison(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) /obj/structure/closet/wardrobe/yellow name = "yellow wardrobe" - icon_state = "yellow" + closed_door_sprite = "yellow" /obj/structure/closet/wardrobe/yellow/populate_contents() new /obj/item/clothing/under/color/yellow(src) new /obj/item/clothing/under/color/yellow(src) new /obj/item/clothing/under/color/yellow(src) + new /obj/item/clothing/under/color/jumpskirt/yellow(src) + new /obj/item/clothing/under/color/jumpskirt/yellow(src) + new /obj/item/clothing/under/color/jumpskirt/yellow(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) new /obj/item/clothing/shoes/orange(src) @@ -167,7 +189,7 @@ /obj/structure/closet/wardrobe/atmospherics_yellow name = "atmospherics wardrobe" - icon_state = "atmos_wardrobe" + closed_door_sprite = "atmos_wardrobe" /obj/structure/closet/wardrobe/atmospherics_yellow/populate_contents() new /obj/item/clothing/under/rank/engineering/atmospheric_technician(src) @@ -190,7 +212,7 @@ /obj/structure/closet/wardrobe/engineering_yellow name = "engineering wardrobe" - icon_state = "yellow" + closed_door_sprite = "yellow" /obj/structure/closet/wardrobe/engineering_yellow/populate_contents() new /obj/item/clothing/under/rank/engineering/engineer(src) @@ -212,19 +234,22 @@ /obj/structure/closet/wardrobe/white name = "white wardrobe" - icon_state = "white" + closed_door_sprite = "white" /obj/structure/closet/wardrobe/white/populate_contents() new /obj/item/clothing/under/color/white(src) new /obj/item/clothing/under/color/white(src) new /obj/item/clothing/under/color/white(src) + new /obj/item/clothing/under/color/jumpskirt/white(src) + new /obj/item/clothing/under/color/jumpskirt/white(src) + new /obj/item/clothing/under/color/jumpskirt/white(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) /obj/structure/closet/wardrobe/medical_white name = "medical doctor's wardrobe" - icon_state = "white" + closed_door_sprite = "white" /obj/structure/closet/wardrobe/medical_white/populate_contents() new /obj/item/clothing/under/rank/medical/nursesuit (src) @@ -252,7 +277,7 @@ /obj/structure/closet/wardrobe/pjs name = "Pajama wardrobe" - icon_state = "white" + closed_door_sprite = "white" /obj/structure/closet/wardrobe/pjs/populate_contents() new /obj/item/clothing/under/misc/pj/red(src) @@ -267,7 +292,7 @@ /obj/structure/closet/wardrobe/toxins_white name = "toxins wardrobe" - icon_state = "white" + closed_door_sprite = "white" /obj/structure/closet/wardrobe/toxins_white/populate_contents() new /obj/item/clothing/under/rank/rnd/scientist(src) @@ -289,7 +314,7 @@ /obj/structure/closet/wardrobe/robotics_black name = "robotics wardrobe" - icon_state = "black" + closed_door_sprite = "black" /obj/structure/closet/wardrobe/robotics_black/populate_contents() new /obj/item/clothing/under/rank/rnd/roboticist(src) @@ -306,7 +331,7 @@ /obj/structure/closet/wardrobe/chemistry_white name = "chemistry wardrobe" - icon_state = "white" + closed_door_sprite = "white" /obj/structure/closet/wardrobe/chemistry_white/populate_contents() new /obj/item/clothing/under/rank/medical/chemist(src) @@ -329,7 +354,7 @@ /obj/structure/closet/wardrobe/genetics_white name = "genetics wardrobe" - icon_state = "white" + closed_door_sprite = "white" /obj/structure/closet/wardrobe/genetics_white/populate_contents() new /obj/item/clothing/under/rank/rnd/geneticist(src) @@ -346,7 +371,7 @@ /obj/structure/closet/wardrobe/virology_white name = "virology wardrobe" - icon_state = "white" + closed_door_sprite = "white" /obj/structure/closet/wardrobe/virology_white/populate_contents() new /obj/item/clothing/under/rank/medical/virologist(src) @@ -367,7 +392,7 @@ /obj/structure/closet/wardrobe/medic_white name = "medical wardrobe" - icon_state = "white" + closed_door_sprite = "white" /obj/structure/closet/wardrobe/medic_white/populate_contents() new /obj/item/clothing/under/rank/medical/doctor(src) @@ -393,12 +418,15 @@ /obj/structure/closet/wardrobe/grey name = "grey wardrobe" - icon_state = "grey" + closed_door_sprite = "grey" /obj/structure/closet/wardrobe/grey/populate_contents() new /obj/item/clothing/under/color/grey(src) new /obj/item/clothing/under/color/grey(src) new /obj/item/clothing/under/color/grey(src) + new /obj/item/clothing/under/color/jumpskirt/grey(src) + new /obj/item/clothing/under/color/jumpskirt/grey(src) + new /obj/item/clothing/under/color/jumpskirt/grey(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) @@ -415,7 +443,7 @@ /obj/structure/closet/wardrobe/mixed name = "mixed wardrobe" - icon_state = "mixed" + closed_door_sprite = "mixed" /obj/structure/closet/wardrobe/mixed/populate_contents() new /obj/item/clothing/under/color/blue(src) @@ -423,9 +451,11 @@ new /obj/item/clothing/under/color/green(src) new /obj/item/clothing/under/color/orange(src) new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/under/dress/plaid_blue(src) - new /obj/item/clothing/under/dress/plaid_red(src) - new /obj/item/clothing/under/dress/plaid_purple(src) + new /obj/item/clothing/under/color/jumpskirt/blue(src) + new /obj/item/clothing/under/color/jumpskirt/yellow(src) + new /obj/item/clothing/under/color/jumpskirt/green(src) + new /obj/item/clothing/under/color/jumpskirt/orange(src) + new /obj/item/clothing/under/color/jumpskirt/pink(src) new /obj/item/clothing/shoes/blue(src) new /obj/item/clothing/shoes/yellow(src) new /obj/item/clothing/shoes/green(src) @@ -435,7 +465,7 @@ /obj/structure/closet/wardrobe/coroner name = "coroner wardrobe" - icon_state = "black" + closed_door_sprite = "black" /obj/structure/closet/wardrobe/coroner/populate_contents() if(prob(50)) diff --git a/code/game/objects/structures/crates_lockers/crittercrate.dm b/code/game/objects/structures/crates_lockers/crittercrate.dm index d11418b046e9..a9cde951b34f 100644 --- a/code/game/objects/structures/crates_lockers/crittercrate.dm +++ b/code/game/objects/structures/crates_lockers/crittercrate.dm @@ -2,9 +2,9 @@ name = "critter crate" desc = "A crate designed for safe transport of animals. Only openable from the the outside." icon_state = "critter" - icon_opened = "critter_open" - icon_closed = "critter" - open_door_sprite = null + has_opened_overlay = FALSE + closed_door_sprite = "critter" + door_anim_time = 0 var/already_opened = FALSE var/content_mob = null var/amount = 1 diff --git a/code/game/objects/structures/crates_lockers/walllocker.dm b/code/game/objects/structures/crates_lockers/walllocker.dm index 51089a072aa3..3ae4503676e6 100644 --- a/code/game/objects/structures/crates_lockers/walllocker.dm +++ b/code/game/objects/structures/crates_lockers/walllocker.dm @@ -6,6 +6,8 @@ name = "wall locker" icon = 'icons/obj/walllocker.dmi' icon_state = "wall-locker" + door_anim_time = 0 + enable_door_overlay = FALSE density = FALSE anchored = TRUE icon_closed = "wall-locker" @@ -19,6 +21,7 @@ name = "emergency locker" desc = "A wall mounted locker with emergency supplies" icon_state = "emerg" + door_anim_time = 0 icon_closed = "emerg" icon_opened = "emerg_open" diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 11409c535f17..b708793ac85b 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -38,7 +38,7 @@ if(showpiece_entry["trophy_message"]) trophy_message = showpiece_entry["trophy_message"] if(start_showpiece_type) - showpiece = new start_showpiece_type (src) + showpiece = new start_showpiece_type(src) update_icon(UPDATE_OVERLAYS) /obj/structure/displaycase/Destroy() diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 6e3bcbd9171a..3511f2bb5e47 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -285,8 +285,7 @@ if(electronics) target.electronics = source.electronics source.electronics.forceMove(target) - target.update_icon(UPDATE_OVERLAYS) - target.update_name() + target.update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) qdel(source) /obj/structure/door_assembly/deconstruct(disassembled = TRUE) diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 111c7931d9cc..7c7f95f3e8d9 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -167,6 +167,11 @@ new mineral(loc) qdel(src) +/obj/structure/falsewall/set_smoothed_icon_state(new_junction) + if(opening || !density) + return + return ..() + /* * False R-Walls */ diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index a34e31f6738f..e6921569f7b8 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -292,13 +292,20 @@ RegisterSignal(user, COMSIG_CARBON_REGENERATE_ICONS, PROC_REF(reapply_hide)) mob_overlay = mutable_appearance(icon, icon_state, user.layer, user.plane, 255, appearance_flags = RESET_COLOR | RESET_TRANSFORM | RESET_ALPHA | KEEP_APART) user.add_overlay(mob_overlay) - user.alpha = 0 + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.set_alpha_tracking(0, src) + else + user.alpha = 0 /// User has either dropped the plant, or plant is being destroyed, restore user to normal. /obj/item/kirbyplants/proc/unhide_user(mob/living/carbon/user) UnregisterSignal(user, COMSIG_CARBON_REGENERATE_ICONS) user.cut_overlay(mob_overlay) user.alpha = initial(user.alpha) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.set_alpha_tracking(ALPHA_VISIBLE, src) QDEL_NULL(mob_overlay) /// Icon operation has occured, time to make sure we're showing a plant again if we need to be. diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 1bd26e78f0f4..d1f47ae9ac88 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -26,14 +26,14 @@ if(GIRDER_REINF_STRUTS) . += "The support struts are unscrewed and the inner grille is intact." if(GIRDER_NORMAL) - if(can_displace) - . += "The bolts are lodged in place." + . += "The bolts are lodged in place." if(GIRDER_DISPLACED) . += "The bolts are loosened, but the screws are holding [src] together." if(GIRDER_DISASSEMBLED) . += "[src] is disassembled! You probably shouldn't be able to see this examine message." . += "Various types of metal sheets can be used on this to create different kinds of walls." - . += "Apply a crowbar to this item to cause any walls to be made to be false walls. Use a wrench on this item to deconstruct it." + if(can_displace) + . += "Apply a crowbar to this item to cause any walls to be made to be false walls. Use a wrench on this item to deconstruct it." /obj/structure/girder/proc/refundMetal(metalAmount) //refunds metal used in construction when deconstructed @@ -437,6 +437,7 @@ name = "displaced girder" icon_state = "displaced" anchored = FALSE + can_displace = FALSE state = GIRDER_DISPLACED girderpasschance = 25 max_integrity = 120 @@ -445,6 +446,7 @@ name = "reinforced girder" icon_state = "reinforced" state = GIRDER_REINF + can_displace = FALSE girderpasschance = 0 max_integrity = 350 diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm index ab26beb2cf56..4b05102f5731 100644 --- a/code/game/objects/structures/lavaland/necropolis_tendril.dm +++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm @@ -88,7 +88,7 @@ GLOBAL_LIST_EMPTY(tendrils) shake_camera(M, 15, 1) playsound(get_turf(src),'sound/effects/explosionfar.ogg', 200, TRUE) visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") - for(var/turf/T in range(2,src)) + for(var/turf/T in range(LAVALAND_TENDRIL_COLLAPSE_RANGE, src)) if(!T.density) T.TerraformTurf(/turf/simulated/floor/chasm/straight_down/lava_land_surface) qdel(src) diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index dde36ebb6cee..de327bca7e24 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -243,6 +243,6 @@ blockage.max_integrity += 25 foam_level++ blockage.icon_state = "foamed_[foam_level]" - blockage.update_icon_state() + blockage.update_icon(UPDATE_ICON_STATE) #undef MAX_FOAM_LEVEL diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 37e590e40c34..437fa7ddc6e4 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -106,7 +106,7 @@ return TRUE if(ismob(mover)) var/mob/living/M = mover - if(M.flying || (istype(M) && IS_HORIZONTAL(M) && HAS_TRAIT(M, TRAIT_CONTORTED_BODY))) + if(HAS_TRAIT(M, TRAIT_FLYING) || (istype(M) && IS_HORIZONTAL(M) && HAS_TRAIT(M, TRAIT_CONTORTED_BODY))) return TRUE if(mover.throwing) return TRUE @@ -133,7 +133,7 @@ if(isprojectile(O)) return TRUE if(istype(M)) - if(M.flying || M.floating || (IS_HORIZONTAL(M) && HAS_TRAIT(M, TRAIT_CONTORTED_BODY))) + if(HAS_TRAIT(M, TRAIT_FLYING) || M.floating || (IS_HORIZONTAL(M) && HAS_TRAIT(M, TRAIT_CONTORTED_BODY))) return TRUE if(O.throwing) return TRUE diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index aedb6c687651..fa06f02f4fd8 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -71,10 +71,16 @@ GLOBAL_LIST_EMPTY(safes) // Combination generation for(var/i in 1 to number_of_tumblers) tumblers.Add(rand(0, 99)) + if(mapload) + addtimer(CALLBACK(src, PROC_REF(take_contents)), 0) + +/obj/structure/safe/proc/take_contents() // Put as many items on our turf inside as possible for(var/obj/item/I in loc) + if(I.density || I.anchored) + continue if(space >= maxspace) - return + break if(I.w_class + space <= maxspace) space += I.w_class I.forceMove(src) @@ -339,14 +345,14 @@ GLOBAL_LIST_EMPTY(safes) if(get_dist(src, driller) >= 9) return //You need to be near the drill if you want to get the buff. for(var/mob/living/carbon/human/H in view(9, src)) - if(H.job in list("Security Officer", "Detective", "Warden", "Head of Security", "Captain", "Clown") || H.mind.special_role == SPECIAL_ROLE_ERT) + if((H.job in list("Security Officer", "Detective", "Warden", "Head of Security", "Captain", "Clown")) || H.mind.special_role == SPECIAL_ROLE_ERT) if(H.mind && H.mind.special_role && H.mind.special_role != SPECIAL_ROLE_ERT) continue drill.spotted = TRUE security_assualt_in_progress() return for(var/mob/living/carbon/human/H in view(9, driller)) - if(H.job in list("Security Officer", "Detective", "Warden", "Head of Security", "Captain", "Clown") || H.mind.special_role == SPECIAL_ROLE_ERT) + if((H.job in list("Security Officer", "Detective", "Warden", "Head of Security", "Captain", "Clown")) || H.mind.special_role == SPECIAL_ROLE_ERT) if(H.mind && H.mind.special_role && H.mind.special_role != SPECIAL_ROLE_ERT) continue drill.spotted = TRUE diff --git a/code/game/objects/structures/shelves.dm b/code/game/objects/structures/shelves.dm new file mode 100644 index 000000000000..71d8f84fd9dd --- /dev/null +++ b/code/game/objects/structures/shelves.dm @@ -0,0 +1,139 @@ +GLOBAL_LIST_INIT(shelf_colors, list("basic", "sci", "sup", "serv", "med", "sec", "cmd", "engi")) + +/obj/structure/shelf + name = "shelf" + desc = "A piece of furniture used for vertical storage." + icon = 'icons/obj/structures/shelves.dmi' + icon_state = "shelf_basic" + layer = TABLE_LAYER + density = TRUE + anchored = TRUE + pass_flags_self = PASSTAKE + max_integrity = 80 + /// The suffix of the icon state used for the shelf. Indexed into `GLOB.shelf_colors`. + var/shelf_style = "basic" + /// The current overlay of the top shelf. Used for interleaving objects and shelf layers for the illusion of depth. + var/image/shelf_overlay + COOLDOWN_DECLARE(spraypaint_cd) + +/obj/structure/shelf/Initialize(mapload) + . = ..() + var/area/A = get_area(src) + AddComponent(/datum/component/shelver/basic_shelf, random_pickup_locations_ = istype(A, /area/station/maintenance)) + update_icon() + set_style(shelf_style) + + if(mapload) + SEND_SIGNAL(src, COMSIG_SHELF_ADDED_ON_MAPLOAD) + +/obj/structure/shelf/attackby(obj/item/I, mob/living/user, params) + var/obj/item/toy/crayon/spraycan/spraycan = I + if(!istype(spraycan)) + return ..() + if(spraycan.capped) + return ..() + + if(!COOLDOWN_FINISHED(src, spraypaint_cd)) + to_chat(user, "The paint on [src] is still drying!") + return + + var/cur_idx = GLOB.shelf_colors.Find(shelf_style) + if(!cur_idx) + cur_idx = 1 + cur_idx++ + if(cur_idx > length(GLOB.shelf_colors)) + cur_idx = 1 + set_style(GLOB.shelf_colors[cur_idx]) + spraycan.play_spray_sound(user) + + // Tiny cooldown to prevent constant spamming of the action + COOLDOWN_START(src, spraypaint_cd, 1 SECONDS) + +/obj/structure/shelf/proc/set_style(new_style) + if(shelf_style == new_style && !isnull(shelf_overlay)) + return + shelf_style = new_style + icon_state = "shelf_[shelf_style]" + // Don't think I can get away with both icon smoothing across tiles + // and dealing with this overlay shit + shelf_overlay = mutable_appearance('icons/obj/structures/shelves.dmi', "shelf_[shelf_style]-top") + shelf_overlay.layer = LOW_ITEM_LAYER + update_appearance(UPDATE_OVERLAYS) + +/obj/structure/shelf/update_overlays() + return list(shelf_overlay) + +/obj/structure/shelf/wrench_act(mob/living/user, obj/item/I) + . = TRUE + if(user.a_intent == INTENT_HELP) + return FALSE + if(!I.use_tool(src, user, 2.5 SECONDS, volume = I.tool_volume)) + return + + to_chat(user, "You disassemble [src].") + deconstruct() + +/obj/structure/shelf/deconstruct(disassembled) + new /obj/item/stack/sheet/metal(get_turf(src), 5) + return ..() + +/obj/structure/shelf/engineering + icon_state = "shelf_engi" + shelf_style = "engi" + +/obj/structure/shelf/medbay + icon_state = "shelf_med" + shelf_style = "med" + +/obj/structure/shelf/security + icon_state = "shelf_sec" + shelf_style = "sec" + +/obj/structure/shelf/service + icon_state = "shelf_serv" + shelf_style = "serv" + +/obj/structure/shelf/science + icon_state = "shelf_sci" + shelf_style = "sci" + +/obj/structure/shelf/command + icon_state = "shelf_cmd" + shelf_style = "cmd" + +/obj/structure/shelf/supply + icon_state = "shelf_sup" + shelf_style = "sup" + +/obj/structure/gunrack + name = "gun rack" + desc = "A rack for stowing firearms." + icon = 'icons/obj/structures.dmi' + icon_state = "gunrack" + layer = TABLE_LAYER + density = TRUE + anchored = TRUE + pass_flags_self = PASSTAKE + max_integrity = 80 + +/obj/structure/gunrack/Initialize(mapload) + . = ..() + var/static/list/gun_subtypes = subtypesof(/obj/item/gun) + AddComponent(/datum/component/shelver/gun_rack, allowed_types_ = gun_subtypes) + + if(mapload) + SEND_SIGNAL(src, COMSIG_SHELF_ADDED_ON_MAPLOAD) + +/obj/structure/gunrack/wrench_act(mob/living/user, obj/item/I) + . = TRUE + if(user.a_intent == INTENT_HELP) + return FALSE + if(!I.use_tool(src, user, 2.5 SECONDS, volume = I.tool_volume)) + return + + to_chat(user, "You disassemble [src].") + deconstruct() + +/obj/structure/gunrack/deconstruct(disassembled) + new /obj/item/stack/sheet/metal(get_turf(src), 5) + return ..() diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 0ed32826e24d..b1b2089f6c3a 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -3,7 +3,7 @@ anchored = TRUE opacity = FALSE density = FALSE - layer = 3.5 + layer = NOT_HIGH_OBJ_LAYER max_integrity = 100 armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 50, ACID = 50) flags_2 = RAD_PROTECT_CONTENTS_2 | RAD_NO_CONTAMINATE_2 diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 3a0a16795376..14fa44bc785a 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -308,11 +308,11 @@ anchored = TRUE oreAmount = 0 -/obj/structure/statue/russian_mulebot +/obj/structure/statue/soviet_mulebot name = "OXENbot" - desc = "Like a MULEbot, but more Russian and less functional."; - icon = 'icons/obj/aibots.dmi'; - icon_state = "mulebot0"; + desc = "Like a MULEbot, but more socialist and less functional." + icon = 'icons/obj/aibots.dmi' + icon_state = "mulebot0" anchored = TRUE oreAmount = 10 diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index f84af512c5ea..067158533c98 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -17,6 +17,16 @@ var/mob/living/buckled_mob = m buckled_mob.setDir(dir) +/obj/structure/chair/wheelchair/post_buckle_mob(mob/living/M) + . = ..() + handle_layer() + density = TRUE + +/obj/structure/chair/wheelchair/post_unbuckle_mob() + . = ..() + handle_layer() + density = FALSE + /obj/structure/chair/wheelchair/relaymove(mob/user, direction) if(propelled) return 0 diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 8e9dad45c928..60ec516c9392 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -100,6 +100,16 @@ if(flipped) clear_smooth_overlays() +// Need to override this to allow flipped tables to be mapped in without the smoothing subsystem resetting the icon_state +/obj/structure/table/set_smoothed_icon_state(new_junction) + if(flipped) + return + ..() + +/obj/structure/table/flipped + icon_state = "tableflip0" + flipped = TRUE + /obj/structure/table/narsie_act() new /obj/structure/table/wood(loc) qdel(src) @@ -130,7 +140,7 @@ if(istype(mover,/obj/item/projectile)) return (check_cover(mover,target)) var/mob/living/living_mover = mover - if(istype(living_mover) && (living_mover.flying || (IS_HORIZONTAL(living_mover) && HAS_TRAIT(living_mover, TRAIT_CONTORTED_BODY)))) + if(istype(living_mover) && (HAS_TRAIT(living_mover, TRAIT_FLYING) || (IS_HORIZONTAL(living_mover) && HAS_TRAIT(living_mover, TRAIT_CONTORTED_BODY)))) return TRUE if(istype(mover) && mover.checkpass(PASSTABLE)) return TRUE @@ -474,7 +484,7 @@ if(!isliving(AM)) return var/mob/living/L = AM - if(L.incorporeal_move || L.flying || L.floating) + if(L.incorporeal_move || HAS_TRAIT(L, TRAIT_FLYING) || L.floating) return // Don't break if they're just flying past diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm index bfc860d6bd5f..9836fb7343f4 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm @@ -37,7 +37,7 @@ return flipped = !flipped - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/structure/transit_tube_construction/screwdriver_act(mob/living/user, obj/item/I) . = TRUE diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 7ec565955a45..e48086e57db5 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -776,6 +776,7 @@ glass_type = /obj/item/stack/sheet/plastitaniumglass smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM, SMOOTH_GROUP_PLASTITANIUM_WALLS) canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM, SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS) + env_smash_level = ENVIRONMENT_SMASH_RWALLS //used in shuttles, same reason as above superconductivity = ZERO_HEAT_TRANSFER_COEFFICIENT /obj/structure/window/reinforced/clockwork diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index a175af95f5a5..303e8d5b6efc 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -37,7 +37,7 @@ /turf/simulated/proc/burn_tile() return -/turf/simulated/cleaning_act(mob/user, atom/cleaner, cleanspeed = 50, text_verb = "clean", text_description = " with [cleaner].", text_targetname = name) +/turf/simulated/cleaning_act(mob/user, atom/cleaner, cleanspeed = 50, text_verb = "clean", text_description = " with [cleaner].", text_targetname = name, skip_do_after = FALSE) if(!..()) return @@ -124,7 +124,7 @@ if(IS_HORIZONTAL(M)) return 1 - if(M.flying) + if(HAS_TRAIT(M, TRAIT_FLYING)) return ..() switch(src.wet) diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 021c17091523..dce375016fde 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -2,7 +2,7 @@ GLOBAL_LIST_INIT(icons_to_ignore_at_floor_init, list("damaged1","damaged2","damaged3","damaged4", "damaged5","panelscorched","floorscorched1","floorscorched2","platingdmg1","platingdmg2", "platingdmg3","plating","light_on","warnplate", "warnplatecorner","metalfoam", "ironfoam", - "light_off","wall_thermite","grass1","grass2","grass3","grass4", + "light_off","grass1","grass2","grass3","grass4", "asteroid","asteroid_dug","asteroid0","asteroid1","asteroid2","asteroid3","asteroid4", "asteroid5","asteroid6","asteroid7","asteroid8","asteroid9","asteroid10","asteroid11","asteroid12", "oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood", "wood-broken", "carpet", diff --git a/code/game/turfs/simulated/floor/asteroid_floors.dm b/code/game/turfs/simulated/floor/asteroid_floors.dm index 44021a067a0d..e67c4a7c0f5e 100644 --- a/code/game/turfs/simulated/floor/asteroid_floors.dm +++ b/code/game/turfs/simulated/floor/asteroid_floors.dm @@ -1,7 +1,6 @@ /**********************Asteroid**************************/ -#define RECURSION_MAX 100 /turf/simulated/floor/plating/asteroid gender = PLURAL name = "asteroid sand" @@ -186,168 +185,6 @@ nitrogen = 0 turf_type = /turf/simulated/floor/plating/asteroid/airless -#define SPAWN_MEGAFAUNA "bluh bluh huge boss" -#define SPAWN_BUBBLEGUM 6 - -GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/megafauna/dragon = 4, /mob/living/simple_animal/hostile/megafauna/colossus = 2, /mob/living/simple_animal/hostile/megafauna/bubblegum = SPAWN_BUBBLEGUM, /mob/living/simple_animal/hostile/megafauna/ancient_robot = 4)) - -/turf/simulated/floor/plating/asteroid/airless/cave - var/length = 100 - var/list/mob_spawn_list - var/list/megafauna_spawn_list - var/list/flora_spawn_list - var/sanity = 1 - var/forward_cave_dir = 1 - var/backward_cave_dir = 2 - var/going_backwards = TRUE - var/has_data = FALSE - /// Very important for making sure prod won't die due to poor RNG from cave spawns - var/recursions = 0 - var/data_having_type = /turf/simulated/floor/plating/asteroid/airless/cave/has_data - turf_type = /turf/simulated/floor/plating/asteroid/airless - -/// subtype for producing a tunnel with given data -/turf/simulated/floor/plating/asteroid/airless/cave/has_data - has_data = TRUE - -/turf/simulated/floor/plating/asteroid/airless/cave/volcanic - mob_spawn_list = list(/obj/effect/landmark/mob_spawner/goliath = 50, /obj/structure/spawner/lavaland/goliath = 3, - /obj/effect/landmark/mob_spawner/watcher = 40, /obj/structure/spawner/lavaland = 2, - /obj/effect/landmark/mob_spawner/legion = 30, /obj/structure/spawner/lavaland/legion = 3, - SPAWN_MEGAFAUNA = 6, /obj/effect/landmark/mob_spawner/goldgrub = 10, /obj/effect/landmark/mob_spawner/gutlunch = 4, - /obj/effect/landmark/mob_spawner/abandoned_minebot = 6) - - data_having_type = /turf/simulated/floor/plating/asteroid/airless/cave/volcanic/has_data - turf_type = /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface - oxygen = LAVALAND_OXYGEN - nitrogen = LAVALAND_NITROGEN - temperature = LAVALAND_TEMPERATURE - -/// subtype for producing a tunnel with given data -/turf/simulated/floor/plating/asteroid/airless/cave/volcanic/has_data - has_data = TRUE - -/turf/simulated/floor/plating/asteroid/airless/cave/Initialize(mapload) - if(!mob_spawn_list) - mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goldgrub = 1, /mob/living/simple_animal/hostile/asteroid/goliath = 5, /mob/living/simple_animal/hostile/asteroid/basilisk = 4, /mob/living/simple_animal/hostile/asteroid/hivelord = 3) - if(!megafauna_spawn_list) - megafauna_spawn_list = GLOB.megafauna_spawn_list - if(!flora_spawn_list) - flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2, /obj/structure/flora/ash/cap_shroom = 2, /obj/structure/flora/ash/stem_shroom = 2, /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2, /obj/structure/flora/ash/rock/style_random = 1) - if(SSmapping.cave_theme == BLOCKED_BURROWS) - flora_spawn_list += list(/obj/structure/flora/ash/rock/style_random = 3) //Let us see how this goes - . = ..() - if(!has_data) - produce_tunnel_from_data() - -/turf/simulated/floor/plating/asteroid/airless/cave/proc/get_cave_data(set_length, exclude_dir = -1) - // If set_length (arg1) isn't defined, get a random length; otherwise assign our length to the length arg. - if(!set_length) - length = rand(25, 50) - else - length = set_length - - // Get our directiosn - forward_cave_dir = pick(GLOB.alldirs - exclude_dir) - // Get the opposite direction of our facing direction - backward_cave_dir = angle2dir(dir2angle(forward_cave_dir) + 180) - -/turf/simulated/floor/plating/asteroid/airless/cave/proc/produce_tunnel_from_data(tunnel_length, excluded_dir = -1) - if(!tunnel_length)//This is a sub cave do not overide repeat do not overide - get_cave_data(tunnel_length, excluded_dir) - switch(SSmapping.cave_theme) - if(BLOCKED_BURROWS) //Longer on average - get_cave_data(rand(40, 60), excluded_dir) - if(CLASSIC_CAVES) //Classic - get_cave_data(tunnel_length, excluded_dir) - if(DEADLY_DEEPROCK) //Smaller into large rooms with more mobs. - get_cave_data(rand(20, 40), excluded_dir) - if(prob(25)) //Less caves due to big openings. This may lead to fauna inside 1x1 rooms. We'll call that a suprise mechanic - SpawnFloor(src, 75) //now with extra suprise - return - // Make our tunnels - make_tunnel(forward_cave_dir) - if(going_backwards) - make_tunnel(backward_cave_dir) - // Kill ourselves by replacing ourselves with a normal floor. - SpawnFloor(src) - -/turf/simulated/floor/plating/asteroid/airless/cave/proc/make_tunnel(dir) - var/turf/simulated/mineral/tunnel = src - var/next_angle = pick(45, -45) - - for(var/i in 1 to length) - ++recursions - if(recursions > RECURSION_MAX) - break - if(!sanity) - break - - var/list/L = list(45) - if(ISODD(dir2angle(dir)) && (!(SSmapping.cave_theme == BLOCKED_BURROWS) || prob(15))) - L += -45 - - // Expand the edges of our tunnel - for(var/edge_angle in L) - var/turf/simulated/mineral/edge = get_step(tunnel, angle2dir(dir2angle(dir) + edge_angle)) - if(istype(edge)) - SpawnFloor(edge) - - if(!sanity) - break - - // Move our tunnel forward - tunnel = get_step(tunnel, dir) - - // Separate ruin area check here because of the raw ChangeTurf call that - // doesn't go through SpawnFloor/Flora/Monster. - if(istype(tunnel) && !istype(tunnel.loc, /area/ruin)) - // Small chance to have forks in our tunnel; otherwise dig our tunnel. - var/caveprob = 20 - switch(SSmapping.cave_theme) - if(BLOCKED_BURROWS) //Longer on average - caveprob = 30 //More splitting - if(DEADLY_DEEPROCK) //Smaller into large rooms with more mobs. - caveprob = 10 //Less splitting - if(i > 3 && prob(caveprob)) - var/turf/simulated/floor/plating/asteroid/airless/cave/C = tunnel.ChangeTurf(data_having_type, FALSE, TRUE) - C.recursions = recursions - C.going_backwards = FALSE - C.produce_tunnel_from_data(rand(10, 15), dir) - else - SpawnFloor(tunnel) - else //if(!istype(tunnel, src.parent)) // We hit space/normal/wall, stop our tunnel. - break - - // Chance to change our direction left or right. - if(i > 2 && prob(33)) - // We can't go a full loop though - if(!SSmapping.cave_theme == BLOCKED_BURROWS || prob(60)) - next_angle = -next_angle - setDir(angle2dir(dir2angle(dir) )+ next_angle) - if(length -2 == i && !has_data) //Branches will not make this - SpawnRoom(tunnel) - -/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnRoom(turf/T) - switch(SSmapping.cave_theme) - if(DEADLY_DEEPROCK) - var/tempradius = rand(10, 15) - var/probmodifer = 43 * tempradius //Yes this is a magic number, it is a magic number that works well. - for(var/turf/NT in circlerangeturfs(T, tempradius)) - var/distance = (max(get_dist(T, NT), 1)) //Get dist throws -1 if same turf - if(prob(min(probmodifer / distance, 100))) - if((ismineralturf(NT) || istype(NT, /turf/simulated/floor/plating/asteroid)) && !istype(NT.loc, /area/ruin)) //No spawning on lava / other ruins - SpawnFloor(NT, 50) //Room has higher probabilty. - if(prob(25)) - tempradius = round(tempradius / 3) - var/turf/oasis_lake = pickweight(list(/turf/simulated/floor/lava/lava_land_surface = 4, /turf/simulated/floor/lava/lava_land_surface/plasma = 4, /turf/simulated/floor/chasm/straight_down/lava_land_surface = 4, /turf/simulated/floor/lava/mapping_lava = 6, /turf/simulated/floor/beach/away/water/lavaland_air = 1, /turf/simulated/floor/plating/asteroid = 1)) - if(oasis_lake == /turf/simulated/floor/plating/asteroid) - new /obj/effect/spawner/oasisrock(T, tempradius) - for(var/turf/oasis in circlerangeturfs(T, tempradius)) - if(istype(oasis.loc, /area/ruin)) - continue - oasis.ChangeTurf(oasis_lake, ignore_air = TRUE) - /obj/effect/spawner/oasisrock name = "Oasis rock spawner" var/passed_radius @@ -375,86 +212,6 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me O.forceMove(pick_n_take(valid_turfs)) qdel(src) -/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnFloor(turf/T, monsterprob = 30) - if(istype(T.loc, /area/ruin)) - return - - for(var/S in RANGE_TURFS(1, src)) - var/turf/NT = S - if(!NT || isspaceturf(NT) || istype(NT.loc, /area/lavaland/surface/outdoors/explored)) - sanity = 0 - break - if(!sanity) - return - SpawnFlora(T) - - SpawnMonster(T, monsterprob) - T.ChangeTurf(turf_type, FALSE, FALSE, TRUE) - -/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnMonster(turf/T, monsterprob = 30) - if(istype(T.loc, /area/ruin)) - return - - if(prob(monsterprob)) - if(!istype(loc, /area/lavaland/surface/outdoors/unexplored)) - return - var/randumb = pickweight(mob_spawn_list) - while(randumb == SPAWN_MEGAFAUNA) - if(istype(loc, /area/lavaland/surface/outdoors/unexplored/danger)) //this is danger. it's boss time. - var/maybe_boss = pickweight(megafauna_spawn_list) - if(megafauna_spawn_list[maybe_boss]) - randumb = maybe_boss - else //this is not danger, don't spawn a boss, spawn something else - randumb = pickweight(mob_spawn_list) - var/scanrange = 12 - var/megafaunarange = 7 - switch(SSmapping.cave_theme) - if(DEADLY_DEEPROCK) - if(prob(50) && monsterprob > 30) - scanrange = rand(4, 7) - megafaunarange = scanrange - for(var/thing in urange(scanrange, T)) //prevents mob clumps - if(!ishostile(thing) && !istype(thing, /obj/structure/spawner)) - continue - if((ismegafauna(randumb) || ismegafauna(thing)) && get_dist(T, thing) <= megafaunarange) - return //if there's a megafauna within standard view don't spawn anything at all - if(ispath(randumb, /obj/effect/landmark/mob_spawner) || istype(thing, /mob/living/simple_animal/hostile/asteroid)) - return //if the random is a standard mob, avoid spawning if there's another one within 12 tiles - if((ispath(randumb, /obj/structure/spawner/lavaland) || istype(thing, /obj/structure/spawner/lavaland)) && get_dist(T, thing) <= 2) - return //prevents tendrils spawning in each other's collapse range - - if(ispath(randumb, /mob/living/simple_animal/hostile/megafauna/bubblegum)) //there can be only one bubblegum, so don't waste spawns on it - megafauna_spawn_list.Remove(randumb) - - if(ispath(randumb, /mob/living/simple_animal/hostile/megafauna/ancient_robot)) //same as above, we do not want multiple of these robots - megafauna_spawn_list.Remove(randumb) - - new randumb(T) - SSblackbox.record_feedback("tally", "lavaland_mob_spawns", 1, "[randumb]") - -#undef SPAWN_MEGAFAUNA -#undef SPAWN_BUBBLEGUM -#undef RECURSION_MAX - -/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnFlora(turf/T) - if(istype(T.loc, /area/ruin)) - return - - var/floraprob = 12 - switch(SSmapping.cave_theme) - if(BLOCKED_BURROWS) - floraprob = 30 //Lots of folliage, lots of blockage - if(prob(floraprob)) - if(istype(loc, /area/lavaland/surface/outdoors/explored)) - return - var/randumb = pickweight(flora_spawn_list) - for(var/obj/structure/flora/ash/F in range(4, T)) //Allows for growing patches, but not ridiculous stacks of flora - if(!istype(F, randumb)) - return - new randumb(T) - - - /turf/simulated/floor/plating/asteroid/snow gender = PLURAL name = "snow" diff --git a/code/game/turfs/simulated/floor/chasm.dm b/code/game/turfs/simulated/floor/chasm.dm index 61be5dd4a8b3..86e26e198edf 100644 --- a/code/game/turfs/simulated/floor/chasm.dm +++ b/code/game/turfs/simulated/floor/chasm.dm @@ -130,7 +130,7 @@ //Flies right over the chasm if(isliving(AM)) var/mob/living/M = AM - if(M.flying || M.floating) + if(HAS_TRAIT(M, TRAIT_FLYING) || M.floating) return FALSE if(istype(M.buckled, /obj/tgvehicle/scooter/skateboard/hoverboard)) return FALSE @@ -273,10 +273,10 @@ playsound(ourturf, 'sound/effects/bang.ogg', 50, TRUE) ourturf.visible_message("[escapee] busts through [ourturf], leaping out of the chasm below!") ourturf.ChangeTurf(ourturf.baseturf) - escapee.flying = TRUE + ADD_TRAIT(escapee, TRAIT_FLYING, "chasm_escape") escapee.forceMove(ourturf) escapee.throw_at(get_edge_target_turf(ourturf, pick(GLOB.alldirs)), rand(2, 10), rand(2, 10)) - escapee.flying = FALSE + REMOVE_TRAIT(escapee, TRAIT_FLYING, "chasm_escape") escapee.Sleeping(20 SECONDS) /turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air diff --git a/code/game/turfs/simulated/floor/lava.dm b/code/game/turfs/simulated/floor/lava.dm index d28d298fa551..2eab0b2fb0d6 100644 --- a/code/game/turfs/simulated/floor/lava.dm +++ b/code/game/turfs/simulated/floor/lava.dm @@ -96,7 +96,7 @@ else if(isliving(thing)) . = TRUE var/mob/living/L = thing - if(L.flying) + if(HAS_TRAIT(L, TRAIT_FLYING)) continue //YOU'RE FLYING OVER IT var/buckle_check = L.buckling if(!buckle_check) @@ -221,7 +221,7 @@ continue . = TRUE var/mob/living/burn_living = thing - if(burn_living.flying) + if(HAS_TRAIT(burn_living, TRAIT_FLYING)) continue //YOU'RE FLYING OVER IT var/buckle_check = burn_living.buckling if(!buckle_check) diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm index da4915de892b..5861ecf00f05 100644 --- a/code/game/turfs/simulated/floor/plasteel_floor.dm +++ b/code/game/turfs/simulated/floor/plasteel_floor.dm @@ -79,14 +79,15 @@ /turf/simulated/floor/plasteel/stairs icon_state = "stairs" + /turf/simulated/floor/plasteel/stairs/left icon_state = "stairs-l" + /turf/simulated/floor/plasteel/stairs/medium icon_state = "stairs-m" + /turf/simulated/floor/plasteel/stairs/right icon_state = "stairs-r" -/turf/simulated/floor/plasteel/stairs/old - icon_state = "stairs-old" /turf/simulated/floor/plasteel/grimy icon_state = "grimy" diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index eba6c7ace8c8..82e34dd3f79d 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -319,12 +319,11 @@ atmos_mode = ATMOS_MODE_NO_DECAY /turf/simulated/floor/engine/singularity_pull(S, current_size) - ..() if(current_size >= STAGE_FIVE) if(floor_tile) if(prob(30)) new floor_tile(src) - make_plating() + make_plating(TRUE) else if(prob(30)) ReplaceWithLattice() diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 279acca967bf..3d9e34d57062 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -137,7 +137,7 @@ /turf/simulated/mineral/random var/mineralSpawnChanceList = list(/turf/simulated/mineral/uranium = 5, /turf/simulated/mineral/diamond = 1, /turf/simulated/mineral/gold = 10, /turf/simulated/mineral/silver = 12, /turf/simulated/mineral/plasma = 20, /turf/simulated/mineral/iron = 40, /turf/simulated/mineral/titanium = 11, - /turf/simulated/mineral/gibtonite = 4, /turf/simulated/floor/plating/asteroid/airless/cave = 2, /turf/simulated/mineral/bscrystal = 1) + /turf/simulated/mineral/gibtonite = 4, /turf/simulated/mineral/bscrystal = 1) //Currently, Adamantine won't spawn as it has no uses. -Durandan var/mineralChance = 13 diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index e6d6844116ce..596dc3251eb4 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -139,7 +139,7 @@ GLOBAL_PROTECT(admin_ranks) // this shit is being protected for obvious reasons holder.rights = GLOB.admin_ranks[newrank] else holder = new /datum/admins(newrank,GLOB.admin_ranks[newrank],ckey) - remove_admin_verbs() + hide_verbs() holder.associate(src) /client/verb/changerights(newrights as num) @@ -147,7 +147,7 @@ GLOBAL_PROTECT(admin_ranks) // this shit is being protected for obvious reasons holder.rights = newrights else holder = new /datum/admins("testing",newrights,ckey) - remove_admin_verbs() + hide_verbs() holder.associate(src) #endif diff --git a/code/modules/admin/misc_admin_procs.dm b/code/modules/admin/misc_admin_procs.dm index 18d88eb0bcbf..c3b494022863 100644 --- a/code/modules/admin/misc_admin_procs.dm +++ b/code/modules/admin/misc_admin_procs.dm @@ -7,7 +7,7 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE) //////////////////////////////// /proc/message_admins(msg) - msg = "ADMIN LOG: [msg]" + msg = "ADMIN LOG: [msg]" for(var/client/C in GLOB.admins) if(R_ADMIN & C.holder.rights) if(C.prefs && !(C.prefs.toggles & PREFTOGGLE_CHAT_NO_ADMINLOGS)) @@ -15,7 +15,7 @@ GLOBAL_VAR_INIT(disable_explosions, FALSE) /proc/msg_admin_attack(text, loglevel) if(!GLOB.nologevent) - var/rendered = "ATTACK: [text]" + var/rendered = "ATTACK: [text]" for(var/client/C in GLOB.admins) if((C.holder.rights & R_ADMIN) && (C.prefs?.atklog <= loglevel)) to_chat(C, rendered, MESSAGE_TYPE_ATTACKLOG, confidential = TRUE) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 30182fba4868..dc598b438c5f 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -443,6 +443,9 @@ // SS220 EDIT - START if(length(SSticker.mode.blood_brothers)) dat += check_role_table("Blood Brothers", SSticker.mode.blood_brothers) + + if(length(SSticker.mode.vox_raiders)) + dat += check_role_table("Vox Raiders", SSticker.mode.vox_raiders) // SS220 EDIT - END if(length(SSticker.mode.implanted)) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 34d5d48c9fbf..b113e0b0ea7d 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1936,7 +1936,7 @@ P.faxmachineid = fax.UID() P.loc = fax.loc // Do not use fax.receivefax(P) here, as it won't preserve the type. Physically teleporting the fax paper is required. if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/radio/headset) || istype(H.r_ear, /obj/item/radio/headset))) - to_chat(H, "Your headset pings, notifying you that a reply to your fax has arrived.") + to_chat(H, "Your headset pings, notifying you that a reply to your fax has arrived.") to_chat(src.owner, "You sent a [eviltype] fax to [H]") log_admin("[key_name(src.owner)] sent [key_name(H)] a [eviltype] fax") message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a [eviltype] fax") @@ -2338,7 +2338,7 @@ P.update_icon() fax.receivefax(P) if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/radio/headset) || istype(H.r_ear, /obj/item/radio/headset))) - to_chat(H, "Your headset pings, notifying you that a reply to your fax has arrived.") + to_chat(H, "Your headset pings, notifying you that a reply to your fax has arrived.") to_chat(src.owner, "You sent a standard '[stype]' fax to [H]") log_admin("[key_name(src.owner)] sent [key_name(H)] a standard '[stype]' fax") message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a standard '[stype]' fax") @@ -2387,7 +2387,7 @@ to_chat(owner, "The person you are trying to contact is not wearing a headset. ERT denied but no message has been sent.") return to_chat(owner, "You sent [reason] to [H] via a secure channel.") - to_chat(H, "Incoming priority transmission from Central Command. Message as follows, Your ERT request has been denied for the following reasons: [reason].") + to_chat(H, "Incoming priority transmission from Central Command. Message as follows, Your ERT request has been denied for the following reasons: [reason].") else owner.response_team() @@ -2583,7 +2583,7 @@ if(notify == "Yes") var/mob/living/carbon/human/H = sender if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/radio/headset) || istype(H.r_ear, /obj/item/radio/headset))) - to_chat(sender, "Your headset pings, notifying you that a reply to your fax has arrived.") + to_chat(sender, "Your headset pings, notifying you that a reply to your fax has arrived.") if(sender) log_admin("[key_name(src.owner)] replied to a fax message from [key_name(sender)]: [input]") message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(sender)] (VIEW).", 1) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index debe72dcfc1a..b2387c9bc2cf 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -269,14 +269,14 @@ GLOB.discord_manager.send2discord_simple(DISCORD_WEBHOOK_ADMIN, "PM from [key_name(src)]: [html_decode(msg)]") - to_chat(src, "PM to-Discord Admins: [msg]", MESSAGE_TYPE_ADMINPM, confidential = TRUE) + to_chat(src, "PM to-Discord Admins: [msg]", MESSAGE_TYPE_ADMINPM, confidential = TRUE) log_admin("PM: [key_name(src)]->Discord: [msg]") for(var/client/X in GLOB.admins) if(X == src) continue if(check_rights(R_ADMIN, 0, X.mob)) - to_chat(X, "PM: [key_name_admin(src)]->Discord Admins: [msg]") + to_chat(X, "PM: [key_name_admin(src)]->Discord Admins: [msg]") /client/verb/open_pms_ui() set name = "My PMs" diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index d629de50a02a..a6246cad9ac1 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -657,11 +657,11 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/list/special_outfits = list( "Naked", "As Job...", + "As Admin Job...", // SS220 EDIT - Добавил "As Admin Job..." "Custom..." ) - var/list/outfits = list() - var/list/paths = subtypesof(/datum/outfit) - typesof(/datum/outfit/job) - list(/datum/outfit/varedit, /datum/outfit/admin) + var/list/paths = subtypesof(/datum/outfit) - typesof(/datum/outfit/job) - list(/datum/outfit/varedit, /datum/outfit/admin) - typesof(/datum/outfit/job/admin) // SS220 EDIT - subtract typesof(/datum/outfit/job/admin) for(var/path in paths) var/datum/outfit/O = path //not much to initalize here but whatever if(initial(O.can_be_admin_equipped)) @@ -688,7 +688,21 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) dresscode = job_outfits[dresscode] if(isnull(dresscode)) return + // SS220 EDIT START - собственно сама менюшка + if(dresscode == "As Admin Job...") + var/list/admin_job_paths = subtypesof(/datum/outfit/job/admin) + var/list/admin_job_outfits = list() + for(var/path in admin_job_paths) + var/datum/outfit/O = path + if(initial(O.can_be_admin_equipped)) + admin_job_outfits[initial(O.name)] = path + admin_job_outfits = sortTim(admin_job_outfits, GLOBAL_PROC_REF(cmp_text_asc)) + dresscode = input("Select equipment", "Сhoose your fighter") as null|anything in admin_job_outfits + dresscode = admin_job_outfits[dresscode] + if(isnull(dresscode)) + return + // SS220 EDIT END if(dresscode == "Custom...") var/list/custom_names = list() for(var/datum/outfit/D in GLOB.custom_outfits) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 50a37700d35f..0fb7db499b54 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -182,7 +182,7 @@ log_admin("[key_name(src)] replied to [key_name(H)]'s [sender] message with the message [input].") message_admins("[key_name_admin(src)] replied to [key_name_admin(H)]'s [sender] message with: \"[input]\"") - to_chat(H, "Incoming priority transmission from [sender == "Syndicate" ? "your benefactor" : "Central Command"]. Message as follows[sender == "Syndicate" ? ", agent." : ":"] [input]") + to_chat(H, "Incoming priority transmission from [sender == "Syndicate" ? "your benefactor" : "Central Command"]. Message as follows[sender == "Syndicate" ? ", agent." : ":"] [input]") SEND_SOUND(H, 'sound/effects/headset_message.ogg') diff --git a/code/modules/antagonists/changeling/powers/apex_predator.dm b/code/modules/antagonists/changeling/powers/apex_predator.dm index 82134ef55682..cb1a6aecf7f0 100644 --- a/code/modules/antagonists/changeling/powers/apex_predator.dm +++ b/code/modules/antagonists/changeling/powers/apex_predator.dm @@ -10,12 +10,16 @@ /datum/action/changeling/apex_predator/sting_action(mob/user) var/list/target_by_name = list() for(var/mob/living/carbon/human/possible_target as anything in GLOB.human_list) + if(possible_target == user) + continue var/turf/target_turf = get_turf(possible_target) var/turf/user_turf = get_turf(user) if(!possible_target.mind || (target_turf.z != user_turf.z)) continue target_by_name[possible_target.real_name] = possible_target - + if(!length(target_by_name)) + to_chat(user, "There is no prey to be hunted here...") + return var/target_name = tgui_input_list(user, "Person to Locate", "Prey", target_by_name) if(!target_name) return diff --git a/code/modules/antagonists/changeling/powers/environmental_adaption.dm b/code/modules/antagonists/changeling/powers/environmental_adaption.dm index 6935bbdb3be8..7d7e4623abec 100644 --- a/code/modules/antagonists/changeling/powers/environmental_adaption.dm +++ b/code/modules/antagonists/changeling/powers/environmental_adaption.dm @@ -16,6 +16,12 @@ var/recharge_slowdown = 0.15 var/chem_recharge_slowdown = 0 +/datum/action/changeling/environmental_adaptation/Destroy(force, ...) + if(ishuman(cling.owner.current)) + var/mob/living/carbon/human/H = cling.owner.current + H.set_alpha_tracking(ALPHA_VISIBLE, src) + return ..() + /datum/action/changeling/environmental_adaptation/sting_action(mob/living/carbon/human/cling) //SHOULD always be human, because req_human = TRUE ..() is_active = !is_active @@ -26,14 +32,16 @@ /datum/action/changeling/environmental_adaptation/proc/enable_ability(mob/living/carbon/human/cling) //Enable the adaptation - animate(cling, alpha = 65, time = 3 SECONDS) + cling.set_alpha_tracking(65, src, update_alpha = FALSE) + animate(cling, alpha = cling.get_alpha(), time = 3 SECONDS) cling.visible_message("[cling]'s skin suddenly starts becoming translucent!", \ "We adapt our pigmentation to suit the environment around us.") var/datum/antagonist/changeling/changeling_data = cling.mind?.has_antag_datum(/datum/antagonist/changeling) changeling_data?.chem_recharge_slowdown -= recharge_slowdown //Slows down chem regeneration /datum/action/changeling/environmental_adaptation/proc/disable_ability(mob/living/carbon/human/cling) //Restore the adaptation - animate(cling, alpha = 255, time = 3 SECONDS) + cling.set_alpha_tracking(ALPHA_VISIBLE, src, update_alpha = FALSE) + animate(cling, alpha = cling.get_alpha(), time = 3 SECONDS) cling.visible_message( "[cling] appears from thin air!", "We stop concentration on our pigmentation, allowing it to return to normal.", diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 378c7a9bc6a9..7b61383c9423 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -83,6 +83,8 @@ RESTRICT_TYPE(/datum/antagonist/traitor) return ..() /datum/antagonist/traitor/select_organization() + if(isAI(owner.current)) + return var/chaos = pickweight(list(ORG_CHAOS_HUNTER = ORG_PROB_HUNTER, ORG_CHAOS_MILD = ORG_PROB_MILD, ORG_CHAOS_AVERAGE = ORG_PROB_AVERAGE, ORG_CHAOS_HIJACK = ORG_PROB_HIJACK)) for(var/org_type in shuffle(subtypesof(/datum/antag_org/syndicate))) var/datum/antag_org/org = org_type diff --git a/code/modules/antagonists/vampire/vamp_datum.dm b/code/modules/antagonists/vampire/vamp_datum.dm index 60588ac5ca38..3fe4dcc76609 100644 --- a/code/modules/antagonists/vampire/vamp_datum.dm +++ b/code/modules/antagonists/vampire/vamp_datum.dm @@ -36,11 +36,17 @@ RESTRICT_TYPE(/datum/antagonist/vampire) blurb_a = 1 /datum/antagonist/vampire/Destroy(force, ...) - owner.current.create_log(CONVERSION_LOG, "De-vampired") draining = null QDEL_NULL(subclass) return ..() +/datum/antagonist/vampire/detach_from_owner() + owner.current.create_log(CONVERSION_LOG, "De-vampired") + if(ishuman(owner.current)) + var/mob/living/carbon/human/human_owner = owner.current + human_owner.set_alpha_tracking(ALPHA_VISIBLE, src) + return ..() + /datum/antagonist/vampire/add_owner_to_gamemode() SSticker.mode.vampires += owner @@ -233,7 +239,7 @@ RESTRICT_TYPE(/datum/antagonist/vampire) to_chat(owner.current, "Your body is turning to ash, get out of the starlight NOW!") owner.current.adjustCloneLoss(10) //I'm melting! vamp_burn(85) - if(owner.current.cloneloss >= 100) + if(owner.current.getCloneLoss() >= 100) owner.current.dust() /datum/antagonist/vampire/proc/handle_vampire() @@ -258,24 +264,25 @@ RESTRICT_TYPE(/datum/antagonist/vampire) if(!ishuman(owner.current)) owner.current.alpha = 255 return - var/turf/simulated/T = get_turf(owner.current) + var/mob/living/carbon/human/human_owner = owner.current + var/turf/simulated/T = get_turf(human_owner) var/light_available = T.get_lumcount() * 10 if(!istype(T)) return - if(!iscloaking || owner.current.on_fire) - owner.current.alpha = 255 - REMOVE_TRAIT(owner.current, TRAIT_GOTTAGONOTSOFAST, VAMPIRE_TRAIT) + if(!iscloaking || human_owner.on_fire) + human_owner.set_alpha_tracking(ALPHA_VISIBLE, src) + REMOVE_TRAIT(human_owner, TRAIT_GOTTAGONOTSOFAST, VAMPIRE_TRAIT) return if(light_available <= 2) - owner.current.alpha = 38 // round(255 * 0.15) - ADD_TRAIT(owner.current, TRAIT_GOTTAGONOTSOFAST, VAMPIRE_TRAIT) + human_owner.set_alpha_tracking(ALPHA_VISIBLE * 0.15, src) + ADD_TRAIT(human_owner, TRAIT_GOTTAGONOTSOFAST, VAMPIRE_TRAIT) return - REMOVE_TRAIT(owner.current, TRAIT_GOTTAGONOTSOFAST, VAMPIRE_TRAIT) - owner.current.alpha = 204 // 255 * 0.80 + REMOVE_TRAIT(human_owner, TRAIT_GOTTAGONOTSOFAST, VAMPIRE_TRAIT) + human_owner.set_alpha_tracking(ALPHA_VISIBLE * 0.80, src) /** * Handles unique drain ID checks and increases vampire's total and usable blood by blood_amount. Checks for ability upgrades. diff --git a/code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm b/code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm index b39832c1fbec..26c48667a7ce 100644 --- a/code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm +++ b/code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm @@ -55,6 +55,8 @@ var/durability = 15 var/blood_drain_amount = 15 var/blood_absorbed_amount = 5 + var/xenomorph_acid_boosted = FALSE + var/heal_boost = 1 var/datum/spell/vampire/self/vamp_claws/parent_spell /obj/item/vamp_claws/Initialize(mapload, new_parent_spell) @@ -80,20 +82,38 @@ if(!V) return - - if(iscarbon(target)) - var/mob/living/carbon/C = target - if(C.ckey && C.stat != DEAD && C.affects_vampire() && !(NO_BLOOD in C.dna.species.species_traits)) + if(xenomorph_acid_boosted) + target.acid_act(42, 10) // 42 is the acid power of facid, 10 is equal to 100 units. + if(!iscarbon(target)) + return ..() + var/mob/living/carbon/C = target + if(isalien(target)) + if(!xenomorph_acid_boosted) + if(C.ckey && C.stat != DEAD) + to_chat(user, "As [C] bleeds acid, you mix it into your claws!") + xenomorph_acid_boosted = TRUE + durability += 5 // Small boost in durability once. + blood_drain_amount *= 1.5 + blood_absorbed_amount *= 1.5 + force *= 1.5 // 15 force + heal_boost = 2 // This *might* let you survive xeno disarms. Maybe. + damtype = BURN + hitsound = 'sound/weapons/sear.ogg' + color = list(0.5,1,0,0, 0,1,0,0, 0,0,0.5,0, 0,0,0,1, 0,0,0,0) // This makes it coloured acidic green + user.update_inv_r_hand() + user.update_inv_l_hand() + if(C.ckey && C.stat != DEAD && C.affects_vampire()) + if(isalien(C) || !(NO_BLOOD in C.dna.species.species_traits)) // second check runtimes if they are not a xenomorph, but we check xenomorph first C.bleed(blood_drain_amount) V.adjust_blood(C, blood_absorbed_amount) - attacker.adjustStaminaLoss(-20) // security is dead - attacker.heal_overall_damage(4, 4) // the station is full - attacker.AdjustKnockDown(-1 SECONDS) // blood is fuel - if(!V.get_ability(/datum/vampire_passive/blood_spill)) - durability-- - if(durability <= 0) - qdel(src) - to_chat(user, "Your claws shatter!") + attacker.adjustStaminaLoss(-20 * heal_boost) // security is dead + attacker.heal_overall_damage(4 * heal_boost, 4 * heal_boost) // the station is full + attacker.AdjustKnockDown(-1 SECONDS * heal_boost) // blood is fuel + if(!V.get_ability(/datum/vampire_passive/blood_spill)) + durability-- + if(durability <= 0) + qdel(src) + to_chat(user, "Your claws shatter!") /obj/item/vamp_claws/melee_attack_chain(mob/user, atom/target, params) ..() @@ -287,8 +307,12 @@ /datum/spell/vampire/predator_senses/cast(list/targets, mob/user) var/targets_by_name = list() for(var/mob/living/carbon/human/H as anything in targets) + if(H == user) + continue targets_by_name[H.real_name] = H - + if(!length(targets_by_name)) + to_chat(user, "There is no prey to be hunted here...") + return var/target_name = tgui_input_list(user, "Person to Locate", "Blood Stench", targets_by_name) if(!target_name) return diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 86cd73ec61b5..aa1abcaf9798 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -574,21 +574,19 @@ What are the archived variables for? var/energy_released = 0 var/old_heat_capacity = heat_capacity() var/burned_fuel = 0 + burned_fuel = min((1 - (N2O_DECOMPOSITION_COEFFICIENT_A / ((private_temperature + N2O_DECOMPOSITION_COEFFICIENT_C) ** 2))) * private_sleeping_agent, private_sleeping_agent) + private_sleeping_agent -= burned_fuel - burned_fuel = max(0, 0.00002 * (private_temperature - (0.00001 * (private_temperature ** 2)))) * private_sleeping_agent - if(private_sleeping_agent - burned_fuel > 0) - private_sleeping_agent -= burned_fuel + if(burned_fuel) + energy_released += (N2O_DECOMPOSITION_ENERGY_RELEASED * burned_fuel) - if(burned_fuel) - energy_released += (N2O_DECOMPOSITION_ENERGY_RELEASED * burned_fuel) + private_oxygen += burned_fuel * 0.5 + private_nitrogen += burned_fuel - private_oxygen += burned_fuel * 0.5 - private_nitrogen += burned_fuel - - var/new_heat_capacity = heat_capacity() - if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) - private_temperature = (private_temperature * old_heat_capacity + energy_released) / new_heat_capacity - reacting = TRUE + var/new_heat_capacity = heat_capacity() + if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) + private_temperature = (private_temperature * old_heat_capacity + energy_released) / new_heat_capacity + reacting = TRUE fuel_burnt = 0 //Handle plasma burning diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 1363484743c7..4b8b4c2288f2 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -209,7 +209,9 @@ set_pixel_offsets_from_dir(24, -24, 24, -24) GLOB.air_alarms += src - GLOB.air_alarms = sortAtom(GLOB.air_alarms) + + if(!mapload) + GLOB.air_alarms = sortAtom(GLOB.air_alarms) wires = new(src) diff --git a/code/modules/atmospherics/machinery/atmospherics.dm b/code/modules/atmospherics/machinery/atmospherics.dm index a42659c1302c..21f7103bab23 100644 --- a/code/modules/atmospherics/machinery/atmospherics.dm +++ b/code/modules/atmospherics/machinery/atmospherics.dm @@ -106,7 +106,7 @@ Pipelines + Other Objects -> Pipe network pipe_image.plane = HUD_PLANE /obj/machinery/atmospherics/proc/check_icon_cache() - if(!istype(SSair.icon_manager)) + if(!istype(GLOB.pipe_icon_manager)) return FALSE return TRUE @@ -121,17 +121,14 @@ Pipelines + Other Objects -> Pipe network /obj/machinery/atmospherics/proc/add_underlay(turf/T, obj/machinery/atmospherics/node, direction, icon_connect_type) if(node) if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe) && !T.transparent_floor) - //underlays += SSair.icon_manager.get_atmos_icon("underlay_down", direction, color_cache_name(node)) - underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) + underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) else - //underlays += SSair.icon_manager.get_atmos_icon("underlay_intact", direction, color_cache_name(node)) - underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) + underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) else if(T.transparent_floor) //we want to keep pipes under transparent floors connected normally - underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) + underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) else - //underlays += SSair.icon_manager.get_atmos_icon("underlay_exposed", direction, pipe_color) - underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "exposed" + icon_connect_type) + underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "exposed" + icon_connect_type) /obj/machinery/atmospherics/proc/update_underlays() return check_icon_cache() @@ -300,7 +297,7 @@ Pipelines + Other Objects -> Pipe network level = (T.intact || !can_be_undertile) ? 2 : 1 else level = 2 - update_icon_state() + update_icon(UPDATE_ICON_STATE) add_fingerprint(usr) if(!SSair.initialized) //If there's no atmos subsystem, we can't really initialize pipenets SSair.machinery_to_construct.Add(src) @@ -401,14 +398,14 @@ Pipelines + Other Objects -> Pipe network /obj/machinery/atmospherics/proc/add_underlay_adapter(turf/T, obj/machinery/atmospherics/node, direction, icon_connect_type) //modified from add_underlay, does not make exposed underlays if(node) if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe) && !T.transparent_floor) - underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) + underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) else - underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) + underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) else if(T.transparent_floor) //we want to keep pipes under transparent floors connected normally - underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) + underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) else - underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "retracted" + icon_connect_type) + underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "retracted" + icon_connect_type) /obj/machinery/atmospherics/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index 1690df3deffe..599c9c3f1a32 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -10,7 +10,7 @@ var/open = FALSE var/animating = FALSE - req_one_access_txt = "24;10" + req_one_access = list(ACCESS_ENGINE, ACCESS_ATMOSPHERICS) /obj/machinery/atmospherics/binary/valve/examine(mob/user) . = ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index 6bf7a368259d..e252d7598b6a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -87,7 +87,7 @@ else vent_icon += "[on ? "[releasing ? "out" : "in"]" : "off"]" - . += SSair.icon_manager.get_atmos_icon("device", state = vent_icon) + . += GLOB.pipe_icon_manager.get_atmos_icon("device", state = vent_icon) update_pipe_image() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index 07a93295c0fa..5ba4847cf80a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -82,7 +82,7 @@ if(welded) scrubber_icon = "scrubberweld" - . += SSair.icon_manager.get_atmos_icon("device", state = scrubber_icon) + . += GLOB.pipe_icon_manager.get_atmos_icon("device", state = scrubber_icon) update_pipe_image() /obj/machinery/atmospherics/unary/vent_scrubber/update_underlays() diff --git a/code/modules/atmospherics/machinery/datum_icon_manager.dm b/code/modules/atmospherics/machinery/datum_icon_manager.dm index f7a345a7c9a7..50e22fde14f1 100644 --- a/code/modules/atmospherics/machinery/datum_icon_manager.dm +++ b/code/modules/atmospherics/machinery/datum_icon_manager.dm @@ -1,3 +1,4 @@ +GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new) //-------------------------------------------- // Pipe colors // @@ -7,15 +8,15 @@ //-------------------------------------------- /proc/pipe_color_lookup(color) - for(var/C in GLOB.pipe_colors) - if(color == GLOB.pipe_colors[C]) + for(var/C in GLOB.pipe_icon_manager.pipe_colors) + if(color == GLOB.pipe_icon_manager.pipe_colors[C]) return "[C]" /proc/pipe_color_check(color) if(!color) return 1 - for(var/C in GLOB.pipe_colors) - if(color == GLOB.pipe_colors[C]) + for(var/C in GLOB.pipe_icon_manager.pipe_colors) + if(color == GLOB.pipe_icon_manager.pipe_colors[C]) return 1 return 0 @@ -28,11 +29,16 @@ var/list/manifold_icons[] var/list/device_icons[] var/list/underlays[] - //var/list/underlays_down[] - //var/list/underlays_exposed[] - //var/list/underlays_intact[] - //var/list/pipe_underlays_exposed[] - //var/list/pipe_underlays_intact[] + + var/list/pipe_colors = list( + "blue" = PIPE_COLOR_BLUE, + "cyan" = PIPE_COLOR_CYAN, + "green" = PIPE_COLOR_GREEN, + "grey" = PIPE_COLOR_GREY, + "purple" = PIPE_COLOR_PURPLE, + "red" = PIPE_COLOR_RED, + "yellow" = PIPE_COLOR_YELLOW, + ) /datum/pipe_icon_manager/New() check_icons() @@ -54,16 +60,6 @@ return device_icons[state] if("underlay") return underlays[state + dir + color] - //if("underlay_intact") - // return underlays_intact[state + dir + color] - // if("underlay_exposed") - // return underlays_exposed[state + dir + color] - // if("underlay_down") - // return underlays_down[state + dir + color] - // if("pipe_underlay_exposed") - // return pipe_underlays_exposed[state + dir + color] - // if("pipe_underlay_intact") - // return pipe_underlays_intact[state + dir + color] /datum/pipe_icon_manager/proc/check_icons() if(!pipe_icons) @@ -72,7 +68,6 @@ gen_manifold_icons() if(!device_icons) gen_device_icons() - //if(!underlays_intact || !underlays_down || !underlays_exposed || !pipe_underlays_exposed || !pipe_underlays_intact) if(!underlays) gen_underlay_icons() @@ -90,10 +85,10 @@ var/image/I = image('icons/atmos/pipes.dmi', icon_state = state) pipe_icons[cache_name] = I - for(var/pipe_color in GLOB.pipe_colors) + for(var/pipe_color in pipe_colors) I = image('icons/atmos/pipes.dmi', icon_state = state) - I.color = GLOB.pipe_colors[pipe_color] - pipe_icons[state + "[GLOB.pipe_colors[pipe_color]]"] = I + I.color = pipe_colors[pipe_color] + pipe_icons[state + "[pipe_colors[pipe_color]]"] = I pipe = new ('icons/atmos/heat.dmi') for(var/state in pipe.IconStates()) @@ -122,10 +117,10 @@ if(findtext(state, "core") || findtext(state, "4way")) var/image/I = image('icons/atmos/manifold.dmi', icon_state = state) manifold_icons[state] = I - for(var/pipe_color in GLOB.pipe_colors) + for(var/pipe_color in pipe_colors) I = image('icons/atmos/manifold.dmi', icon_state = state) - I.color = GLOB.pipe_colors[pipe_color] - manifold_icons[state + GLOB.pipe_colors[pipe_color]] = I + I.color = pipe_colors[pipe_color] + manifold_icons[state + pipe_colors[pipe_color]] = I /datum/pipe_icon_manager/proc/gen_device_icons() if(!device_icons) @@ -161,7 +156,7 @@ for(var/D in GLOB.cardinal) var/image/I = image(icon('icons/atmos/pipe_underlays.dmi', icon_state = state, dir = D), layer = GAS_PIPE_HIDDEN_LAYER) underlays[cache_name + "[D]"] = I - for(var/pipe_color in GLOB.pipe_colors) + for(var/pipe_color in pipe_colors) I = image(icon('icons/atmos/pipe_underlays.dmi', icon_state = state, dir = D), layer = GAS_PIPE_HIDDEN_LAYER) - I.color = GLOB.pipe_colors[pipe_color] - underlays[state + "[D]" + "[GLOB.pipe_colors[pipe_color]]"] = I + I.color = pipe_colors[pipe_color] + underlays[state + "[D]" + "[pipe_colors[pipe_color]]"] = I diff --git a/code/modules/atmospherics/machinery/pipes/cap.dm b/code/modules/atmospherics/machinery/pipes/cap.dm index d3a7c7064213..ec2ba5d34242 100644 --- a/code/modules/atmospherics/machinery/pipes/cap.dm +++ b/code/modules/atmospherics/machinery/pipes/cap.dm @@ -60,7 +60,7 @@ /obj/machinery/atmospherics/pipe/cap/update_overlays() . = ..() alpha = 255 - . += SSair.icon_manager.get_atmos_icon("pipe", null, pipe_color, "cap" + icon_connect_type) + . += GLOB.pipe_icon_manager.get_atmos_icon("pipe", null, pipe_color, "cap" + icon_connect_type) /obj/machinery/atmospherics/pipe/cap/atmos_init() ..() diff --git a/code/modules/atmospherics/machinery/pipes/manifold.dm b/code/modules/atmospherics/machinery/pipes/manifold.dm index c8a59b5784c3..a8e5c4611aaa 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold.dm @@ -116,8 +116,8 @@ /obj/machinery/atmospherics/pipe/manifold/update_overlays() . = ..() alpha = 255 - . += SSair.icon_manager.get_atmos_icon("manifold", null, pipe_color, "core" + icon_connect_type) - . += SSair.icon_manager.get_atmos_icon("manifold", null, null, "clamps" + icon_connect_type) + . += GLOB.pipe_icon_manager.get_atmos_icon("manifold", null, pipe_color, "core" + icon_connect_type) + . += GLOB.pipe_icon_manager.get_atmos_icon("manifold", null, null, "clamps" + icon_connect_type) update_underlays() /obj/machinery/atmospherics/pipe/manifold/update_underlays() diff --git a/code/modules/atmospherics/machinery/pipes/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/manifold4w.dm index 000a6fb21900..e63db8c3bc10 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm @@ -89,8 +89,8 @@ /obj/machinery/atmospherics/pipe/manifold4w/update_overlays() . = ..() alpha = 255 - . += SSair.icon_manager.get_atmos_icon("manifold", null, pipe_color, "4way" + icon_connect_type) - . += SSair.icon_manager.get_atmos_icon("manifold", null, null, "clamps_4way" + icon_connect_type) + . += GLOB.pipe_icon_manager.get_atmos_icon("manifold", null, pipe_color, "4way" + icon_connect_type) + . += GLOB.pipe_icon_manager.get_atmos_icon("manifold", null, null, "clamps_4way" + icon_connect_type) update_underlays() /obj/machinery/atmospherics/pipe/manifold4w/update_underlays() diff --git a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple.dm b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple.dm index 477ccab1455c..315048464d4d 100644 --- a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple.dm +++ b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple.dm @@ -122,9 +122,9 @@ . = ..() alpha = 255 if(node1 && node2) - . += SSair.icon_manager.get_atmos_icon("pipe", null, pipe_color, pipe_icon + "intact" + icon_connect_type) + . += GLOB.pipe_icon_manager.get_atmos_icon("pipe", null, pipe_color, pipe_icon + "intact" + icon_connect_type) else - . += SSair.icon_manager.get_atmos_icon("pipe", null, pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type) + . += GLOB.pipe_icon_manager.get_atmos_icon("pipe", null, pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type) // A check to make sure both nodes exist - self-delete if they aren't present /obj/machinery/atmospherics/pipe/simple/check_nodes_exist() diff --git a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_hidden.dm b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_hidden.dm index 98fdb86546b8..4a62c341c912 100644 --- a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_hidden.dm +++ b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_hidden.dm @@ -49,7 +49,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/universal/update_overlays() . = list() alpha = 255 - . += SSair.icon_manager.get_atmos_icon("pipe", color = pipe_color, state = "universal") + . += GLOB.pipe_icon_manager.get_atmos_icon("pipe", color = pipe_color, state = "universal") update_underlays() /obj/machinery/atmospherics/pipe/simple/hidden/universal/update_underlays() diff --git a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_visible.dm b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_visible.dm index 42259af6e6d6..27d1a0df0ad8 100644 --- a/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_visible.dm +++ b/code/modules/atmospherics/machinery/pipes/simple/pipe_simple_visible.dm @@ -66,7 +66,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/universal/update_overlays() . = list() alpha = 255 - . += SSair.icon_manager.get_atmos_icon("pipe", color = pipe_color, state = "universal") + . += GLOB.pipe_icon_manager.get_atmos_icon("pipe", color = pipe_color, state = "universal") update_underlays() /obj/machinery/atmospherics/pipe/simple/visible/universal/update_underlays() diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 7826aed76402..ccefb2f7f983 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -1,5 +1,7 @@ /datum/canister_icons - var/list/possiblemaincolor = list( //these lists contain the possible colors of a canister + // these lists contain the possible colors of a canister + + var/list/possiblemaincolor = list( list("name" = "\[N2O\]", "icon" = "redws"), list("name" = "\[N2\]", "icon" = "red"), list("name" = "\[O2\]", "icon" = "blue"), @@ -10,7 +12,8 @@ list("name" = "\[SPECIAL\]", "icon" = "whiters") ) - var/list/possibleseccolor = list( // no point in having the N2O and "whiters" ones in these lists + // no point in having the N2O and "whiters" ones in these lists + var/list/possibleseccolor = list( list("name" = "\[None\]", "icon" = "none"), list("name" = "\[N2\]", "icon" = "red-c"), list("name" = "\[O2\]", "icon" = "blue-c"), diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index b4a654396e73..198621034bf4 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -35,7 +35,15 @@ GLOBAL_DATUM_INIT(_preloader, /datum/dmm_suite/preloader, new()) if(lastchar == "/" || lastchar == "\\") log_debug("Attempted to load map template without filename (Attempted [tfile])") return - tfile = wrap_file2text(tfile) + + // use rustlib to read, parse, process, mapmanip etc + // this will "crash"/stacktrace on fail + tfile = mapmanip_read_dmm(fname) + // if rustlib for whatever reason fails and returns null + // try to load it the old dm way instead + if(!tfile) + tfile = wrap_file2text(fname) + if(!length(tfile)) throw EXCEPTION("Map path '[fname]' does not exist!") diff --git a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm index 81b51ad36e97..bc23091f65c4 100644 --- a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm +++ b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm @@ -208,3 +208,4 @@ mob_name = "a free golem" can_transfer = FALSE mob_species = /datum/species/golem/adamantine + assignedrole = "Free Golem" diff --git a/code/modules/awaymissions/mission_code/ruins/deepstorage.dm b/code/modules/awaymissions/mission_code/ruins/deepstorage.dm index dfb0931dbe0d..2da93a61bfd5 100644 --- a/code/modules/awaymissions/mission_code/ruins/deepstorage.dm +++ b/code/modules/awaymissions/mission_code/ruins/deepstorage.dm @@ -282,6 +282,26 @@ name = "portal" desc = "Good luck." +// loot spawners + +/obj/effect/spawner/random/deepstorage_reward + name = "warehouse fashion reward" + loot = list( + /obj/item/storage/box/syndie_kit/chameleon, + /obj/item/clothing/suit/pimpcoat, + /obj/item/melee/skateboard/hoverboard, + /obj/item/clothing/glasses/sunglasses/yeah + ) + +/obj/effect/spawner/random/deepstorage_reward/main + name = "warehouse main reward" + loot = list( + /obj/item/storage/belt/champion/wrestling, + /obj/item/storage/box/weaver_kit, + /obj/item/gun/medbeam, + /obj/item/storage/lockbox/experimental_weapon + ) + // paper stuff & lore /obj/item/paper/fluff/ruins/deepstorage/log1 @@ -376,15 +396,5 @@ name = "attention" info = {"As per administration's order, unauthorized entry to supply storage is forbidden. Make your requests from the guard wing if you have a pending delivery."} -/obj/effect/spawner/random/deepstorage_award - name = "boss award" - icon_state = "questionmark" - loot = list( - /obj/item/rod_of_asclepius = 3, - /obj/item/storage/box/syndie_kit/chameleon = 3, - /obj/item/storage/belt/champion/wrestling = 1, - /obj/item/storage/box/telescience = 1, - ) - #undef DS_BOSS_STORAGE #undef DS_ENGINEERING diff --git a/code/modules/awaymissions/mission_code/ruins/telecomns.dm b/code/modules/awaymissions/mission_code/ruins/telecomns.dm index d151dfa849e9..117bd99d7e54 100644 --- a/code/modules/awaymissions/mission_code/ruins/telecomns.dm +++ b/code/modules/awaymissions/mission_code/ruins/telecomns.dm @@ -430,7 +430,8 @@ GLOBAL_LIST_EMPTY(telecomms_trap_tank) /obj/structure/environmental_storytelling_holopad/proc/start_message(mob/living/carbon/human/H) activated = TRUE - qdel(GetComponent(/datum/component/proximity_monitor)) + DeleteComponent(/datum/component/proximity_monitor) + icon_state = "holopad1" update_icon(UPDATE_OVERLAYS) var/obj/effect/overlay/hologram = new(get_turf(src)) diff --git a/code/modules/awaymissions/mob_spawn.dm b/code/modules/awaymissions/mob_spawn.dm index 1741cdb69f17..bc1991d71532 100644 --- a/code/modules/awaymissions/mob_spawn.dm +++ b/code/modules/awaymissions/mob_spawn.dm @@ -4,11 +4,6 @@ // To do: Allow customizing the bodies appearance (they're all bald and white right now). -/// this mob spawn creates the corpse instantly -#define CORPSE_INSTANT 1 -/// this mob spawn creates the corpse during GAME_STATE_PLAYING -#define CORPSE_ROUNDSTART 2 - /obj/effect/mob_spawn name = "Unknown" density = TRUE @@ -55,6 +50,8 @@ return create(ckey = user.ckey, user = user) + return TRUE + /obj/effect/mob_spawn/Initialize(mapload) . = ..() if(instant || roundstart) //at some point we should probably re-introduce the (ticker && ticker.current_state > GAME_STATE_SETTING_UP) portion of this check, but for now it was preventing the corpses from spawning at roundstart and resulting in ghost role spawners that made dead bodies. @@ -670,50 +667,13 @@ ADD_TRAIT(H, TRAIT_NON_INFECTIOUS_ZOMBIE, ROUNDSTART_TRAIT) return ..() -////////Non-human spawners//////// - -/obj/effect/mob_spawn/mouse - name = "sleeper" - mob_name = "space mouse" - mob_type = /mob/living/simple_animal/mouse - death = FALSE - roundstart = FALSE - icon = 'icons/obj/cryogenic2.dmi' - icon_state = "sleeper" - flavour_text = "Squeak!" - -/obj/effect/mob_spawn/cow - name = "sleeper" - mob_name = "space cow" - mob_type = /mob/living/simple_animal/cow - death = FALSE - roundstart = FALSE - mob_gender = FEMALE - icon = 'icons/obj/cryogenic2.dmi' - icon_state = "sleeper" - flavour_text = "Moo!" - /// these mob spawn subtypes trigger immediately (New or Initialize) and are not player controlled... since they're dead, you know? /obj/effect/mob_spawn/corpse - /// when this mob spawn should auto trigger. - var/spawn_when = CORPSE_INSTANT - /// what environmental storytelling script should this corpse have var/corpse_description = "" /// optionally different text to display if the target is a clown var/naive_corpse_description = "" -/obj/effect/mob_spawn/corpse/Initialize(mapload, no_spawn) - . = ..() - if(no_spawn) - return - switch(spawn_when) - if(CORPSE_INSTANT) - INVOKE_ASYNC(src, PROC_REF(create)) - if(CORPSE_ROUNDSTART) - if(mapload || (SSticker && SSticker.current_state > GAME_STATE_SETTING_UP)) - INVOKE_ASYNC(src, PROC_REF(create)) - /obj/effect/mob_spawn/corpse/special(mob/living/spawned_mob) . = ..() spawned_mob.death(TRUE) @@ -735,7 +695,3 @@ icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "goliath_dead" pixel_x = -12 - - -#undef CORPSE_INSTANT -#undef CORPSE_ROUNDSTART diff --git a/code/modules/client/preference/link_processing.dm b/code/modules/client/preference/link_processing.dm index 0656ec4750a8..81f589bd36ac 100644 --- a/code/modules/client/preference/link_processing.dm +++ b/code/modules/client/preference/link_processing.dm @@ -322,7 +322,7 @@ active_character.metadata = new_metadata if("b_type") - var/new_b_type = tgui_input_list(user, "Choose your character's blood-type", "Character Preference", list( "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")) + var/new_b_type = tgui_input_list(user, "Choose your character's blood-type", "Character Preference", list("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")) if(!new_b_type) return active_character.b_type = new_b_type diff --git a/code/modules/client/preference/loadout/loadout_uniform.dm b/code/modules/client/preference/loadout/loadout_uniform.dm index 547f443981e9..97fdfaad69d2 100644 --- a/code/modules/client/preference/loadout/loadout_uniform.dm +++ b/code/modules/client/preference/loadout/loadout_uniform.dm @@ -102,6 +102,86 @@ display_name = "Jumpsuit, darkred" path = /obj/item/clothing/under/color/darkred +/datum/gear/uniform/suit/jumpskirtblack + display_name = "Jumpskirt, black" + path = /obj/item/clothing/under/color/jumpskirt/black + +/datum/gear/uniform/suit/jumpskirtblue + display_name = "Jumpskirt, blue" + path = /obj/item/clothing/under/color/jumpskirt/blue + +/datum/gear/uniform/suit/jumpskirtgreen + display_name = "Jumpskirt, green" + path = /obj/item/clothing/under/color/jumpskirt/green + +/datum/gear/uniform/suit/jumpskirtgrey + display_name = "Jumpskirt, grey" + path = /obj/item/clothing/under/color/jumpskirt/grey + +/datum/gear/uniform/suit/jumpskirtorange + display_name = "Jumpskirt, orange" + path = /obj/item/clothing/under/color/jumpskirt/orange + +/datum/gear/uniform/suit/jumpskirtpink + display_name = "Jumpskirt, pink" + path = /obj/item/clothing/under/color/jumpskirt/pink + +/datum/gear/uniform/suit/jumpskirtred + display_name = "Jumpskirt, red" + path = /obj/item/clothing/under/color/jumpskirt/red + +/datum/gear/uniform/suit/jumpskirtwhite + display_name = "Jumpskirt, white" + path = /obj/item/clothing/under/color/jumpskirt/white + +/datum/gear/uniform/suit/jumpskirtyellow + display_name = "Jumpskirt, yellow" + path = /obj/item/clothing/under/color/jumpskirt/yellow + +/datum/gear/uniform/suit/jumpskirtlightblue + display_name = "Jumpskirt, lightblue" + path = /obj/item/clothing/under/color/jumpskirt/lightblue + +/datum/gear/uniform/suit/jumpskirtaqua + display_name = "Jumpskirt, aqua" + path = /obj/item/clothing/under/color/jumpskirt/aqua + +/datum/gear/uniform/suit/jumpskirtpurple + display_name = "Jumpskirt, purple" + path = /obj/item/clothing/under/color/jumpskirt/purple + +/datum/gear/uniform/suit/jumpskirtlightpurple + display_name = "Jumpskirt, lightpurple" + path = /obj/item/clothing/under/color/jumpskirt/lightpurple + +/datum/gear/uniform/suit/jumpskirtlightgreen + display_name = "Jumpskirt, lightgreen" + path = /obj/item/clothing/under/color/jumpskirt/lightgreen + +/datum/gear/uniform/suit/jumpskirtlightbrown + display_name = "Jumpskirt, lightbrown" + path = /obj/item/clothing/under/color/jumpskirt/lightbrown + +/datum/gear/uniform/suit/jumpskirtbrown + display_name = "Jumpskirt, brown" + path = /obj/item/clothing/under/color/jumpskirt/brown + +/datum/gear/uniform/suit/jumpskirtyellowgreen + display_name = "Jumpskirt, yellowgreen" + path = /obj/item/clothing/under/color/jumpskirt/yellowgreen + +/datum/gear/uniform/suit/jumpskirtdarkblue + display_name = "Jumpskirt, darkblue" + path = /obj/item/clothing/under/color/jumpskirt/darkblue + +/datum/gear/uniform/suit/jumpskirtlightred + display_name = "Jumpskirt, lightred" + path = /obj/item/clothing/under/color/jumpskirt/lightred + +/datum/gear/uniform/suit/jumpskirtdarkred + display_name = "Jumpskirt, darkred" + path = /obj/item/clothing/under/color/jumpskirt/darkred + /datum/gear/uniform/suit/soviet display_name = "Old USSP uniform" path = /obj/item/clothing/under/costume/soviet diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index 178c8f3bcb76..828303414901 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -1,4 +1,5 @@ -GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts to play these roles +/// Minimum age (in days) for accounts to play these roles. +GLOBAL_LIST_INIT(special_role_times, list( ROLE_PAI = 0, ROLE_GUARDIAN = 0, ROLE_TRAITOR = 7, @@ -87,7 +88,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts "1016" = 100, // CHANNEL_FIREALARM "1015" = 100, // CHANNEL_ASH_STORM "1014" = 100, // CHANNEL_RADIO_NOISE - "1013" = 100 // CHANNEL_BOSS_MUSIC + "1013" = 100, // CHANNEL_BOSS_MUSIC + "1011" = 100 // CHANNEL_SURGERY_SOUNDS ) /// The volume mixer save timer handle. Used to debounce the DB call to save, to avoid spamming. var/volume_mixer_saving = null diff --git a/code/modules/client/preference/preferences_toggles.dm b/code/modules/client/preference/preferences_toggles.dm index 84d14fbc80c3..9f4adb3e96d9 100644 --- a/code/modules/client/preference/preferences_toggles.dm +++ b/code/modules/client/preference/preferences_toggles.dm @@ -114,7 +114,7 @@ preftoggle_bitflag = SOUND_MENTORHELP preftoggle_toggle = PREFTOGGLE_SOUND preftoggle_category = PREFTOGGLE_CATEGORY_ADMIN - rights_required = R_MENTOR + rights_required = R_MENTOR | R_ADMIN enable_message = "You will now hear a sound when mentorhelp is sent." disable_message = "You will no longer hear a sound when mentorhelp is sent." blackbox_message = "Toggle Mentor Bwoinks" @@ -564,13 +564,16 @@ . = ..() if(length(user.screen)) var/atom/movable/screen/plane_master/exposure/exposure_master = locate() in user.screen - var/atom/movable/screen/plane_master/lamps_selfglow/glow_master = locate() in user.screen - var/atom/movable/screen/plane_master/lamps_glare/glare_master = locate() in user.screen exposure_master.alpha = user.prefs.light & LIGHT_NEW_LIGHTING ? 255 : 0 exposure_master.backdrop(user.mob) - glow_master.backdrop(user.mob) - glare_master.backdrop(user.mob) + + for(var/atom/movable/screen/plane_master/lamps_selfglow/glow_master in user.screen) + glow_master.backdrop(user.mob) + + for(var/atom/movable/screen/plane_master/lamps_glare/glare_master in user.screen) + glare_master.backdrop(user.mob) + /datum/preference_toggle/special_toggle/set_glow_level name = "Set Glow Level" @@ -591,8 +594,8 @@ user.prefs.glowlevel = glow_levels[new_level] to_chat(usr, "Glow level: [new_level].") if(length(user.screen)) - var/atom/movable/screen/plane_master/lamps_selfglow/glow_master = locate() in user.screen - glow_master.backdrop(user.mob) + for(var/atom/movable/screen/plane_master/lamps_selfglow/glow_master in user.screen) + glow_master.backdrop(user.mob) return ..() /datum/preference_toggle/toggle_lamp_exposure @@ -623,6 +626,7 @@ /datum/preference_toggle/toggle_lamps_glare/set_toggles(client/user) . = ..() - if(length(user.screen)) - var/atom/movable/screen/plane_master/lamps_glare/glare_master = locate() in user.screen + if(!length(user.screen)) + return + for(var/atom/movable/screen/plane_master/lamps_glare/glare_master in user.screen) glare_master.backdrop(user.mob) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 672e5a445841..26ec24b69ccd 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -281,7 +281,8 @@ sprite_sheets = list( "Vox" = 'icons/mob/clothing/species/vox/gloves.dmi', - "Drask" = 'icons/mob/clothing/species/drask/gloves.dmi' + "Drask" = 'icons/mob/clothing/species/drask/gloves.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/gloves.dmi' ) // Called just before an attack_hand(), in mob/UnarmedAttack() @@ -398,11 +399,153 @@ var/vision_flags = 0 var/see_in_dark = 0 var/lighting_alpha + /// the head clothing that this item may be attached to. + var/obj/item/clothing/under/has_under = null + /// the attached hats to this hat. + var/list/attached_hats = list() + /// if this hat can have hats placed on top of it. + var/can_have_hats = FALSE + /// if this hat can be a hat of a hat. Hat^2 + var/can_be_hat = TRUE /obj/item/clothing/head/update_icon_state() if(..()) item_state = "[replacetext("[item_state]", "_up", "")][up ? "_up" : ""]" +/obj/item/clothing/head/AltShiftClick(mob/user) + if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user)) + return + if(!length(attached_hats)) + return + var/obj/item/clothing/head/hat + if(length(attached_hats) > 1) + var/pick = radial_menu_helper(usr, src, attached_hats, custom_check = FALSE, require_near = TRUE) + if(!pick || !istype(pick, /obj/item/clothing/head) || !Adjacent(usr)) + return + hat = pick + else + hat = attached_hats[1] + remove_hat(user, hat) + +/obj/item/clothing/head/Destroy() + if(is_equipped()) + var/mob/M = loc + for(var/obj/item/clothing/head/H as anything in attached_hats) + H.on_removed(M) + else + for(var/obj/item/clothing/head/H as anything in attached_hats) + H.forceMove(get_turf(src)) + attached_hats = null + return ..() + +/obj/item/clothing/head/dropped(mob/user, silent) + ..() + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(H.get_item_by_slot(SLOT_HUD_HEAD) == src) + for(var/obj/item/clothing/head/hat as anything in attached_hats) + hat.attached_unequip() + +/obj/item/clothing/head/examine(mob/user) + . = ..() + for(var/obj/item/clothing/head/hat as anything in attached_hats) + . += "\A [hat] is placed neatly on top." + +//when user attached a hat to H (another hat) +/obj/item/clothing/head/proc/on_attached(obj/item/clothing/head/H, mob/user as mob) + if(!istype(H)) + return + has_under = H + forceMove(has_under) + has_under.overlays += item_state + has_under.actions += actions + + for(var/datum/action/A in actions) + if(has_under.is_equipped()) + var/mob/M = has_under.loc + A.Grant(M) + + if(user) + to_chat(user, "You attach [src] to [has_under].") + add_fingerprint(user) + +/obj/item/clothing/head/proc/on_removed(mob/user) + if(!has_under) + return + has_under.overlays -= icon_state + has_under.actions -= actions + + for(var/datum/action/A in actions) + if(ismob(has_under.loc)) + var/mob/M = has_under.loc + A.Remove(M) + + has_under = null + if(user) + user.put_in_hands(src) + add_fingerprint(user) + +/obj/item/clothing/head/proc/detach_hat(obj/item/clothing/head/hat, mob/user) + attached_hats -= hat + hat.on_removed(user) + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.update_inv_head() + +/obj/item/clothing/head/proc/remove_hat(mob/user, obj/item/clothing/head/hat) + if(!(hat in attached_hats)) + return + if(!isliving(user)) + return + if(user.incapacitated()) + return + if(!Adjacent(user)) + return + detach_hat(hat, user) + to_chat(user, "You remove [hat] from [src].") + +/obj/item/clothing/head/proc/attached_unequip(mob/user) // If we need to do something special when clothing is removed from the user + return + +/obj/item/clothing/head/proc/attached_equip(mob/user) // If we need to do something special when clothing is removed from the user + return + +/* + * # can_attach_hat + * + * Arguments: + * * Hat - The clothing/head object being checked. MUST BE TYPE /obj/item/clothing/head +*/ +/obj/item/clothing/head/proc/can_attach_hat(obj/item/clothing/head/hat) + return length(attached_hats) < 1 && can_have_hats && hat.can_be_hat // this hat already has a hat or cannot be a hat of a hat! + +/obj/item/clothing/head/proc/attach_hat(obj/item/clothing/head/hat, mob/user, unequip = FALSE) + if(can_attach_hat(hat)) + if(unequip && !user.unEquip(hat)) // Make absolutely sure this hat is removed from hands + return FALSE + + attached_hats += hat + hat.on_attached(src, user) + + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.update_inv_head() + + return TRUE + else if(hat.has_under) + return FALSE + else + to_chat(user, "You cannot place [hat] ontop of [src].") + + return FALSE + +/obj/item/clothing/head/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/clothing/head) && can_have_hats) + attach_hat(I, user, TRUE) + + return ..() + ////////////////////////////// // MARK: MASK ////////////////////////////// diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index f63c0f0c727a..b24eff63868a 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -296,35 +296,35 @@ //Commander /obj/item/clothing/head/helmet/ert/command name = "emergency response team commander helmet" - desc = "An in-atmosphere helmet worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped blue Command stripes." icon_state = "erthelmet_cmd" //Security /obj/item/clothing/head/helmet/ert/security name = "emergency response team security helmet" - desc = "An in-atmosphere helmet worn by security members of the Nanotrasen Emergency Response Team. Has red highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped red Security stripes." icon_state = "erthelmet_sec" /obj/item/clothing/head/helmet/ert/security/paranormal name = "paranormal emergency response team helmet" - desc = "An in-atmosphere helmet worn by paranormal members of the Nanotrasen Emergency Response Team. Has crusader sigils." + desc = "An antique steel helmet that looks straight out of a poorly-funded documentary about the Crusades. Where the hell did they even find this?" icon_state = "knight_templar" item_state = "knight_templar" //Engineer /obj/item/clothing/head/helmet/ert/engineer name = "emergency response team engineer helmet" - desc = "An in-atmosphere helmet worn by engineering members of the Nanotrasen Emergency Response Team. Has orange highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped orange Engineering stripes." icon_state = "erthelmet_eng" //Medical /obj/item/clothing/head/helmet/ert/medical name = "emergency response team medical helmet" - desc = "A set of armor worn by medical members of the Nanotrasen Emergency Response Team. Has red and white highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped white Medical stripes." icon_state = "erthelmet_med" //Janitorial /obj/item/clothing/head/helmet/ert/janitor name = "emergency response team janitor helmet" - desc = "A set of armor worn by janitorial members of the Nanotrasen Emergency Response Team. Has red and white highlights." + desc = "A mid-quality combat helmet produced by Citadel Armories. The visor is made of toughened plastic and the radio antenna is entirely decorative. This one has chipped purple Janitorial stripes." icon_state = "erthelmet_jan" diff --git a/code/modules/clothing/head/misc_hats.dm b/code/modules/clothing/head/misc_hats.dm index 304a6c092f07..bc9ea7066eec 100644 --- a/code/modules/clothing/head/misc_hats.dm +++ b/code/modules/clothing/head/misc_hats.dm @@ -536,6 +536,7 @@ icon_state = "crown" armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 10, BOMB = 0, RAD = 0, FIRE = INFINITY, ACID = 50) resistance_flags = FIRE_PROOF + can_be_hat = FALSE /obj/item/clothing/head/crown/fancy name = "magnificent crown" diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 308aea6b03c3..337d97ca8315 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -26,45 +26,46 @@ . = ..() if(slot != SLOT_HUD_SHOES || !ishuman(user)) return - check_mag_pulse() + check_mag_pulse(user) /obj/item/clothing/shoes/magboots/dropped(mob/user, silent) . = ..() if(!ishuman(user)) return - check_mag_pulse() + check_mag_pulse(user, removing = TRUE) -/obj/item/clothing/shoes/magboots/attack_self(mob/user, forced = FALSE) - toggle_magpulse(user, forced) +/obj/item/clothing/shoes/magboots/attack_self(mob/user) + toggle_magpulse(user) -/obj/item/clothing/shoes/magboots/proc/toggle_magpulse(mob/user, forced) +/obj/item/clothing/shoes/magboots/proc/toggle_magpulse(mob/user, no_message) if(magpulse) //magpulse and no_slip will always be the same value unless VV happens REMOVE_TRAIT(user, TRAIT_NOSLIP, UID()) slowdown = slowdown_passive else - ADD_TRAIT(user, TRAIT_NOSLIP, UID()) + if(user.get_item_by_slot(SLOT_HUD_SHOES) == src) + ADD_TRAIT(user, TRAIT_NOSLIP, UID()) slowdown = slowdown_active magpulse = !magpulse no_slip = !no_slip if(multiple_icons) icon_state = "[magboot_state][magpulse]" - if(!forced) + if(!no_message) to_chat(user, "You [magpulse ? "enable" : "disable"] the [magpulse_name].") user.update_inv_shoes() //so our mob-overlays update user.update_gravity(user.mob_has_gravity()) for(var/X in actions) var/datum/action/A = X A.UpdateButtons() - check_mag_pulse(user) + check_mag_pulse(user, removing = (user.get_item_by_slot(SLOT_HUD_SHOES) != src)) -/obj/item/clothing/shoes/magboots/proc/check_mag_pulse(mob/user) +/obj/item/clothing/shoes/magboots/proc/check_mag_pulse(mob/user, removing = FALSE) if(!user) return - if(magpulse) - ADD_TRAIT(user, TRAIT_MAGPULSE, "magboots") + if(magpulse && !removing) + ADD_TRAIT(user, TRAIT_MAGPULSE, "magboots[UID()]") return if(HAS_TRAIT(user, TRAIT_MAGPULSE)) // User has trait and the magboots were turned off, remove trait - REMOVE_TRAIT(user, TRAIT_MAGPULSE, "magboots") + REMOVE_TRAIT(user, TRAIT_MAGPULSE, "magboots[UID()]") /obj/item/clothing/shoes/magboots/examine(mob/user) . = ..() @@ -173,17 +174,17 @@ magpulse_name = "gripping ability" magical = TRUE -/obj/item/clothing/shoes/magboots/wizard/attack_self(mob/user) +/obj/item/clothing/shoes/magboots/wizard/toggle_magpulse(mob/user, no_message) if(!user) return if(!iswizard(user)) to_chat(user, "You poke the gem on [src]. Nothing happens.") return + ..() if(magpulse) //faint blue light when shoes are turned on gives a reason to turn them off when not needed in maint - set_light(0) - else set_light(2, 1, LIGHT_COLOR_LIGHTBLUE) - ..() + else + set_light(0) /obj/item/clothing/shoes/magboots/gravity @@ -229,7 +230,7 @@ else . += "It is missing a gravitational anomaly core and a power cell." -/obj/item/clothing/shoes/magboots/gravity/attack_self(mob/user) +/obj/item/clothing/shoes/magboots/gravity/toggle_magpulse(mob/user, no_message) if(!cell) to_chat(user, "Your boots do not have a power cell!") return @@ -249,7 +250,7 @@ if(ishuman(loc)) var/mob/living/carbon/human/user = loc to_chat(user, "[src] has ran out of charge, and turned off!") - attack_self(user, TRUE) + toggle_magpulse(user, TRUE) else cell.use(power_consumption_rate) @@ -313,7 +314,7 @@ style.remove(H) if(magpulse) to_chat(user, "As [src] are removed, they deactivate.") - attack_self(user, TRUE) + toggle_magpulse(user, TRUE) /obj/item/clothing/shoes/magboots/gravity/item_action_slot_check(slot) if(slot == SLOT_HUD_SHOES) @@ -340,11 +341,8 @@ return var/atom/target = get_edge_target_turf(user, user.dir) //gets the user's direction - var/do_callback = FALSE - if(!user.flying) - user.flying = TRUE - do_callback = TRUE - if(user.throw_at(target, jumpdistance, jumpspeed, spin = FALSE, diagonals_first = TRUE, callback = do_callback ? VARSET_CALLBACK(user, flying, FALSE) : null)) + if(user.throw_at(target, jumpdistance, jumpspeed, spin = FALSE, diagonals_first = TRUE, callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(callback_remove_trait), user, TRAIT_FLYING, "gravity_boots"))) + ADD_TRAIT(user, TRAIT_FLYING, "gravity_boots") playsound(src, 'sound/effects/stealthoff.ogg', 50, TRUE, 1) user.visible_message("[usr] dashes forward into the air!") recharging_time = world.time + recharging_rate diff --git a/code/modules/clothing/shoes/misc_shoes.dm b/code/modules/clothing/shoes/misc_shoes.dm index 5c66cd8382d3..eb4cb5436ab5 100644 --- a/code/modules/clothing/shoes/misc_shoes.dm +++ b/code/modules/clothing/shoes/misc_shoes.dm @@ -472,11 +472,8 @@ return var/atom/target = get_edge_target_turf(user, user.dir) //gets the user's direction - var/do_callback = FALSE - if(!user.flying) - user.flying = TRUE - do_callback = TRUE - if(user.throw_at(target, jumpdistance, jumpspeed, spin = FALSE, diagonals_first = TRUE, callback = do_callback ? VARSET_CALLBACK(user, flying, FALSE) : null)) + if(user.throw_at(target, jumpdistance, jumpspeed, spin = FALSE, diagonals_first = TRUE, callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(callback_remove_trait), user, TRAIT_FLYING, "bhop_shoes"))) + ADD_TRAIT(user, TRAIT_FLYING, "bhop_shoes") playsound(src, 'sound/effects/stealthoff.ogg', 50, TRUE, 1) user.visible_message("[usr] dashes forward into the air!") recharging_time = world.time + recharging_rate diff --git a/code/modules/clothing/spacesuits/ert_hardsuits.dm b/code/modules/clothing/spacesuits/ert_hardsuits.dm index d14f22f8238e..84961e9cd940 100644 --- a/code/modules/clothing/spacesuits/ert_hardsuits.dm +++ b/code/modules/clothing/spacesuits/ert_hardsuits.dm @@ -1,7 +1,7 @@ /obj/item/clothing/head/helmet/space/hardsuit/ert name = "emergency response team helmet" - desc = "A helmet worn by members of the Nanotrasen Emergency Response Team. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility." icon_state = "hardsuit0-ert_commander" item_state = "helm-command" item_color = "ert_commander" @@ -53,7 +53,7 @@ /obj/item/clothing/suit/space/hardsuit/ert name = "emergency response team suit" - desc = "A suit worn by members of the Nanotrasen Emergency Response Team. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant." icon_state = "ert_commander" item_state = "suit-command" w_class = WEIGHT_CLASS_NORMAL @@ -76,14 +76,14 @@ //Commander /obj/item/clothing/head/helmet/space/hardsuit/ert/commander name = "emergency response team commander helmet" - desc = "A helmet worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one has blue Command stripes." icon_state = "hardsuit0-ert_commander" item_state = "helm-command" item_color = "ert_commander" /obj/item/clothing/suit/space/hardsuit/ert/commander name = "emergency response team commander suit" - desc = "A suit worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in blue Command livery." icon_state = "ert_commander" item_state = "suit-command" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/commander @@ -91,14 +91,14 @@ //Security /obj/item/clothing/head/helmet/space/hardsuit/ert/security name = "emergency response team security helmet" - desc = "A helmet worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one has red Security stripes." icon_state = "hardsuit0-ert_security" item_state = "syndicate-helm-black-red" item_color = "ert_security" /obj/item/clothing/suit/space/hardsuit/ert/security name = "emergency response team security suit" - desc = "A suit worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in red Security livery." icon_state = "ert_security" item_state = "syndicate-black-red" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/security @@ -111,7 +111,7 @@ //Engineer /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer name = "emergency response team engineer helmet" - desc = "A helmet worn by engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one has orange Engineering stripes, and additional lead plating for improved radiation protection." armor = list(MELEE = 40, BULLET = 15, LASER = 20, ENERGY = 5, BOMB = 15, RAD = 150, FIRE = 200, ACID = 200) icon_state = "hardsuit0-ert_engineer" item_state = "helm-orange" @@ -127,7 +127,7 @@ /obj/item/clothing/suit/space/hardsuit/ert/engineer name = "emergency response team engineer suit" - desc = "A suit worn by the engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in orange Engineering livery, and has additional lead inserts for added radiation protection." icon_state = "ert_engineer" item_state = "suit-orange" armor = list(MELEE = 40, BULLET = 15, LASER = 20, ENERGY = 5, BOMB = 15, RAD = 150, FIRE = 200, ACID = 200) @@ -145,13 +145,13 @@ //Medical /obj/item/clothing/head/helmet/space/hardsuit/ert/medical name = "emergency response team medical helmet" - desc = "A helmet worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one's got white Medical stripes." icon_state = "hardsuit0-ert_medical" item_color = "ert_medical" /obj/item/clothing/suit/space/hardsuit/ert/medical name = "emergency response team medical suit" - desc = "A suit worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in white Medical livery." icon_state = "ert_medical" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/medical @@ -163,20 +163,20 @@ //Janitor /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor name = "emergency response team janitor helmet" - desc = "A helmet worn by janitorial members of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured and space ready." + desc = "An environmentally sealed combat helmet with a wide plexiglass visor for maximum visibility. This one has purple Janitorial stripes." icon_state = "hardsuit0-ert_janitor" item_color = "ert_janitor" /obj/item/clothing/suit/space/hardsuit/ert/janitor name = "emergency response team janitor suit" - desc = "A suit worn by the janitorial of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured, space ready, and fire resistant." + desc = "A powered combat hardsuit produced by Citadel Armories. Decently armored, environmentally sealed, and fire-resistant. This one is covered in purple Janitorial livery." icon_state = "ert_janitor" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor //Paranormal /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal name = "paranormal response unit helmet" - desc = "A helmet worn by those who deal with paranormal threats for a living." + desc = "An environmentally-sealed combat helmet covered in runes and warding sigils. The internal HUD is fairly outdated, and has Latin as a selectable language." icon_state = "hardsuit0-ert_paranormal" item_color = "ert_paranormal" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -191,7 +191,7 @@ /obj/item/clothing/suit/space/hardsuit/ert/paranormal name = "paranormal response team suit" - desc = "Powerful wards are built into this hardsuit, protecting the user from all manner of paranormal threats." + desc = "A specially designed combat hardsuit produced by Citadel Armories for engaging paranormal threats, this suit is inlaid with interlocking geometric warding sigils and uses a unique holy water liquid-cooling system." icon_state = "hardsuit-paranormal" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 461f780e99d2..500a1f000a8f 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -23,6 +23,8 @@ icon = 'icons/obj/clothing/species/plasmaman/hats.dmi' species_restricted = list("Plasmaman") sprite_sheets = list("Plasmaman" = 'icons/mob/clothing/species/plasmaman/helmet.dmi') + can_have_hats = TRUE + can_be_hat = FALSE /obj/item/clothing/head/helmet/space/plasmaman/Initialize(mapload) . = ..() diff --git a/code/modules/clothing/suits/armor_suits.dm b/code/modules/clothing/suits/armor_suits.dm index 9a62ffdb512c..0ef37b03aa22 100644 --- a/code/modules/clothing/suits/armor_suits.dm +++ b/code/modules/clothing/suits/armor_suits.dm @@ -248,7 +248,8 @@ desc = "An old style captain tunic. Makes you look and feel like you're wearing a cardboard box with arm holes cut in it but looks like it would be great for a wedding... or a funeral." icon_state = "captain_white" - sprite_sheets = list( //Drask look fine in the regular human version + // Drask look fine in the regular human version + sprite_sheets = list( "Vox" = 'icons/mob/clothing/species/vox/suit.dmi', "Grey" = 'icons/mob/clothing/species/grey/suit.dmi', "Kidan" = 'icons/mob/clothing/species/kidan/suit.dmi', @@ -753,7 +754,7 @@ //Non-hardsuit ERT armor. /obj/item/clothing/suit/armor/vest/ert name = "emergency response team armor" - desc = "A set of armor worn by members of the Nanotrasen Emergency Response Team." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests." icon_state = "ertarmor_cmd" item_state = "armor" armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 10, RAD = 0, FIRE = 50, ACID = 50) @@ -761,37 +762,37 @@ //Commander /obj/item/clothing/suit/armor/vest/ert/command name = "emergency response team commander armor" - desc = "A set of armor worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped blue Command insignia on the shoulders." //Security /obj/item/clothing/suit/armor/vest/ert/security name = "emergency response team security armor" - desc = "A set of armor worn by security members of the Nanotrasen Emergency Response Team. Has red highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped red Security insignia on the shoulders." icon_state = "ertarmor_sec" - +//Paranormal /obj/item/clothing/suit/armor/vest/ert/security/paranormal name = "emergency response team paranormal armor" - desc = "A set of armor worn by paranormal members of the Nanotrasen Emergency Response Team. Has crusader sigils." + desc = "A full suit of medieval plate armor, kitted out in crusader colors. Where the hell did they even find this? There are chipped black insignia on the shoulders." icon_state = "knight_templar" item_state = "knight_templar" //Engineer /obj/item/clothing/suit/armor/vest/ert/engineer name = "emergency response team engineer armor" - desc = "A set of armor worn by engineering members of the Nanotrasen Emergency Response Team. Has orange highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped orange Engineering insignia on the shoulders." icon_state = "ertarmor_eng" //Medical /obj/item/clothing/suit/armor/vest/ert/medical name = "emergency response team medical armor" - desc = "A set of armor worn by medical members of the Nanotrasen Emergency Response Team. Has red and white highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped white Medical insignia on the shoulders." icon_state = "ertarmor_med" //Janitorial /obj/item/clothing/suit/armor/vest/ert/janitor name = "emergency response team janitor armor" - desc = "A set of armor worn by janitorial members of the Nanotrasen Emergency Response Team. Has red and white highlights." + desc = "A mid-quality protective vest produced by Citadel Armories. Additional polymer paneling over the chest and shoulders offers moderately improved energy protection compared to standard kevlar vests. This one has chipped purple Janitorial insignia on the shoulders." icon_state = "ertarmor_jan" //same defense as basic sec armor diff --git a/code/modules/clothing/suits/misc_suits.dm b/code/modules/clothing/suits/misc_suits.dm index 4c6a85d0d2c0..24590a05b18b 100644 --- a/code/modules/clothing/suits/misc_suits.dm +++ b/code/modules/clothing/suits/misc_suits.dm @@ -175,7 +175,7 @@ icon_state = "corgisuit" item_state = "chickensuit" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET - flags_inv = HIDESHOES|HIDEJUMPSUIT + flags_inv = HIDEJUMPSUIT dog_fashion = /datum/dog_fashion/back /obj/item/clothing/suit/corgisuit/en diff --git a/code/modules/clothing/suits/suit_storage.dm b/code/modules/clothing/suits/suit_storage.dm index 2286470a59d3..b932d45d6933 100644 --- a/code/modules/clothing/suits/suit_storage.dm +++ b/code/modules/clothing/suits/suit_storage.dm @@ -62,7 +62,7 @@ /obj/item/clothing/suit/storage/proc/return_inv() - var/list/L = list( ) + var/list/L = list() L += src.contents diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 88dd18061a0d..3ce5fb5e84d6 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -444,7 +444,7 @@ var/obj/item/pda/pda = I id_card = pda.id - if(ACCESS_SEC_DOORS in id_card.access || emagged) + if((ACCESS_SEC_DOORS in id_card.access) || emagged) to_chat(user, "You imprint your ID details onto the badge.") stored_name = id_card.registered_name name = "holobadge ([stored_name])" diff --git a/code/modules/clothing/under/accessories/storage_accessories.dm b/code/modules/clothing/under/accessories/storage_accessories.dm index bf833ecf7cf5..d295056c5b8b 100644 --- a/code/modules/clothing/under/accessories/storage_accessories.dm +++ b/code/modules/clothing/under/accessories/storage_accessories.dm @@ -50,7 +50,7 @@ /obj/item/clothing/accessory/storage/proc/return_inv() - var/list/L = list( ) + var/list/L = list() L += src.contents diff --git a/code/modules/clothing/under/centcom.dm b/code/modules/clothing/under/centcom.dm index 420a29da7d1e..a84ad49065ef 100644 --- a/code/modules/clothing/under/centcom.dm +++ b/code/modules/clothing/under/centcom.dm @@ -28,8 +28,8 @@ random_sensor = FALSE /obj/item/clothing/under/rank/centcom/ert/chaplain - name = "response team inquisitor uniform" - desc = "An armoured uniform designed for emergency response teams. This one belongs to an inquisitor." + name = "response team chaplain uniform" + desc = "An armoured uniform designed for emergency response teams. This one belongs to a chaplain." icon_state = "ert_chaplain" item_state = "ert_chaplain" item_color = "ert_chaplain" diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index e5a6769e3084..56d82237590b 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -11,6 +11,11 @@ "Kidan" = 'icons/mob/clothing/species/kidan/under/color.dmi' ) +/obj/item/clothing/under/color/jumpskirt + desc = "A standard issue colored jumpskirt. Variety is the spice of life!" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + dyeing_key = DYE_REGISTRY_JUMPSKIRT + /obj/item/clothing/under/color/random/Initialize(mapload) . = ..() var/list/excluded = list(/obj/item/clothing/under/color/random, @@ -33,12 +38,25 @@ item_color = "black" resistance_flags = NONE +/obj/item/clothing/under/color/jumpskirt/black + name = "black jumpskirt" + icon_state = "blackjumpskirt" + item_state = "bl_suit" + item_color = "blackskirt" + resistance_flags = NONE // I am going to assume this is here for a reason + /obj/item/clothing/under/color/blue name = "blue jumpsuit" icon_state = "blue" item_state = "b_suit" item_color = "blue" +/obj/item/clothing/under/color/jumpskirt/blue + name = "blue jumpskirt" + icon_state = "bluejumpskirt" + item_state = "b_suit" + item_color = "blueskirt" + /obj/item/clothing/under/color/blue/dodgeball flags = NODROP @@ -48,6 +66,12 @@ item_state = "g_suit" item_color = "green" +/obj/item/clothing/under/color/jumpskirt/green + name = "green jumpskirt" + icon_state = "greenjumpskirt" + item_state = "g_suit" + item_color = "greenskirt" + /obj/item/clothing/under/color/grey name = "grey jumpsuit" desc = "A tasteful grey jumpsuit that reminds you of the good old days." @@ -58,6 +82,13 @@ /obj/item/clothing/under/color/grey/greytide flags = NODROP +/obj/item/clothing/under/color/jumpskirt/grey + name = "grey jumpskirt" + desc = "A tasteful grey jumpskirt that reminds you of the good old days." + icon_state = "greyjumpskirt" + item_state = "gy_suit" + item_color = "greyskirt" + /obj/item/clothing/under/color/grey/glorf name = "ancient jumpsuit" desc = "A terribly ragged and frayed grey jumpsuit. It looks like it hasn't been washed in over a decade." @@ -72,6 +103,13 @@ item_state = "o_suit" item_color = "orange" +/obj/item/clothing/under/color/jumpskirt/orange + name = "orange jumpskirt" + desc = "Don't wear this near paranoid security officers." + icon_state = "orangejumpskirt" + item_state = "o_suit" + item_color = "orangeskirt" + /obj/item/clothing/under/color/orange/prison name = "orange jumpsuit" desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." @@ -81,6 +119,15 @@ has_sensor = 2 sensor_mode = SENSOR_COORDS +/obj/item/clothing/under/color/jumpskirt/orange/prison + name = "orange jumpskirt" + desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." + icon_state = "prisonerjumpskirt" + item_state = "prisoner" + item_color = "prisonerskirt" + has_sensor = 2 + sensor_mode = SENSOR_COORDS + /obj/item/clothing/under/color/pink name = "pink jumpsuit" desc = "Just looking at this makes you feel fabulous." @@ -88,12 +135,25 @@ item_state = "p_suit" item_color = "pink" +/obj/item/clothing/under/color/jumpskirt/pink + name = "pink jumpskirt" + desc = "Just looking at this makes you feel fabulous." + icon_state = "pinkjumpskirt" + item_state = "p_suit" + item_color = "pinkskirt" + /obj/item/clothing/under/color/red name = "red jumpsuit" icon_state = "red" item_state = "r_suit" item_color = "red" +/obj/item/clothing/under/color/jumpskirt/red + name = "red jumpskirt" + icon_state = "redjumpskirt" + item_state = "r_suit" + item_color = "redskirt" + /obj/item/clothing/under/color/red/dodgeball flags = NODROP @@ -103,12 +163,24 @@ item_state = "w_suit" item_color = "white" +/obj/item/clothing/under/color/jumpskirt/white + name = "white jumpskirt" + icon_state = "whitejumpskirt" + item_state = "w_suit" + item_color = "whiteskirt" + /obj/item/clothing/under/color/yellow name = "yellow jumpsuit" icon_state = "yellow" item_state = "y_suit" item_color = "yellow" +/obj/item/clothing/under/color/jumpskirt/yellow + name = "yellow jumpskirt" + icon_state = "yellowjumpskirt" + item_state = "y_suit" + item_color = "yellowskirt" + /obj/item/clothing/under/color/psyche name = "psychedelic jumpsuit" desc = "Groovy!" @@ -120,17 +192,33 @@ icon_state = "lightblue" item_color = "lightblue" +/obj/item/clothing/under/color/jumpskirt/lightblue + name = "light blue jumpskirt" + icon_state = "lightbluejumpskirt" + item_color = "lightblueskirt" + /obj/item/clothing/under/color/aqua name = "aqua jumpsuit" icon_state = "aqua" item_color = "aqua" +/obj/item/clothing/under/color/jumpskirt/aqua + name = "aqua jumpskirt" + icon_state = "aquajumpskirt" + item_color = "aquaskirt" + /obj/item/clothing/under/color/purple name = "purple jumpsuit" icon_state = "purple" item_state = "p_suit" item_color = "purple" +/obj/item/clothing/under/color/jumpskirt/purple + name = "purple jumpskirt" + icon_state = "purplejumpskirt" + item_state = "p_suit" + item_color = "purpleskirt" + /// for jani ert /obj/item/clothing/under/color/purple/sensor sensor_mode = SENSOR_COORDS @@ -141,41 +229,81 @@ icon_state = "lightpurple" item_color = "lightpurple" +/obj/item/clothing/under/color/jumpskirt/lightpurple + name = "light purple jumpskirt" + icon_state = "lightpurplejumpskirt" + item_color = "lightpurpleskirt" + /obj/item/clothing/under/color/lightgreen name = "light green jumpsuit" icon_state = "lightgreen" item_color = "lightgreen" +/obj/item/clothing/under/color/jumpskirt/lightgreen + name = "light green jumpskirt" + icon_state = "lightgreenjumpskirt" + item_color = "lightgreenskirt" + /obj/item/clothing/under/color/lightbrown name = "light brown jumpsuit" icon_state = "lightbrown" item_color = "lightbrown" +/obj/item/clothing/under/color/jumpskirt/lightbrown + name = "light brown jumpskirt" + icon_state = "lightbrownjumpskirt" + item_color = "lightbrownskirt" + /obj/item/clothing/under/color/brown name = "brown jumpsuit" icon_state = "brown" item_color = "brown" +/obj/item/clothing/under/color/jumpskirt/brown + name = "brown jumpskirt" + icon_state = "brownjumpskirt" + item_color = "brownskirt" + /obj/item/clothing/under/color/yellowgreen name = "yellow green jumpsuit" icon_state = "yellowgreen" item_color = "yellowgreen" +/obj/item/clothing/under/color/jumpskirt/yellowgreen + name = "yellow green jumpskirt" + icon_state = "yellowgreenjumpskirt" + item_color = "yellowgreenskirt" + /obj/item/clothing/under/color/darkblue name = "dark blue jumpsuit" icon_state = "darkblue" item_color = "darkblue" +/obj/item/clothing/under/color/jumpskirt/darkblue + name = "dark blue jumpskirt" + icon_state = "darkbluejumpskirt" + item_color = "darkblueskirt" + /obj/item/clothing/under/color/lightred name = "light red jumpsuit" icon_state = "lightred" item_color = "lightred" +/obj/item/clothing/under/color/jumpskirt/lightred + name = "light red jumpskirt" + icon_state = "lightredjumpskirt" + item_color = "lightredskirt" + /obj/item/clothing/under/color/darkred name = "dark red jumpsuit" icon_state = "darkred" item_color = "darkred" +/obj/item/clothing/under/color/jumpskirt/darkred + name = "dark red jumpskirt" + icon_state = "darkredjumpskirt" + item_color = "darkredskirt" + /obj/item/clothing/under/color/rainbow name = "rainbow" desc = "rainbow" @@ -183,6 +311,13 @@ item_state = "rainbow" item_color = "rainbow" +/obj/item/clothing/under/color/jumpskirt/rainbow + name = "rainbow jumpskirt" + desc = "Rainbow." + icon_state = "rainbowjumpskirt" + item_state = "rainbow" + item_color = "rainbowskirt" + /obj/item/clothing/under/color/red/jersey name = "red team jersey" desc = "The jersey of the Nanotrasen Phi-ghters!" diff --git a/code/modules/clothing/under/costumes.dm b/code/modules/clothing/under/costumes.dm index 6593a1c96d64..8804b0d4d719 100644 --- a/code/modules/clothing/under/costumes.dm +++ b/code/modules/clothing/under/costumes.dm @@ -139,12 +139,13 @@ item_state = "psysuit" item_color = "psysuit" - sprite_sheets = list( //it is what it is + //it is what it is + sprite_sheets = list( "Human" = 'icons/mob/clothing/under/costumes.dmi', "Vox" = 'icons/mob/clothing/species/vox/under/costumes.dmi', "Drask" = 'icons/mob/clothing/species/drask/under/costumes.dmi', "Grey" = 'icons/mob/clothing/species/grey/under/costumes.dmi' - ) + ) /obj/item/clothing/under/costume/redcoat name = "redcoat uniform" diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index 341062d5c4ae..f4b4cc6b1f95 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -11,21 +11,27 @@ CAT_DECORATIONS, CAT_CLOTHING) var/list/subcategories = list( - list( //Weapon subcategories + //Weapon subcategories + list( CAT_WEAPON, - CAT_AMMO), + CAT_AMMO + ), CAT_NONE, //Robot subcategories CAT_NONE, //Misc subcategories CAT_NONE, //Tribal subcategories - list( //Food subcategories + // Food subcategories + list( CAT_MISCFOOD, // SS220 ADDITION CAT_CAKE, CAT_SUSHI, - CAT_SANDWICH), - list( //Decoration subcategories + CAT_SANDWICH + ), + // Decoration subcategories + list( CAT_DECORATION, CAT_HOLIDAY, - CAT_LARGE_DECORATIONS), + CAT_LARGE_DECORATIONS + ), CAT_CLOTHING) //Clothing subcategories var/display_craftable_only = FALSE var/display_compact = TRUE diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 55605f6b2302..59308ef3757c 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -1439,8 +1439,8 @@ /obj/item/clothing/under/pants/fluff/combat name = "combat pants" desc = "Medium style tactical pants, for the fashion aware combat units out there." - icon = 'icons/obj/custom_items.dmi' - icon_state = "chaps" + icon = 'icons/mob/clothing/under/donator.dmi' + icon_state = "combat_pants_s" item_color = "combat_pants" sprite_sheets = list( "Human" = 'icons/mob/clothing/under/donator.dmi', diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index fb79cb5c35b2..dabe63331564 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -41,4 +41,5 @@ spawncount-- successSpawn = TRUE - SSevents.biohazards_this_round += "Xenomorphs" + SSticker.record_biohazard_start(BIOHAZARD_XENO) + SSevents.biohazards_this_round += BIOHAZARD_XENO diff --git a/code/modules/events/blob/blob_mobs.dm b/code/modules/events/blob/blob_mobs.dm index aad976d37397..8640bbbd4e31 100644 --- a/code/modules/events/blob/blob_mobs.dm +++ b/code/modules/events/blob/blob_mobs.dm @@ -67,7 +67,7 @@ environment_smash = ENVIRONMENT_SMASH_STRUCTURES attacktext = "hits" attack_sound = 'sound/weapons/genhit1.ogg' - flying = TRUE + initial_traits = list(TRAIT_FLYING) speak_emote = list("pulses") var/obj/structure/blob/factory/factory = null var/list/human_overlays = list() @@ -244,6 +244,6 @@ if(message) for(var/mob/M in GLOB.mob_list) follow_text = isobserver(M) ? " ([ghost_follow_link(src, ghost = M)])" : "" - rendered = "Blob Telepathy, [name]([overmind])[follow_text] states, \"[message]\"" + rendered = "Blob Telepathy, [name]([overmind])[follow_text] states, \"[message]\"" if(isovermind(M) || isobserver(M) || istype(M, /mob/living/simple_animal/hostile/blob/blobbernaut)) M.show_message(rendered, EMOTE_AUDIBLE) diff --git a/code/modules/events/blob/overmind.dm b/code/modules/events/blob/overmind.dm index 12919ff69444..40bf12b60c38 100644 --- a/code/modules/events/blob/overmind.dm +++ b/code/modules/events/blob/overmind.dm @@ -101,7 +101,7 @@ var/follow_text for(var/mob/M in GLOB.mob_list) follow_text = isobserver(M) ? " ([ghost_follow_link(src, ghost=M)])" : "" - rendered = "Blob Telepathy, [name]([blob_reagent_datum.name])[follow_text] states, \"[message]\"" + rendered = "Blob Telepathy, [name]([blob_reagent_datum.name])[follow_text] states, \"[message]\"" if(isovermind(M) || isobserver(M) || istype(M, /mob/living/simple_animal/hostile/blob/blobbernaut)) M.show_message(rendered, EMOTE_AUDIBLE) diff --git a/code/modules/events/blob_spawn.dm b/code/modules/events/blob_spawn.dm index 1fbc9a4a0b94..ec180703ab7b 100644 --- a/code/modules/events/blob_spawn.dm +++ b/code/modules/events/blob_spawn.dm @@ -39,4 +39,4 @@ to_chat(B, "For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Blob)") notify_ghosts("Infected Mouse has appeared in [get_area(B)].", source = B, action = NOTIFY_FOLLOW) successSpawn = TRUE - SSevents.biohazards_this_round += "Blob" + SSevents.biohazards_this_round += BIOHAZARD_BLOB diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index c8612e163463..ac95ae68fda4 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -90,7 +90,8 @@ saved.shoot_inventory = FALSE saved.aggressive = FALSE if(saved.tiltable) - qdel(saved.GetComponent(/datum/component/proximity_monitor)) + saved.DeleteComponent(/datum/component/proximity_monitor) + if(originMachine) originMachine.speak("I am... vanquished. My people will remem...ber...meeee.") originMachine.visible_message("[originMachine] beeps and seems lifeless.") diff --git a/code/modules/events/spider_terror.dm b/code/modules/events/spider_terror.dm index 2b2c85cb5c1d..ead04dc76e98 100644 --- a/code/modules/events/spider_terror.dm +++ b/code/modules/events/spider_terror.dm @@ -66,6 +66,7 @@ S.give_intro_text() spawncount-- successSpawn = TRUE + SSticker.record_biohazard_start(infestation_type) SSevents.biohazards_this_round += infestation_type #undef TS_HIGHPOP_TRIGGER diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 8ec0d951e814..d48707468de6 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -30,6 +30,7 @@ "sugar" = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!"), "vinegar" = list("vinegar", "vinegar", "Perfect for chips, if you're feeling Space British."), "mayonnaise" = list("mayonnaise", "mayonnaise bottle", "An oily condiment made from egg yolks."), + "yogurt" = list("yogurt", "yogurt tub", "Some yogurt, produced by bacterial fermentation of milk. Yum."), "cherryjelly" = list("cherryjelly", "cherry jelly jar", "A sweet jelly made out of red cherries."), "peanutbutter" = list("peanutbutter", "peanut butter jar", "A smooth, nutty spread. Perfect for sandwiches."), "honey" = list("honey", "honey jar", "A sweet substance produced by bees."), @@ -227,6 +228,13 @@ list_reagents = list("mayonnaise" = 50) possible_states = list() +/obj/item/reagent_containers/condiment/yogurt + name = "yogurt tub" + desc = "Some yogurt, produced by bacterial fermentation of milk. Yum." + icon_state = "yogurt" + list_reagents = list("yogurt" = 50) + possible_states = list() + /obj/item/reagent_containers/condiment/cherryjelly name = "cherry jelly" desc = "A sweet jelly made out of red cherries." diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 3df6580452ad..c048f8c3fc8c 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -336,11 +336,10 @@ do {\ /obj/item/food/customizable/attackby(obj/item/I, mob/user, params) - if(is_pen(I)) - var/new_name = rename_interactive(user, I, use_prefix = FALSE) - if(!isnull(new_name)) - to_chat(user, "You declare this to be \a [name]. Delicious!") - return + ..() + + if(istype(I, /obj/item/kitchen/utensil) || is_pen(I)) + return if(!istype(I, /obj/item/food)) to_chat(user, "[I] isn't exactly something that you would want to eat.") diff --git a/code/modules/food_and_drinks/food/foods/baked_goods.dm b/code/modules/food_and_drinks/food/foods/baked_goods.dm index 8299792db766..2f3be77168f2 100644 --- a/code/modules/food_and_drinks/food/foods/baked_goods.dm +++ b/code/modules/food_and_drinks/food/foods/baked_goods.dm @@ -259,6 +259,259 @@ tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1) goal_difficulty = FOOD_GOAL_EASY +/obj/item/food/sliceable/holy_cake + name = "angel food cake" + desc = "A cake made for angels and chaplains alike! Contains holy water." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "holy_cake" + slice_path = /obj/item/food/holy_cake_slice + slices_num = 5 + bitesize = 3 + filling_color = "#ffffff" + list_reagents = list("nutriment" = 1, "vitamin" = 3, "holywater" = 10) + tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/holy_cake_slice + name = "holy cake slice" + desc = "A slice of heavenly cake." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "holy_cake_slice" + trash = /obj/item/trash/plate + filling_color = "#ffffff" + tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/liars_cake + name = "strawberry chocolate cake" + desc = "A chocolate cake with five strawberries on top. For some reason, this configuration of cake is particularly aesthetically pleasing to AIs in SELF." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "liars_cake" + slice_path = /obj/item/food/liars_slice + slices_num = 5 + bitesize = 3 + filling_color = "#240606c7" + list_reagents = list("nutriment" = 20, "vitamin" = 5, "cocoa" = 5) + tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2, "cake" = 3) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/liars_slice + name = "strawberry chocolate cake slice" + desc = "Just a slice of cake with five strawberries on top. \ + For some reason, this configuration of cake is particularly aesthetically pleasing to AIs in SELF." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "liars_slice" + trash = /obj/item/trash/plate + filling_color = "#ffffff" + tastes = list("strawberries" = 2, "chocolate" = 2, "sweetness" = 2, "cake" = 3) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/vanilla_berry_cake + name = "blackberry and strawberry vanilla cake" + desc = "A plain cake, filled with assortment of blackberries and strawberries!" + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "vanilla_berry_cake" + slice_path = /obj/item/food/vanilla_berry_cake_slice + slices_num = 5 + bitesize = 3 + filling_color = "#f0e3e3c7" + list_reagents = list("nutriment" = 20, "vitamin" = 5, "vanilla" = 5) + tastes = list("blackberry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/vanilla_berry_cake_slice + name = "blackberry and strawberry vanilla cake slice" + desc = "Just a slice of cake filled with assortment of blackberries and strawberries!" + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "vanilla_berry_cake_slice" + trash = /obj/item/trash/plate + filling_color = "#ffffff" + tastes = list("blackberry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/hardware_cake + name = "hardware cake" + desc = "A \"cake\" that is made with electronic boards and leaks acid..." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "hardware_cake" + slice_path = /obj/item/food/hardware_cake_slice + slices_num = 5 + bitesize = 3 + filling_color = "#4ac25e" + list_reagents = list("nutriment" = 20, "vitamin" = 5, "sacid" = 15, "oil" = 15) + tastes = list("acid" = 3, "metal" = 4, "glass" = 5) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/hardware_cake_slice + name = "hardware cake slice" + desc = "A slice of electronic boards and some acid." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "hardware_cake_slice" + trash = /obj/item/trash/plate + filling_color = "#4ac25e" + tastes = list("acid" = 3, "metal" = 4, "glass" = 5) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/plum_cake + name = "plum cake" + desc = "A cake centred with Plums." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "plum_cake" + slice_path = /obj/item/food/plum_cake_slice + slices_num = 5 + bitesize = 3 + filling_color = "#a128c5" + list_reagents = list("nutriment" = 20, "vitamin" = 10) + tastes = list("cake" = 5, "sweetness" = 1, "plum" = 2) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/plum_cake_slice + name = "plum cake slice" + desc = "A slice of plum cake." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "plum_cake_slice" + trash = /obj/item/trash/plate + filling_color = "#a128c5" + tastes = list("cake" = 5, "sweetness" = 1, "plum" = 2) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/pound_cake + name = "pound cake" + desc = "A condensed cake made for filling people up quickly." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "pound_cake" + slice_path = /obj/item/food/pound_cake_slice + slices_num = 5 + bitesize = 3 + filling_color = "#c4cab7" + list_reagents = list("nutriment" = 60, "vitamin" = 20) + tastes = list("cake" = 5, "sweetness" = 5, "batter" = 1) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/pound_cake_slice + name = "pound cake slice" + desc = "A slice of condensed cake made for filling people up quickly." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "pound_cake_slice" + trash = /obj/item/trash/plate + filling_color = "#ffffff" + tastes = list("cake" = 5, "sweetness" = 5, "batter" = 1) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/pumpkin_spice_cake + name = "pumpkin spice cake" + desc = "A hollow cake with real pumpkin." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "pumpkin_spice_cake" + slice_path = /obj/item/food/pumpkin_spice_cake_slice + slices_num = 5 + bitesize = 3 + filling_color = "#ee710a" + list_reagents = list("nutriment" = 20, "vitamin" = 10) + tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/pumpkin_spice_cake_slice + name = "pumpkin spice cake slice" + desc = "A spicy slice of pumpkin goodness." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "pumpkin_spice_cake_slice" + trash = /obj/item/trash/plate + filling_color = "#ee710a" + tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/slime_cake + name = "slime cake" + desc = "A cake made of slimes. Probably not electrified." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "slime_cake" + slice_path = /obj/item/food/slime_cake_slice + slices_num = 5 + bitesize = 3 + filling_color = "#0adfee" + list_reagents = list("nutriment" = 20, "vitamin" = 10) + tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/slime_cake_slice + name = "slime cake slice" + desc = "A slice of slime cake." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "slime_cake_slice" + trash = /obj/item/trash/plate + filling_color = "#0adfee" + tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/spaceman_cake + name = "spaceman's cake" + desc = "A spaceman's trumpet frosted cake." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "trumpet_cake" + slice_path = /obj/item/food/spaceman_cake_slice + slices_num = 5 + bitesize = 3 + filling_color = "#610977" + list_reagents = list("nutriment" = 20, "vitamin" = 10, "cream" = 5, "berryjuice", 5) + tastes = list("cake" = 4, "violets" = 2, "jam" = 2) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/spaceman_cake_slice + name = "spaceman's cake slice" + desc = "A slice of spaceman's trumpet frosted cake." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "trumpet_cake_slice" + trash = /obj/item/trash/plate + filling_color = "#610977" + tastes = list("cake" = 4, "violets" = 2, "jam" = 2) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/vanilla_cake + name = "vanilla cake" + desc = "A vanilla frosted cake." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "vanilla_cake" + slice_path = /obj/item/food/vanilla_cake_slice + slices_num = 5 + bitesize = 3 + filling_color = "#ece7ee" + list_reagents = list("nutriment" = 20, "vitamin" = 5, "sugar" = 15, "vanilla" = 15) + tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/vanilla_cake_slice + name = "vanilla cake slice" + desc = "A slice of vanilla frosted cake." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "vanilla_cake_slice" + filling_color = "#ece7ee" + tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10) + goal_difficulty = FOOD_GOAL_EASY + +/obj/item/food/sliceable/mothmallow + name = "mothmallow tray" + desc = "A light and fluffy vegan marshmallow flavoured with vanilla and rum and topped with soft chocolate. These are known to the moths as höllflöfstarkken: cloud squares." //höllflöf = cloud (höll = wind, flöf = cotton), starkken = squares + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "mothmallow_tray" + list_reagents = list("nutriment" = 20, "sugar" = 20) + slice_path = /obj/item/food/mothmallowslice + slices_num = 5 + bitesize = 3 + filling_color = "#eebe98" + tastes = list("vanilla" = 1, "clouds" = 1, "chocolate" = 1) + goal_difficulty = FOOD_GOAL_DUPLICATE + +/obj/item/food/mothmallowslice + name = "mothmallow" + desc = "Fluffy little clouds of joy- in a strangely moth-like colour." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "mothmallow_slice" + filling_color = "#ece7ee" + filling_color = "#eebe98" + tastes = list("vanilla" = 1, "clouds" = 1, "chocolate" = 1) + goal_difficulty = FOOD_GOAL_EASY + ////////////////////// // Cookies // @@ -295,6 +548,32 @@ tastes = list("sweetness" = 1) goal_difficulty = FOOD_GOAL_EASY +/obj/item/food/oatmeal_cookie + name = "oatmeal cookie" + desc = "The best of both cookie and oat." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "oatmeal_cookie" + list_reagents = list("nutriment" = 6, "vitamin" = 2) + tastes = list("cookie" = 2, "oat" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/raisin_cookie + name = "raisin cookie" + desc = "Why would you put raisins on a cookie?" + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "raisin_cookie" + list_reagents = list("nutriment" = 6, "vitamin" = 2) + tastes = list("cookie" = 1, "raisins" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/peanut_butter_cookie + name = "peanut butter cookie" + desc = "A tasty, chewy peanut butter cookie." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "peanut_butter_cookie" + list_reagents = list("nutriment" = 6, "peanutbutter" = 5) + tastes = list("cookie" = 1, "peanut butter" = 2) + goal_difficulty = FOOD_GOAL_NORMAL ////////////////////// // Pies // @@ -429,6 +708,85 @@ tastes = list("pie" = 1, "pumpkin" = 1) goal_difficulty = FOOD_GOAL_NORMAL +/obj/item/food/beary_pie + name = "beary pie" + desc = "No brown bears, this is a good sign." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "beary_pie" + filling_color = "#F5B951" + list_reagents = list("nutriment" = 12, "vitamin" = 5, "protein" = 5) + tastes = list("pie" = 1, "meat" = 1, "salmon" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/sliceable/blumpkin_pie + name = "blumpkin pie" + desc = "An odd blue pie made with toxic blumpkin." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "blumpkin_pie" + slice_path = /obj/item/food/blumpkin_pie_slice + slices_num = 5 + bitesize = 3 + filling_color = "#102d8b" + list_reagents = list("nutriment" = 13, "vitamin" = 6, "blumpkinjuice" = 5) + tastes = list("pie" = 1, "a mouthful of pool water" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/blumpkin_pie_slice + name = "blumpkin pie slice" + desc = "A slice of blumpkin pie, with whipped cream on top. Is this edible?" + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "blumpkin_pie_slice" + trash = /obj/item/trash/plate + filling_color = "#102d8b" + tastes = list("pie" = 1, "a mouthful of pool water" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/sliceable/french_silk_pie + name = "french silk pie" + desc = "A decadent pie made of a creamy chocolate mousse filling topped with a layer of whipped cream and chocolate shavings. Sliceable." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "french_silk_pie" + slice_path = /obj/item/food/french_silk_pie_slice + slices_num = 5 + bitesize = 3 + filling_color = "#5e4337" + list_reagents = list("nutriment" = 12, "vitamin" = 4) + tastes = list("pie" = 1, "smooth chocolate" = 1, "whipped cream" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/french_silk_pie_slice + name = "french silk pie slice" + desc = "A slice of french silk pie, filled with a chocolate mousse and topped with a layer of whipped cream and chocolate shavings. Delicious enough to make you cry." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "french_silk_pie_slice" + trash = /obj/item/trash/plate + filling_color = "#5e4337" + tastes = list("pie" = 1, "smooth chocolate" = 1, "whipped cream" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/sliceable/frosty_pie + name = "frosty pie" + desc = "Tastes like blue and cold." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "frosty_pie" + slice_path = /obj/item/food/frosty_pie_slice + slices_num = 5 + bitesize = 3 + filling_color = "#5e4337" + list_reagents = list("nutriment" = 14, "vitamin" = 6) + tastes = list("mint" = 1, "pie" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/frosty_pie_slice + name = "frosty pie slice" + desc = "Tasty blue, like my favourite crayon!" + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "frosty_pie_slice" + trash = /obj/item/trash/plate + filling_color = "#338cb6" + tastes = list("mint" = 1, "pie" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + ////////////////////// // Donuts // ////////////////////// @@ -442,7 +800,7 @@ list_reagents = list("nutriment" = 3, "sugar" = 2) var/extra_reagent = null filling_color = "#D2691E" - var/randomized_sprinkles = 1 + var/randomized_sprinkles = TRUE var/donut_sprite_type = DONUT_NORMAL tastes = list("donut" = 1) @@ -461,7 +819,7 @@ list_reagents = list("nutriment" = 3, "sugar" = 2, "sprinkles" = 2) filling_color = "#FF69B4" donut_sprite_type = DONUT_FROSTED - randomized_sprinkles = 0 + randomized_sprinkles = FALSE /obj/item/food/donut/chaos name = "chaos donut" @@ -500,18 +858,244 @@ filling_color = "#FF69B4" /obj/item/food/donut/jelly/slimejelly - name = "jelly donut" + name = "slime jelly donut" desc = "You jelly?" icon_state = "jdonut1" extra_reagent = "slimejelly" goal_difficulty = FOOD_GOAL_HARD /obj/item/food/donut/jelly/cherryjelly - name = "jelly donut" + name = "cherry jelly donut" desc = "You jelly?" icon_state = "jdonut1" extra_reagent = "cherryjelly" +/obj/item/food/donut/apple + name = "apple donut" + desc = "Goes great with a shot of cinnamon schnapps." + icon_state = "donut_green" + list_reagents = list("nutriment" = 3, "sugar" = 2, "applejuice" = 2) + filling_color = "#24d21e" + tastes = list("donut" = 1, "apples" = 1) + randomized_sprinkles = FALSE + +/obj/item/food/donut/apple/jelly + name = "jelly apple donut" + desc = "Goes great with a shot of cinnamon schnapps." + icon_state = "jelly_green" + extra_reagent = "berryjuice" + +/obj/item/food/donut/apple/jelly/cherry + name = "jelly apple donut" + desc = "Goes great with a shot of cinnamon schnapps." + icon_state = "jelly_green" + extra_reagent = "cherryjelly" + +/obj/item/food/donut/apple/jelly/slime + name = "jelly apple donut" + desc = "Goes great with a shot of cinnamon schnapps." + icon_state = "jelly_green" + extra_reagent = "slimejelly" + +/obj/item/food/donut/pink + name = "jelly pink donut" + desc = "Goes great with a soy latte." + icon_state = "donut_pink" + list_reagents = list("nutriment" = 3, "sugar" = 2, "berryjuice" = 3) + filling_color = "#D2691E" + tastes = list("donut" = 1, "berries" = 1) + randomized_sprinkles = FALSE + +/obj/item/food/donut/pink/jelly + name = "jelly pink donut" + desc = "Goes great with a soy latte." + icon_state = "jelly_pink" + extra_reagent = "berryjuice" + +/obj/item/food/donut/pink/jelly/cherry + name = "jelly pink donut" + desc = "Goes great with a soy latte." + icon_state = "jelly_pink" + extra_reagent = "cherryjelly" + +/obj/item/food/donut/pink/jelly/slime + name = "jelly pink donut" + desc = "Goes great with a soy latte." + icon_state = "jelly_pink" + extra_reagent = "slimejelly" + +/obj/item/food/donut/blumpkin + name = "blumpkin donut" + desc = "Goes great with a mug of soothing drunken blumpkin." + icon_state = "donut_blue" + list_reagents = list("nutriment" = 3, "sugar" = 2, "blumpkinjuice" = 2) + filling_color = "#D2691E" + tastes = list("donut" = 1, "blumpkin" = 1) + randomized_sprinkles = FALSE + +/obj/item/food/donut/blumpkin/jelly + name = "jelly blumpkin donut" + desc = "Goes great with a mug of soothing drunken blumpkin." + icon_state = "jelly_blue" + extra_reagent = "berryjuice" + +/obj/item/food/donut/blumpkin/jelly/cherry + name = "jelly blumpkin donut" + desc = "Goes great with a mug of soothing drunken blumpkin." + icon_state = "jelly_blue" + extra_reagent = "cherryjelly" + +/obj/item/food/donut/blumpkin/jelly/slime + name = "jelly blumpkin donut" + desc = "Goes great with a mug of soothing drunken blumpkin." + icon_state = "jelly_blue" + extra_reagent = "slimejelly" + +/obj/item/food/donut/caramel + name = "caramel donut" + desc = "Goes great with a mug of hot cocoa." + icon_state = "donut_beige" + list_reagents = list("nutriment" = 3, "sugar" = 2) + filling_color = "#D2691E" + tastes = list("donut" = 1, "buttery sweetness" = 1) + randomized_sprinkles = FALSE + +/obj/item/food/donut/caramel/jelly + name = "jelly caramel donut" + desc = "Goes great with a mug of hot cocoa." + icon_state = "jelly_beige" + extra_reagent = "berryjuice" + +/obj/item/food/donut/caramel/jelly/cherry + name = "jelly caramel donut" + desc = "Goes great with a mug of hot cocoa." + icon_state = "jelly_beige" + extra_reagent = "cherryjelly" + +/obj/item/food/donut/caramel/jelly/slime + name = "jelly caramel donut" + desc = "Goes great with a mug of hot cocoa." + icon_state = "jelly_beige" + extra_reagent = "slimejelly" + +/obj/item/food/donut/chocolate + name = "chocolate donut" + desc = "Goes great with a glass of warm milk." + icon_state = "donut_choc" + list_reagents = list("nutriment" = 3, "sugar" = 2, "hot_coco" = 3) + filling_color = "#D2691E" + tastes = list("donut" = 1, "bitterness" = 1) + randomized_sprinkles = FALSE + +/obj/item/food/donut/chocolate/jelly + name = "jelly chocolate donut" + desc = "Goes great with a glass of warm milk." + icon_state = "jelly_choc" + extra_reagent = "berryjuice" + +/obj/item/food/donut/chocolate/jelly/cherry + name = "jelly chocolate donut" + desc = "Goes great with a glass of warm milk." + icon_state = "jelly_choc" + extra_reagent = "cherryjelly" + +/obj/item/food/donut/chocolate/jelly/slime + name = "jelly chocolate donut" + desc = "Goes great with a glass of warm milk." + icon_state = "jelly_choc" + extra_reagent = "slimejelly" + +/obj/item/food/donut/matcha + name = "matcha donut" + desc = "Goes great with a cup of tea." + icon_state = "donut_olive" + list_reagents = list("nutriment" = 3, "sugar" = 2, "teapowder" = 2) + filling_color = "#D2691E" + tastes = list("donut" = 1, "matcha" = 1) + randomized_sprinkles = FALSE + +/obj/item/food/donut/matcha/jelly + name = "jelly matcha donut" + desc = "Goes great with a cup of tea." + icon_state = "jelly_olive" + extra_reagent = "berryjuice" + +/obj/item/food/donut/matcha/jelly/cherry + name = "jelly matcha donut" + desc = "Goes great with a cup of tea." + icon_state = "jelly_olive" + extra_reagent = "cherryjelly" + +/obj/item/food/donut/matcha/jelly/slime + name = "jelly matcha donut" + desc = "Goes great with a cup of tea." + icon_state = "jelly_olive" + extra_reagent = "slimejelly" + +/obj/item/food/donut/bungo + name = "bungo donut" + desc = "Goes great with a mason jar of hippie's delight." + icon_state = "donut_yellow" + list_reagents = list("nutriment" = 3, "sugar" = 2, "bungojuice" = 3) + filling_color = "#D2691E" + tastes = list("donut" = 1, "tropical sweetness" = 1, "an acidic, poisonous tang" = 1) + randomized_sprinkles = FALSE + +/obj/item/food/donut/bungo/jelly + name = "jelly bungo donut" + desc = "Goes great with a mason jar of hippie's delight." + icon_state = "jelly_yellow" + extra_reagent = "berryjuice" + +/obj/item/food/donut/bungo/jelly/cherry + name = "jelly bungo donut" + desc = "Goes great with a mason jar of hippie's delight." + icon_state = "jelly_yellow" + extra_reagent = "cherryjelly" + +/obj/item/food/donut/bungo/jelly/slime + name = "jelly bungo donut" + desc = "Goes great with a mason jar of hippie's delight." + icon_state = "jelly_yellow" + extra_reagent = "slimejelly" + +/obj/item/food/donut/spaceman + name = "spaceman's donut" + desc = "Goes great with a cold beaker of malk." + icon_state = "donut_purple" + list_reagents = list("nutriment" = 3, "sugar" = 2) + filling_color = "#D2691E" + tastes = list("donut" = 1, "violets" = 1) + randomized_sprinkles = FALSE + +/obj/item/food/donut/spaceman/jelly + name = "jelly spaceman's donut" + desc = "Goes great with a cold beaker of malk." + icon_state = "jelly_purple" + extra_reagent = "berryjuice" + +/obj/item/food/donut/spaceman/jelly/cherry + name = "jelly spaceman's donut" + desc = "Goes great with a cold beaker of malk." + icon_state = "jelly_purple" + extra_reagent = "cherryjelly" + +/obj/item/food/donut/spaceman/jelly/slime + name = "jelly spaceman's donut" + desc = "Goes great with a cold beaker of malk." + icon_state = "jelly_purple" + extra_reagent = "slimejelly" + +/obj/item/food/donut/meat + name = "Meat Donut" + desc = "Tastes as gross as it looks." + icon_state = "donut_meat" + list_reagents = list("nutriment" = 3, "protein" = 3, "ketchup" = 3) + filling_color = "#D2691E" + tastes = list("meat" = 1, "ketchup" = 1) + randomized_sprinkles = FALSE + + ////////////////////// // Pancakes // ////////////////////// @@ -572,6 +1156,37 @@ tastes = list("muffin" = 1) goal_difficulty = FOOD_GOAL_NORMAL +/obj/item/food/berry_muffin + name = "berry_muffin" + desc = "A delicious and spongy little cake, with berries." + icon = 'icons/obj/food/breakfast.dmi' + icon_state = "berry_muffin" + filling_color = "#ad2bbe" + list_reagents = list("nutriment" = 6, "berryjuice" = 2) + tastes = list("muffin" = 3, "berry" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/booberry_muffin + name = "booberry muffin" + desc = "My stomach is a graveyard! No living being can quench my bloodthirst!" + icon = 'icons/obj/food/breakfast.dmi' + alpha = 125 + icon_state = "berry_muffin" + filling_color = "#d9b6f5" + list_reagents = list("nutriment" = 6) + tastes = list("muffin" = 3, "spookiness" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/moffin + name = "moffin" + desc = "A delicious and spongy little cake." + icon = 'icons/obj/food/breakfast.dmi' + icon_state = "moffin" + filling_color = "#c7ab56" + list_reagents = list("nutriment" = 6) + tastes = list("muffin" = 3, "dust" = 1, "lint" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + /obj/item/food/berryclafoutis name = "berry clafoutis" desc = "No black birds, this is a good sign." @@ -623,6 +1238,120 @@ tastes = list("pie" = 1, "apple" = 1, "expensive metal" = 1) goal_difficulty = FOOD_GOAL_NORMAL +/obj/item/food/grape_tart + name = "grape tart" + desc = "A tasty dessert that reminds you of the wine you didn't make." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "grape_tart" + trash = /obj/item/trash/plate + filling_color = "#8c00ff" + bitesize = 3 + list_reagents = list("nutriment" = 4, "vitamin" = 4) + tastes = list("pie" = 1, "grape" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/mime_tart + name = "mime tart" + desc = "..." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "mime_tart" + trash = /obj/item/trash/plate + filling_color = "#8c00ff" + bitesize = 3 + list_reagents = list("nutriment" = 5, "vitamin" = 5, "nothing" = 5) + tastes = list("nothing" = 3) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/cherry_cupcake + name = "cherry cupcake" + desc = "A sweet cupcake with cherry bits." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "cherry_cupcake" + filling_color = "#8b1236" + list_reagents = list("nutriment" = 6, "vitamin" = 2) + tastes = list("cake" = 3, "cherry" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/cherry_cupcake/blue + name = "blue cherry cupcake" + desc = "Blue cherries inside a delicious cupcake." + icon_state = "bluecherry_cupcake" + filling_color = "#0d1694" + tastes = list("cake" = 3, "bluecherry" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/honey_bun + name = "honey bun" + desc = "A sticky pastry bun glazed with honey." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "honey_bun" + filling_color = "#d88e06" + list_reagents = list("nutriment" = 6, "honey" = 6) + tastes = list("pastry" = 1, "sweetness" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/cannoli + name = "cannoli" + desc = "A Sicilian treat that turns you into a wise guy." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "cannoli" + filling_color = "#d88e06" + list_reagents = list("nutriment" = 6, "vitamin" = 2) + tastes = list("pastry" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/chocolate_lava_tart + name = "chocolate lava tart" + desc = "A tasty dessert made of chocolate, with a liquid core." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "coco_lava_tart" + filling_color = "#411b02" + list_reagents = list("nutriment" = 4, "vitamin" = 4) + tastes = list("pie" = 1, "dark chocolate" = 3) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/chocolate_cornet + name = "chocolate cornet" + desc = "Which side's the head, the fat end or the thin end?" + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "choco_cornet" + filling_color = "#411b02" + list_reagents = list("nutriment" = 6, "vitamin" = 2) + tastes = list("biscuit" = 3, "chocolate" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/sliceable/dulce_de_batata + name = "dulce de batata" + desc = "A delicious jelly made with sweet potatoes." + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "dulce_de_batata" + slice_path = /obj/item/food/dulce_de_batata_slice + slices_num = 5 + bitesize = 3 + filling_color = "#411b02" + list_reagents = list("nutriment" = 14, "vitamin" = 8) + tastes = list("jelly" = 1, "sweet potato" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/dulce_de_batata_slice + name = "dulce de batata slice" + desc = "Tasty blue, like my favourite crayon!" + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "dulce_de_batata_slice" + trash = /obj/item/trash/plate + filling_color = "#411b02" + tastes = list("jelly" = 1, "sweet potato" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/cheese_balls + name = "\improper ælorölen" //ælo = cheese, rölen = balls + desc = "Ælorölen (cheese balls) are a traditional mothic dessert, made of soft cheese, powdered sugar and flour, rolled into balls, battered and then deep fried. They're often served with either chocolate sauce or honey, or sometimes both!" + icon = 'icons/obj/food/bakedgoods.dmi' + icon_state = "moth_cheese_cakes" + filling_color = "#411b02" + list_reagents = list("protein" = 8, "sugar" = 12) + tastes = list("cheesecake" = 1, "chocolate" = 1, "honey" = 1) + goal_difficulty = FOOD_GOAL_NORMAL /obj/item/food/cracker name = "cracker" diff --git a/code/modules/food_and_drinks/food/foods/candy.dm b/code/modules/food_and_drinks/food/foods/candy.dm index efc674cdb397..486c47a31611 100644 --- a/code/modules/food_and_drinks/food/foods/candy.dm +++ b/code/modules/food_and_drinks/food/foods/candy.dm @@ -13,7 +13,7 @@ icon = 'icons/obj/food/candy.dmi' icon_state = "candy" tastes = list("candy" = 1) - goal_difficulty = FOOD_GOAL_NORMAL + goal_difficulty = FOOD_GOAL_SKIP // *********************************************************** // Candy Ingredients / Flavorings / Byproduct @@ -94,6 +94,51 @@ filling_color = "#7D5F46" goal_difficulty = FOOD_GOAL_NORMAL +/obj/item/food/candy/chocolate_orange + name = "chocolate orange" + desc = "A festive chocolate orange." + icon_state = "choco_orange" + filling_color = "#7D5F46" + list_reagents = list("nutriment" = 3, "sugar" = 1) + tastes = list("chocolate" = 3, "oranges" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/candy/candied_pineapple + name = "candied pineapple" + desc = "A chunk of pineapple coated in sugar and dried into a chewy treat." + icon_state = "candied_pineapple" + filling_color = "#ffbd35" + list_reagents = list("nutriment" = 3, "vitamin" = 3) + tastes = list("sugar" = 2, "chewy pineapple" = 4) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/candy/chocolate_coin + name = "chocolate coin" + desc = "A completely edible but non-flippable festive coin." + icon_state = "choco_coin" + filling_color = "#7D5F46" + list_reagents = list("nutriment" = 4, "sugar" = 1, "cocoa" = 1, "vitamin" = 1) + tastes = list("chocolate" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/candy/chocolate_bunny + name = "chocolate bunny" + desc = "Contains less than 10% real rabbit!" + icon_state = "chocolate_bunny" + filling_color = "#7D5F46" + list_reagents = list("nutriment" = 4, "sugar" = 1, "cocoa" = 1) + tastes = list("chocolate" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/candy/fudge_dice + name = "fudge dice" + desc = "A little cube of chocolate that tends to have a less intense taste if you eat too many at once." + icon_state = "choco_dice" + filling_color = "#7D5F46" + list_reagents = list("nutriment" = 3, "sugar" = 1, "cocoa" = 1) + tastes = list("fudge" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + // *********************************************************** // Candy Products (Pre-existing) // *********************************************************** diff --git a/code/modules/food_and_drinks/food/foods/frozen.dm b/code/modules/food_and_drinks/food/foods/frozen.dm index a6c6314ab980..2e546c7aa52a 100644 --- a/code/modules/food_and_drinks/food/foods/frozen.dm +++ b/code/modules/food_and_drinks/food/foods/frozen.dm @@ -359,6 +359,6 @@ name = "ant popsicle" desc = "A colony of ants suspended in hardened sugar. Those things are dead, right?" icon_state = "ant_pop" - trash = /obj/item/stack/rods - list_reagents = list("nutriment" = 1, "vitamin" = 1, "sugar" = 5, "ants" = 3,) + trash = /obj/item/trash/popsicle_stick + list_reagents = list("nutriment" = 1, "vitamin" = 1, "sugar" = 5, "ants" = 3) tastes = list("candy" = 1, "ants" = 2) diff --git a/code/modules/food_and_drinks/food/foods/ingredients.dm b/code/modules/food_and_drinks/food/foods/ingredients.dm index 7e50a1667d3b..fda18eae17b7 100644 --- a/code/modules/food_and_drinks/food/foods/ingredients.dm +++ b/code/modules/food_and_drinks/food/foods/ingredients.dm @@ -69,6 +69,12 @@ filling_color = "#00FF33" list_reagents = list("mercury" = 5, "lsd" = 5, "ethanol" = 5, "weird_cheese" = 5) +/obj/item/food/cheese_curds + name = "cheese curds" + desc = "Known by many names throughout human cuisine, curd cheese is useful for a wide variety of dishes." + icon_state = "cheese_curds" + filling_color = "#FFF700" + list_reagents = list("cheese_curds" = 4, "nutriment" = 3, "vitamin" = 1) ////////////////////// // Plants // diff --git a/code/modules/food_and_drinks/food/foods/pizza.dm b/code/modules/food_and_drinks/food/foods/pizza.dm index 8a62b48fd3a9..3b9c7a5d13c6 100644 --- a/code/modules/food_and_drinks/food/foods/pizza.dm +++ b/code/modules/food_and_drinks/food/foods/pizza.dm @@ -271,10 +271,16 @@ var/is_messy = FALSE // Fancy mess on the lid var/obj/item/food/sliceable/pizza/pizza // Content pizza var/list/boxes = list() // If the boxes are stacked, they come here + /// The name that shows on the box lid, describing the pizza type. var/box_tag = "" + /// The type of pizza that's spawned in the box. + var/pizza_type /obj/item/pizzabox/Initialize(mapload) . = ..() + if(!isnull(pizza_type)) + pizza = new pizza_type(src) + update_appearance(UPDATE_DESC|UPDATE_ICON) /obj/item/pizzabox/update_desc() @@ -409,46 +415,37 @@ return ..() - -/obj/item/pizzabox/margherita/Initialize(mapload) - pizza = new /obj/item/food/sliceable/pizza/margheritapizza(src) +/obj/item/pizzabox/margherita + pizza_type = /obj/item/food/sliceable/pizza/margheritapizza box_tag = "margherita deluxe" - . = ..() -/obj/item/pizzabox/vegetable/Initialize(mapload) - pizza = new /obj/item/food/sliceable/pizza/vegetablepizza(src) +/obj/item/pizzabox/vegetable + pizza_type = /obj/item/food/sliceable/pizza/vegetablepizza box_tag = "gourmet vegetable" - . = ..() -/obj/item/pizzabox/mushroom/Initialize(mapload) - pizza = new /obj/item/food/sliceable/pizza/mushroompizza(src) +/obj/item/pizzabox/mushroom + pizza_type = /obj/item/food/sliceable/pizza/mushroompizza box_tag = "mushroom special" - . = ..() -/obj/item/pizzabox/meat/Initialize(mapload) - pizza = new /obj/item/food/sliceable/pizza/meatpizza(src) +/obj/item/pizzabox/meat + pizza_type = /obj/item/food/sliceable/pizza/meatpizza box_tag = "meatlover's supreme" - . = ..() -/obj/item/pizzabox/hawaiian/Initialize(mapload) - pizza = new /obj/item/food/sliceable/pizza/hawaiianpizza(src) +/obj/item/pizzabox/hawaiian + pizza_type = /obj/item/food/sliceable/pizza/hawaiianpizza box_tag = "Hawaiian feast" - . = ..() -/obj/item/pizzabox/pepperoni/Initialize(mapload) - pizza = new /obj/item/food/sliceable/pizza/pepperonipizza(src) +/obj/item/pizzabox/pepperoni + pizza_type = /obj/item/food/sliceable/pizza/pepperonipizza box_tag = "classic pepperoni" - . = ..() -/obj/item/pizzabox/garlic/Initialize(mapload) - pizza = new /obj/item/food/sliceable/pizza/garlicpizza(src) +/obj/item/pizzabox/garlic + pizza_type = /obj/item/food/sliceable/pizza/garlicpizza box_tag = "triple garlic" - . = ..() -/obj/item/pizzabox/firecracker/Initialize(mapload) - pizza = new /obj/item/food/sliceable/pizza/firecrackerpizza(src) +/obj/item/pizzabox/firecracker + pizza_type = /obj/item/food/sliceable/pizza/firecrackerpizza box_tag = "extra spicy pie" - . = ..() ////////////////////////// // Pizza bombs // @@ -582,7 +579,8 @@ /obj/item/pizzabox/pizza_bomb/Initialize(mapload) correct_wire = pick(wires) - box_tag = "classic pepperoni" + var/obj/item/pizzabox/mimic_box = pick(subtypesof(/obj/item/pizzabox) - typesof(/obj/item/pizzabox/pizza_bomb)) + box_tag = mimic_box.box_tag . = ..() /obj/item/pizzabox/pizza_bomb/autoarm diff --git a/code/modules/food_and_drinks/food/foods/soups.dm b/code/modules/food_and_drinks/food/foods/soups.dm index 6da52d5685bc..bb56ebf68094 100644 --- a/code/modules/food_and_drinks/food/foods/soups.dm +++ b/code/modules/food_and_drinks/food/foods/soups.dm @@ -224,6 +224,15 @@ tastes = list("bitterness" = 1, "sourness" = 1, "nature" = 1) goal_difficulty = FOOD_GOAL_NORMAL +/obj/item/food/soup/red_porridge + name = "\improper Eltsløsk ül a priktæolk" //eltsløsk = red porridge, ül a = with, prikt = sour, æolk = cream + desc = "Red porridge with yogurt. The name and vegetable ingredients obscure the sweet nature of the dish, which is commonly served as a dessert aboard the fleet." + icon_state = "red_porridge" + filling_color = "#b36e40" + list_reagents = list("nutriment" = 6, "vitamin" = 2, "sugar" = 2, "yogurt" = 2) + tastes = list("sweet beets" = 1, "sugar" = 1, "sweetened yogurt" = 1) + goal_difficulty = FOOD_GOAL_NORMAL + ////////////////////// // Stews // diff --git a/code/modules/food_and_drinks/food_base.dm b/code/modules/food_and_drinks/food_base.dm index 9fd4583acd2f..5290fcd736ef 100644 --- a/code/modules/food_and_drinks/food_base.dm +++ b/code/modules/food_and_drinks/food_base.dm @@ -64,7 +64,8 @@ ant_suppressors = typecacheof(list( /obj/structure/table, /obj/structure/rack, - /obj/structure/closet + /obj/structure/closet, + /obj/structure/shelf )) START_PROCESSING(SSobj, src) ant_location = get_turf(src) @@ -197,8 +198,8 @@ return user.visible_message( \ - "[user] scoops up some [src] with \the [U]!", \ - "You scoop up some [src] with \the [U]!" \ + "[user] scoops up some [name] with [U]!", \ + "You scoop up some [name] with [U]!" \ ) bitecount++ diff --git a/code/modules/food_and_drinks/kitchen_machinery/cooker.dm b/code/modules/food_and_drinks/kitchen_machinery/cooker.dm index 08f662b9ad80..9dad856f762f 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/cooker.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/cooker.dm @@ -237,6 +237,7 @@ if(istype(I, /obj/item/reagent_containers)) setRegents(I, newfood) if(istype(I, /obj/item/food)) + setRegents(I, newfood) setCooked(I, newfood) newfood.cooktype[thiscooktype] = TRUE turnoff(I) diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_grill.dm b/code/modules/food_and_drinks/kitchen_machinery/food_grill.dm deleted file mode 100644 index 2686931c6252..000000000000 --- a/code/modules/food_and_drinks/kitchen_machinery/food_grill.dm +++ /dev/null @@ -1,29 +0,0 @@ -/obj/machinery/cooker/foodgrill - name = "grill" - desc = "Backyard grilling, IN SPACE." - icon = 'icons/obj/cooking_machines.dmi' - icon_state = "grill_off" - thiscooktype = "grilled" - burns = TRUE - firechance = 20 - cooktime = 50 - foodcolor = "#A34719" - onicon = "grill_on" - officon = "grill_off" - -/obj/machinery/cooker/foodgrill/putIn(obj/item/In, mob/chef) - ..() - var/image/img = new(In.icon, In.icon_state) - img.pixel_y = 5 - overlays += img - sleep(50) - overlays = 0 - img.color = "#C28566" - overlays += img - sleep(50) - overlays = 0 - img.color = "#A34719" - overlays += img - sleep(50) - overlays = 0 - diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index deb2af941eff..4ef39f8aa2e5 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -434,7 +434,10 @@ . = ..() accepted_items_typecache = typecacheof(list( /obj/item/kitchen, - /obj/item/food)) + /obj/item/food, + /obj/item/seeds, + /obj/item/grown, + /obj/item/reagent_containers/condiment)) // Syndicate Druglab Ruin /obj/machinery/smartfridge/food/syndicate_druglab @@ -447,6 +450,88 @@ /obj/item/reagent_containers/drinks/bottle/kahlua = 1, /obj/item/reagent_containers/drinks/bottle/orangejuice = 2) +///The Chefs smartfridge. This smartfridge will spawn with a random condiment, then 3 stacks of 3 plants (or fish meat) to give chef some extra starting variety, or new ideas on what to cook! +/obj/machinery/smartfridge/food/chef + +/obj/machinery/smartfridge/food/chef/Initialize(mapload) + starting_items = generate_starting_items() + . = ..() + +/obj/machinery/smartfridge/food/chef/proc/generate_starting_items() + // These plants are blocked for being inedable, downright toxic, RND plants, botany plants, or wheat. + var/list/static/forbidden_plants = list( + /obj/item/food/grown/wheat, + /obj/item/food/grown/meatwheat, + /obj/item/food/grown/shell/gatfruit, + /obj/item/food/grown/apple/poisoned, + /obj/item/food/grown/cherry_bomb, + /obj/item/food/grown/firelemon, + /obj/item/food/grown/ambrosia/gaia, + /obj/item/food/grown/mushroom/glowshroom, + /obj/item/food/grown/mushroom/glowshroom/glowcap, + /obj/item/food/grown/mushroom/glowshroom/shadowshroom, + /obj/item/food/grown/cannabis, // I don't care about weed pizza, sorry. + /obj/item/food/grown/cannabis/rainbow, + /obj/item/food/grown/cannabis/death, + /obj/item/food/grown/cannabis/white, + /obj/item/food/grown/cannabis/ultimate, + /obj/item/food/grown/tobacco, + /obj/item/food/grown/pumpkin/blumpkin, + /obj/item/food/grown/berries/poison, + /obj/item/food/grown/berries/death, + /obj/item/food/grown/berries/glow, + /obj/item/food/grown/comfrey, + /obj/item/food/grown/aloe, + /obj/item/food/grown/kudzupod, + /obj/item/food/grown/holymelon, // Lets not out vampires or cult by accident thanks + /obj/item/food/grown/mushroom/reishi, // I would block out Amanita but it has 2 recipies, might be funny. + /obj/item/food/grown/mushroom/angel, + /obj/item/food/grown/random, + /obj/item/food/grown/tea, + /obj/item/food/grown/tea/astra, + /obj/item/food/grown/coffee, + /obj/item/food/grown/coffee/robusta, + /obj/item/food/grown/grass, + /obj/item/food/grown/grass/carpet, + /obj/item/food/grown/harebell, + /obj/item/food/grown/poppy, + /obj/item/food/grown/lily, + /obj/item/food/grown/geranium, + /obj/item/food/grown/moonflower, + /obj/item/food/grown/ash_flora/shavings, + /obj/item/food/grown/ash_flora/mushroom_leaf, + /obj/item/food/grown/ash_flora/mushroom_cap, + /obj/item/food/grown/ash_flora/mushroom_stem, + /obj/item/food/grown/ash_flora/cactus_fruit, + /obj/item/food/grown/shell, + /obj/item/food/grown/mushroom/fungus, + /obj/item/food/grown/mushroom, + /obj/item/food/grown/ash_flora, + ) + var/list/output = list() + for(var/I in 1 to 3) + var/obj/item/food/chosen + if(prob(95)) + chosen = pick(subtypesof(/obj/item/food/grown) - forbidden_plants) + else // Fish / sushi stuff, or xenomeat rarely as a treat + chosen = pick(/obj/item/food/catfishmeat, /obj/item/food/carpmeat, /obj/item/food/salmonmeat, /obj/item/food/shrimp, /obj/item/food/monstermeat/xenomeat) + output[chosen] += 3 + // Adds 2 condiment bottles as bonus. No hotsauce or ketchup, as the chef starts with that + for(var/G in 1 to 2) + output += pick( + /obj/item/reagent_containers/condiment/bbqsauce, + /obj/item/reagent_containers/condiment/soysauce, + /obj/item/reagent_containers/condiment/mayonnaise, + /obj/item/reagent_containers/condiment/cherryjelly, + /obj/item/reagent_containers/condiment/peanutbutter, + /obj/item/reagent_containers/condiment/honey, + /obj/item/reagent_containers/condiment/oliveoil, + /obj/item/reagent_containers/condiment/frostoil, + /obj/item/reagent_containers/condiment/wasabi, + /obj/item/reagent_containers/condiment/vinegar, + ) + return output + /** * # Seed Storage * @@ -545,7 +630,7 @@ /obj/machinery/smartfridge/secure/circuits/aiupload/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_AI_UPLOAD]" + req_access = list(ACCESS_AI_UPLOAD) if(mapload && HAS_TRAIT(SSstation, STATION_TRAIT_UNIQUE_AI) && is_station_level(z)) drop_contents_on_delete = FALSE return INITIALIZE_HINT_QDEL @@ -564,7 +649,7 @@ /obj/machinery/smartfridge/secure/circuits/aiupload/experimental/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_RD]" + req_access = list(ACCESS_RD) /obj/machinery/smartfridge/secure/circuits/aiupload/highrisk name = "\improper High-Risk Laws Storage" @@ -580,7 +665,7 @@ /obj/machinery/smartfridge/secure/circuits/aiupload/highrisk/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_CAPTAIN]" + req_access = list(ACCESS_CAPTAIN) /** * # Refrigerated Medicine Storage @@ -617,7 +702,7 @@ /obj/machinery/smartfridge/secure/extract/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_RESEARCH]" + req_access = list(ACCESS_RESEARCH) accepted_items_typecache = typecacheof(list( /obj/item/slime_extract )) @@ -631,7 +716,7 @@ name = "\improper Secure Refrigerated Medicine Storage" desc = "A refrigerated storage unit for storing medicine and chemicals." icon_state = "smartfridge" //To fix the icon in the map editor. - req_one_access_txt = "5;33" + req_one_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY) board_type = /obj/machinery/smartfridge/secure/medbay /obj/machinery/smartfridge/secure/medbay/Initialize(mapload) @@ -659,7 +744,7 @@ /obj/machinery/smartfridge/secure/chemistry/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_CHEMISTRY]" + req_access = list(ACCESS_CHEMISTRY) // Accepted items accepted_items_typecache = typecacheof(list( /obj/item/storage/pill_bottle, @@ -689,10 +774,6 @@ * A [Smart Chemical Storage (Preloaded)][/obj/machinery/smartfridge/secure/chemistry/preloaded] but with exclusive access to Syndicate. */ /obj/machinery/smartfridge/secure/chemistry/preloaded/syndicate - req_access_txt = null - -/obj/machinery/smartfridge/secure/chemistry/preloaded/syndicate/Initialize(mapload) - . = ..() req_access = list(ACCESS_SYNDICATE) /** @@ -755,10 +836,10 @@ desc = "A refrigerated storage unit for volatile sample storage." board_type = /obj/machinery/smartfridge/secure/chemistry/virology icon_addon = "smartfridge_virology" + req_access = list(ACCESS_VIROLOGY) /obj/machinery/smartfridge/secure/chemistry/virology/Initialize(mapload) . = ..() - req_access_txt = "[ACCESS_VIROLOGY]" accepted_items_typecache = typecacheof(list( /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/glass/bottle, @@ -791,7 +872,7 @@ * A [Smart Virus Storage (Preloaded)][/obj/machinery/smartfridge/secure/chemistry/virology/preloaded] but with exclusive access to Syndicate. */ /obj/machinery/smartfridge/secure/chemistry/virology/preloaded/syndicate - req_access_txt = null + req_access = list(ACCESS_SYNDICATE) /obj/machinery/smartfridge/secure/chemistry/virology/preloaded/syndicate/Initialize(mapload) starting_items = list( @@ -804,7 +885,6 @@ /obj/item/reagent_containers/glass/bottle/reagent/formaldehyde = 1 ) . = ..() - req_access = list(ACCESS_SYNDICATE) /** * # Drink Showcase diff --git a/code/modules/food_and_drinks/recipes/recipes_candy.dm b/code/modules/food_and_drinks/recipes/recipes_candy.dm index 46a2eec574fe..e3ab57ad8ab9 100644 --- a/code/modules/food_and_drinks/recipes/recipes_candy.dm +++ b/code/modules/food_and_drinks/recipes/recipes_candy.dm @@ -87,6 +87,41 @@ reagents = list("milk" = 1, "sugar" = 1) result = /obj/item/food/wafflecone +/datum/recipe/candy/candied_pineapple + reagents = list("sugar" = 2, "water" = 2) + items = list( + /obj/item/food/pineappleslice + ) + result = /obj/item/food/candy/candied_pineapple + +/datum/recipe/candy/chocolate_orange + items = list( + /obj/item/food/grown/citrus/orange, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/candy/chocolate_orange + +/datum/recipe/candy/chocolate_coin + items = list( + /obj/item/coin, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/candy/chocolate_coin + +/datum/recipe/candy/chocolate_bunny + reagents = list("sugar" = 2) + items = list( + /obj/item/food/chocolatebar + ) + result = /obj/item/food/candy/chocolate_bunny + +/datum/recipe/candy/fudge_dice + items = list( + /obj/item/dice, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/candy/fudge_dice + // *********************************************************** // Base Candy Recipes (unflavored / plain) // *********************************************************** diff --git a/code/modules/food_and_drinks/recipes/recipes_microwave.dm b/code/modules/food_and_drinks/recipes/recipes_microwave.dm index 7457a25c82e5..8ed36bca48cc 100644 --- a/code/modules/food_and_drinks/recipes/recipes_microwave.dm +++ b/code/modules/food_and_drinks/recipes/recipes_microwave.dm @@ -52,6 +52,247 @@ ) result = /obj/item/food/donut/sprinkles +/datum/recipe/microwave/apple_donut + reagents = list("applejuice" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/apple + +/datum/recipe/microwave/apple_donut/jelly + reagents = list("applejuice" = 5, "berryjuice" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/apple/jelly + +/datum/recipe/microwave/apple_donut/jelly/slime + reagents = list("applejuice" = 5, "slimejelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/apple/jelly/slime + +/datum/recipe/microwave/apple_donut/jelly/cherry + reagents = list("applejuice" = 5, "cherryjelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/apple/jelly/cherry + +/datum/recipe/microwave/pink_donut + reagents = list("berryjuice" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/pink + +/datum/recipe/microwave/pink_donut/jelly + reagents = list("berryjuice" = 5, "sugar" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/pink/jelly + +/datum/recipe/microwave/pink_donut/jelly/slime + reagents = list("berryjuice" = 5, "slimejelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/pink/jelly/slime + +/datum/recipe/microwave/pink_donut/jelly/cherry + reagents = list("berryjuice" = 5, "cherryjelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/pink/jelly/cherry + +/datum/recipe/microwave/blumpkin_donut + reagents = list("blumpkinjuice" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/blumpkin + +/datum/recipe/microwave/blumpkin_donut/jelly + reagents = list("blumpkinjuice" = 5, "berryjuice" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/blumpkin/jelly + +/datum/recipe/microwave/blumpkin_donut/jelly/slime + reagents = list("blumpkinjuice" = 5, "slimejelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/blumpkin/jelly/slime + +/datum/recipe/microwave/blumpkin_donut/jelly/cherry + reagents = list("blumpkinjuice" = 5, "cherryjelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/blumpkin/jelly/cherry + +/datum/recipe/microwave/bungo_donut + reagents = list("bungojuice" = 5, "coldsauce" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/bungo + +/datum/recipe/microwave/bungo_donut/jelly + reagents = list("bungojuice" = 5, "coldsauce" = 5, "berryjuice" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/bungo/jelly + +/datum/recipe/microwave/bungo_donut/jelly/slime + reagents = list("bungojuice" = 5, "coldsauce" = 5, "slimejelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/bungo/jelly/slime + +/datum/recipe/microwave/bungo_donut/jelly/cherry + reagents = list("bungojuice" = 5, "coldsauce" = 5, "cherryjelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/bungo/jelly/cherry + +/datum/recipe/microwave/caramel_donut + items = list( + /obj/item/food/donut, + /obj/item/food/candy/caramel + ) + result = /obj/item/food/donut/caramel + +/datum/recipe/microwave/caramel_donut/jelly + reagents = list("berryjuice" = 5) + items = list( + /obj/item/food/donut, + /obj/item/food/candy/caramel + ) + result = /obj/item/food/donut/caramel/jelly + +/datum/recipe/microwave/caramel_donut/jelly/slime + reagents = list("slimejelly" = 5) + items = list( + /obj/item/food/donut, + /obj/item/food/candy/caramel + ) + result = /obj/item/food/donut/caramel/jelly/slime + +/datum/recipe/microwave/caramel_donut/jelly/cherry + reagents = list("cherryjelly" = 5) + items = list( + /obj/item/food/donut, + /obj/item/food/candy/caramel + ) + result = /obj/item/food/donut/caramel/jelly/cherry + +/datum/recipe/microwave/chocolate_donut + items = list( + /obj/item/food/donut, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/donut/chocolate + +/datum/recipe/microwave/chocolate_donut/jelly + reagents = list("berryjuice" = 5) + items = list( + /obj/item/food/donut, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/donut/chocolate/jelly + +/datum/recipe/microwave/chocolate_donut/jelly/slime + reagents = list("slimejelly" = 5) + items = list( + /obj/item/food/donut, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/donut/chocolate/jelly/slime + +/datum/recipe/microwave/chocolate_donut/jelly/cherry + reagents = list("cherryjelly" = 5) + items = list( + /obj/item/food/donut, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/donut/chocolate/jelly/cherry + +/datum/recipe/microwave/matcha_donut + reagents = list("teapowder" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/matcha + +/datum/recipe/microwave/matcha_donut/jelly + reagents = list("teapowder" = 5, "berryjuice" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/matcha/jelly + +/datum/recipe/microwave/matcha_donut/jelly/slime + reagents = list("teapowder" = 5, "slimejelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/matcha/jelly/slime + +/datum/recipe/microwave/matcha_donut/jelly/cherry + reagents = list("teapowder" = 5, "cherryjelly" = 5) + items = list( + /obj/item/food/donut + ) + result = /obj/item/food/donut/matcha/jelly/cherry + +/datum/recipe/microwave/meat_donut + reagents = list("ketchup" = 5) + items = list( + /obj/item/food/cookiedough, + /obj/item/food/meat + ) + result = /obj/item/food/donut/meat + +/datum/recipe/microwave/spaceman_donut + items = list( + /obj/item/food/donut, + /obj/item/food/grown/trumpet + ) + result = /obj/item/food/donut/spaceman + +/datum/recipe/microwave/spaceman_donut/jelly + reagents = list("berryjuice" = 5) + items = list( + /obj/item/food/donut, + /obj/item/food/grown/trumpet + ) + result = /obj/item/food/donut/spaceman/jelly + +/datum/recipe/microwave/spaceman_donut/jelly/slime + reagents = list("slimejelly" = 5) + items = list( + /obj/item/food/donut, + /obj/item/food/grown/trumpet + ) + result = /obj/item/food/donut/spaceman/jelly/slime + +/datum/recipe/microwave/spaceman_donut/jelly/cherry + reagents = list("cherryjelly" = 5) + items = list( + /obj/item/food/donut, + /obj/item/food/grown/trumpet + ) + result = /obj/item/food/donut/spaceman/jelly/cherry + /datum/recipe/microwave/human/burger items = list( /obj/item/food/meat/human, @@ -1144,6 +1385,29 @@ ) result = /obj/item/food/frozen/icecreamsandwich +/datum/recipe/microwave/cheese_balls + reagents = list("flour" = 5, "sugar" = 5, "honey" = 5) + items = list( + /obj/item/food/cheese_curds, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/cheese_balls + +/datum/recipe/microwave/red_porridge + reagents = list("vanilla" = 5, "sugar" = 5, "yogurt" = 10) + items = list( + /obj/item/food/grown/redbeet + ) + result = /obj/item/food/soup/red_porridge + +/datum/recipe/microwave/dulce_de_batata + reagents = list("vanilla" = 5, "water" = 5) + items = list( + /obj/item/food/grown/potato/sweet, + /obj/item/food/grown/potato/sweet + ) + result = /obj/item/food/sliceable/dulce_de_batata + /datum/recipe/microwave/berryicecreamsandwich reagents = list("ice" = 5, "cream" = 5) items = list( diff --git a/code/modules/food_and_drinks/recipes/recipes_oven.dm b/code/modules/food_and_drinks/recipes/recipes_oven.dm index 8b0dc71ba6bd..9012cba58c60 100644 --- a/code/modules/food_and_drinks/recipes/recipes_oven.dm +++ b/code/modules/food_and_drinks/recipes/recipes_oven.dm @@ -77,6 +77,152 @@ ) result = /obj/item/food/muffin +/datum/recipe/oven/berry_muffin + reagents = list("milk" = 5, "sugar" = 5) + items = list( + /obj/item/food/dough, + /obj/item/food/grown/berries + ) + result = /obj/item/food/berry_muffin + +/datum/recipe/oven/booberry_muffin + reagents = list("milk" = 5, "sugar" = 5) + items = list( + /obj/item/food/dough, + /obj/item/food/grown/berries, + /obj/item/food/ectoplasm + ) + result = /obj/item/food/booberry_muffin + +/datum/recipe/oven/moffin + reagents = list("milk" = 5, "sugar" = 5) + items = list( + /obj/item/food/dough, + /obj/item/grown/cotton + ) + result = /obj/item/food/moffin + +/datum/recipe/oven/holy_cake + reagents = list("milk" = 5, "sugar" = 15, "holywater" = 15) + items = list( + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/dough + ) + result = /obj/item/food/sliceable/holy_cake + +/datum/recipe/oven/liars_cake + reagents = list("milk" = 5, "sugar" = 15) + items = list( + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/grown/berries, + /obj/item/food/grown/berries, + /obj/item/food/grown/berries, + /obj/item/food/grown/berries, + /obj/item/food/grown/berries, + /obj/item/food/chocolatebar, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/sliceable/liars_cake + +/datum/recipe/oven/vanilla_berry_cake + reagents = list("milk" = 5, "sugar" = 15) + items = list( + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/grown/berries, + /obj/item/food/grown/berries, + /obj/item/food/grown/berries, + /obj/item/food/grown/berries, + /obj/item/food/grown/berries + ) + result = /obj/item/food/sliceable/vanilla_berry_cake + +/datum/recipe/oven/hardware_cake + reagents = list("milk" = 5, "sugar" = 15, "sacid" = 5) + items = list( + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/circuitboard, + /obj/item/circuitboard + ) + result = /obj/item/food/sliceable/hardware_cake + +/datum/recipe/oven/plum_cake + reagents = list("milk" = 5, "sugar" = 15) + items = list( + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/grown/plum, + /obj/item/food/grown/plum + ) + result = /obj/item/food/sliceable/plum_cake + +/datum/recipe/oven/pound_cake + reagents = list("milk" = 5, "sugar" = 15) + items = list( + /obj/item/food/sliceable/plaincake, + /obj/item/food/sliceable/plaincake, + /obj/item/food/sliceable/plaincake, + /obj/item/food/sliceable/plaincake + ) + result = /obj/item/food/sliceable/pound_cake + +/datum/recipe/oven/pumpkin_spice_cake + reagents = list("milk" = 5, "sugar" = 15) + items = list( + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/grown/pumpkin, + /obj/item/food/grown/pumpkin + ) + result = /obj/item/food/sliceable/pumpkin_spice_cake + +/datum/recipe/oven/slime_cake + reagents = list("milk" = 5, "sugar" = 15) + items = list( + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/slime_extract + ) + result = /obj/item/food/sliceable/slime_cake + +/datum/recipe/oven/spaceman_cake + reagents = list("milk" = 5, "sugar" = 15, "cream" = 5, "berryjuice" = 5) + items = list( + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/grown/trumpet, + /obj/item/food/grown/trumpet + ) + result = /obj/item/food/sliceable/spaceman_cake + +/datum/recipe/oven/vanilla_cake + reagents = list("milk" = 5, "sugar" = 15) + items = list( + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/dough, + /obj/item/food/grown/vanillapod, + /obj/item/food/grown/vanillapod + ) + result = /obj/item/food/sliceable/vanilla_cake + +/datum/recipe/oven/mothmallow + reagents = list("vanilla" = 5, "sugar" = 15, "rum" = 5) + items = list( + /obj/item/food/grown/soybeans + ) + result = /obj/item/food/sliceable/mothmallow + /datum/recipe/oven/carrotcake reagents = list("milk" = 5, "sugar" = 15) items = list( @@ -169,6 +315,127 @@ ) result = /obj/item/food/berryclafoutis +/datum/recipe/oven/cherry_cupcake + reagents = list("milk" = 5, "sugar" = 5) + items = list( + /obj/item/food/dough, + /obj/item/food/grown/cherries + ) + result = /obj/item/food/cherry_cupcake + +/datum/recipe/oven/cherry_cupcake/blue + reagents = list("milk" = 5, "sugar" = 5) + items = list( + /obj/item/food/dough, + /obj/item/food/grown/bluecherries + ) + result = /obj/item/food/cherry_cupcake/blue + +/datum/recipe/oven/oatmeal_cookie + reagents = list("milk" = 5, "sugar" = 5) + items = list( + /obj/item/food/dough, + /obj/item/food/grown/oat + ) + result = /obj/item/food/oatmeal_cookie + +/datum/recipe/oven/raisin_cookie + reagents = list("milk" = 5, "sugar" = 5) + items = list( + /obj/item/food/dough, + /obj/item/food/no_raisin + ) + result = /obj/item/food/raisin_cookie + +/datum/recipe/oven/peanut_butter_cookie + reagents = list("milk" = 5, "sugar" = 5, "peanutbutter" = 5) + items = list( + /obj/item/food/dough + ) + result = /obj/item/food/peanut_butter_cookie + +/datum/recipe/oven/chocolate_cornet + reagents = list("milk" = 5, "sugar" = 5, "sodiumchloride" = 1) + items = list( + /obj/item/food/cookiedough, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/chocolate_cornet + +/datum/recipe/oven/honey_bun + reagents = list("milk" = 5, "sugar" = 5, "honey" = 5) + items = list( + /obj/item/food/cookiedough + ) + result = /obj/item/food/honey_bun + +/datum/recipe/oven/cannoli + reagents = list("milk" = 1, "sugar" = 3) + items = list( + /obj/item/food/cookiedough + ) + result = /obj/item/food/cannoli + +/datum/recipe/oven/beary_pie + items = list( + /obj/item/food/sliceable/flatdough, + /obj/item/food/monstermeat/bearmeat, + /obj/item/food/grown/berries + ) + result = /obj/item/food/beary_pie + +/datum/recipe/oven/blumpkin_pie + reagents = list("milk" = 5, "sugar" = 5) + items = list( + /obj/item/food/sliceable/flatdough, + /obj/item/food/grown/pumpkin/blumpkin + ) + result = /obj/item/food/sliceable/blumpkin_pie + +/datum/recipe/oven/chocolate_lava_tart + reagents = list("milk" = 5, "sugar" = 5) + items = list( + /obj/item/food/sliceable/flatdough, + /obj/item/food/chocolatebar, + /obj/item/food/chocolatebar, + /obj/item/food/chocolatebar, + /obj/item/slime_extract + ) + result = /obj/item/food/chocolate_lava_tart + +/datum/recipe/oven/french_silk_pie + reagents = list("sugar" = 5) + items = list( + /obj/item/food/sliceable/flatdough, + /obj/item/food/chocolatebar, + /obj/item/food/chocolatebar + ) + result = /obj/item/food/sliceable/french_silk_pie + +/datum/recipe/oven/frosty_pie + items = list( + /obj/item/food/sliceable/flatdough, + /obj/item/food/grown/bluecherries + ) + result = /obj/item/food/sliceable/frosty_pie + +/datum/recipe/oven/grape_tart + reagents = list("milk = 5", "sugar" = 5) + items = list( + /obj/item/food/sliceable/flatdough, + /obj/item/food/grown/grapes, + /obj/item/food/grown/grapes, + /obj/item/food/grown/grapes + ) + result = /obj/item/food/grape_tart + +/datum/recipe/oven/mime_tart + reagents = list("nothing" = 5, "milk = 5", "sugar" = 5) + items = list( + /obj/item/food/sliceable/flatdough + ) + result = /obj/item/food/mime_tart + /datum/recipe/oven/tofubread items = list( /obj/item/food/dough, diff --git a/code/modules/hallucinations/effects/major.dm b/code/modules/hallucinations/effects/major.dm index afef2358f29f..012da9f55ad5 100644 --- a/code/modules/hallucinations/effects/major.dm +++ b/code/modules/hallucinations/effects/major.dm @@ -302,11 +302,11 @@ if(prob(80)) new_name = "Unknown" hallucination_icon = 'icons/mob/simple_human.dmi' - hallucination_icon_state = pick("arctic_skeleton", "templar", "skeleton", "russianmelee", "piratemelee", "plasma_miner_tool", "cat_butcher", "syndicate_space_sword", "syndicate_stormtrooper_sword", "zombie", "scary_clown") + hallucination_icon_state = pick("arctic_skeleton", "templar", "skeleton", "sovietmelee", "piratemelee", "plasma_miner_tool", "cat_butcher", "syndicate_space_sword", "syndicate_stormtrooper_sword", "zombie", "scary_clown") // Adjust the attack verb and sound depending on the "mob" switch(hallucination_icon_state) - if("arctic_skeleton", "templar", "russianmelee", "plasma_miner_tool") + if("arctic_skeleton", "templar", "sovietmelee", "plasma_miner_tool") attack_verb = "slashed" attack_sound = 'sound/weapons/bladeslice.ogg' if("cat_butcher") diff --git a/code/modules/hydroponics/compost_bin.dm b/code/modules/hydroponics/compost_bin.dm index 027b0d03f9ee..d42c6f74b956 100644 --- a/code/modules/hydroponics/compost_bin.dm +++ b/code/modules/hydroponics/compost_bin.dm @@ -96,7 +96,7 @@ to_chat(user, "You have very nearly saturated the contents of [src] with potassium.") SStgui.update_uis(src) - update_icon_state() + update_icon(UPDATE_ICON_STATE) return TRUE if(istype(O, /obj/item/food/grown)) @@ -110,7 +110,7 @@ make_biomass(O) to_chat(user, "You put [O] in [src].") SStgui.update_uis(src) - update_icon_state() + update_icon(UPDATE_ICON_STATE) return TRUE if(istype(O, /obj/item/reagent_containers)) var/proportion = 0 @@ -154,7 +154,7 @@ to_chat(user, "[src] has been nearly filled with potash.") SStgui.update_uis(src) - update_icon_state() + update_icon(UPDATE_ICON_STATE) return TRUE @@ -199,7 +199,7 @@ biomass -= conversion_amount + potash_saltpetre_conversion + potassium_saltpetre_conversion compost += conversion_amount - update_icon_state() + update_icon(UPDATE_ICON_STATE) SStgui.update_uis(src) // Makes soil from compost @@ -209,7 +209,7 @@ return new /obj/item/stack/sheet/soil(loc, amount) compost -= SOIL_COST * amount - update_icon_state() + update_icon(UPDATE_ICON_STATE) SStgui.update_uis(src) /obj/machinery/compost_bin/attack_hand(mob/user) diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index fdbed68d1395..24521ccb0f85 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -451,7 +451,7 @@ else core_gene.value = min(core_gene.value, genemod_var) - disk.update_name() + disk.update_appearance(UPDATE_NAME) QDEL_NULL(seed) update_icon(UPDATE_OVERLAYS) update_genes() @@ -493,7 +493,7 @@ var/datum/plant_gene/core/C = gene.Copy() disk.core_genes += C - disk.update_name() + disk.update_appearance(UPDATE_NAME) QDEL_NULL(seed) update_icon(UPDATE_OVERLAYS) update_genes() diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index cc21fca814ee..d57ee07ec307 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -15,7 +15,7 @@ icon_grow = "cocoapod-grow" icon_dead = "cocoapod-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) - mutatelist = list(/obj/item/seeds/cocoapod/vanillapod) + mutatelist = list(/obj/item/seeds/cocoapod/vanillapod, /obj/item/seeds/cocoapod/bungotree) reagents_add = list("cocoa" = 0.25, "plantmatter" = 0.1) /obj/item/food/grown/cocoapod @@ -47,3 +47,40 @@ filling_color = "#FEFEFE" tastes = list("vanilla" = 1) distill_reagent = "vanilla" //Takes longer, but you can get even more vanilla from it. + +// Bungo Pod + +/obj/item/seeds/cocoapod/bungotree + name = "pack of bungo tree seeds" + desc = "These seeds grow into bungo trees. They appear to be heavy and almost perfectly spherical." + icon_state = "seed-bungotree" + species = "bungotree" + plantname = "Bungo Tree" + product = /obj/item/food/grown/bungofruit + lifespan = 30 + maturation = 4 + yield = 3 + production = 7 + mutatelist = null + reagents_add = list("enzyme"= 0.1, "nutriment" = 0.1, "bungojuice" = 0.1) + growthstages = 4 + growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' + icon_grow = "bungotree-grow" + icon_dead = "bungotree-dead" + +/obj/item/food/grown/bungofruit + seed = /obj/item/seeds/cocoapod/bungotree + name = "bungo fruit" + desc = "A strange fruit, tough leathery skin protects its juicy flesh and large poisonous seed." + icon_state = "bungo" + trash = /obj/item/food/grown/bungopit + tastes = list("bungo" = 2, "tropical fruitiness" = 1, "an acidic, poisonous tang" = 1) + distill_reagent = null + +/obj/item/food/grown/bungopit + seed = /obj/item/seeds/cocoapod/bungotree + name = "bungo pit" + icon_state = "bungopit" + desc = "A large seed from a bungo fruit." + w_class = WEIGHT_CLASS_TINY + tastes = list("acrid bitterness" = 1) diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 095aeca5190d..505ccd1b123a 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -38,7 +38,7 @@ icon_grow = "lily-grow" icon_dead = "lily-dead" product = /obj/item/food/grown/lily - mutatelist = list() + mutatelist = list(/obj/item/seeds/poppy/lily/trumpet) /obj/item/food/grown/lily seed = /obj/item/seeds/poppy/lily @@ -51,6 +51,36 @@ filling_color = "#C7BBAD" distill_reagent = "vermouth" +//Spaceman's Trumpet + +/obj/item/seeds/poppy/lily/trumpet + name = "pack of spaceman's trumpet seeds" + desc = "A plant sculped by extensive genetic engineering. The spaceman's trumpet is said to bear no resemblance to its wild ancestors. Inside NT AgriSci circles it is better known as NTPW-0372." + icon_state = "seed-trumpet" + species = "spacemanstrumpet" + plantname = "Spaceman's Trumpet Plant" + product = /obj/item/food/grown/trumpet + lifespan = 80 + production = 5 + endurance = 10 + maturation = 12 + yield = 4 + potency = 20 + growthstages = 4 + weed_rate = 2 + weed_chance = 10 + growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' + icon_grow = "spacemanstrumpet-grow" + icon_dead = "spacemanstrumpet-dead" + mutatelist = null + reagents_add = list(/datum/reagent/consumable/nutriment = 0.05) + +/obj/item/food/grown/trumpet + seed = /obj/item/seeds/poppy/lily/trumpet + name = "spaceman's trumpet" + desc = "A vivid flower that smells faintly of freshly cut grass. Touching the flower seems to stain the skin some time after contact, yet most other surfaces seem to be unaffected by this phenomenon." + icon_state = "spacemanstrumpet" + // Geranium /obj/item/seeds/poppy/geranium name = "pack of geranium seeds" diff --git a/code/modules/hydroponics/grown/plum.dm b/code/modules/hydroponics/grown/plum.dm new file mode 100644 index 000000000000..dc342afa7809 --- /dev/null +++ b/code/modules/hydroponics/grown/plum.dm @@ -0,0 +1,23 @@ +/obj/item/seeds/plum + name = "pack of plum seeds" + desc = "These seeds grow into plum trees." + icon_state = "seed-plum" + species = "plum" + plantname = "Plum Tree" + product = /obj/item/food/grown/plum + lifespan = 55 + endurance = 35 + growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' + icon_grow = "plum-grow" + icon_dead = "plum-dead" + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list("nutriment" = 0.1, "vitamin" = 0.04, "plantmatter" = 0.1) + +/obj/item/food/grown/plum + seed = /obj/item/seeds/plum + name = "plum" + desc = "A poet's favorite fruit. Noice." + icon_state = "plum" + filling_color = "#F6CB0B" + bitesize = 4 + tastes = list("plum" = 1) diff --git a/code/modules/input/input.dm b/code/modules/input/input.dm index 4600c311fb87..36aafd6a61ba 100644 --- a/code/modules/input/input.dm +++ b/code/modules/input/input.dm @@ -5,6 +5,8 @@ return /datum/proc/key_loop(client/C) + // Sleeps in input handling are bad, because they can stall the entire subsystem indefinitely, breaking most movement. The subsystem sets waitfor=FALSE, which works around this, but we'd rather avoid the sleeps in the first place. + SHOULD_NOT_SLEEP(TRUE) return /client/key_loop() diff --git a/code/modules/instruments/objs/items/headphones.dm b/code/modules/instruments/objs/items/headphones.dm index 8ea5c4b12e45..32373c5afb4d 100644 --- a/code/modules/instruments/objs/items/headphones.dm +++ b/code/modules/instruments/objs/items/headphones.dm @@ -23,9 +23,17 @@ /obj/item/clothing/ears/headphones/ui_action_click(mob/user, actiontype) if(actiontype == /datum/action/item_action/change_headphones_song) ui_interact(user) - else - on = !on - update_icon(UPDATE_ICON_STATE) + else if(actiontype == /datum/action/item_action/toggle_music_notes) + toggle_visual_notes(user) + + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtons() + +/obj/item/clothing/ears/headphones/proc/toggle_visual_notes(mob/user) + on = !on + update_icon(UPDATE_ICON_STATE) + user.regenerate_icons() /obj/item/clothing/ears/headphones/ui_data(mob/user) return song.ui_data(user) diff --git a/code/modules/lavaland/caves_theme.dm b/code/modules/lavaland/caves_theme.dm new file mode 100644 index 000000000000..6a47985fcf41 --- /dev/null +++ b/code/modules/lavaland/caves_theme.dm @@ -0,0 +1,214 @@ +/// Approximate lower bound of the walkable land area on Lavaland, north of the southern lava border. +#define LAVALAND_MIN_CAVE_Y 10 +/// Approximate upper bound of the walkable land area on Lavaland, south of the Legion entrance. +#define LAVALAND_MAX_CAVE_Y 222 + +#define SPAWN_MEGAFAUNA "bluh bluh huge boss" + +/// Effective probability modifier for spawning flora and fauna in oases. +#define OASIS_SPAWNER_PROB_MODIFIER 43 + +GLOBAL_LIST_INIT(megafauna_spawn_list, list( + /mob/living/simple_animal/hostile/megafauna/dragon = 4, + /mob/living/simple_animal/hostile/megafauna/colossus = 2, + /mob/living/simple_animal/hostile/megafauna/bubblegum = 6, + /mob/living/simple_animal/hostile/megafauna/ancient_robot = 4, +)) + +GLOBAL_LIST_INIT(caves_default_mob_spawns, list( + /obj/effect/landmark/mob_spawner/abandoned_minebot = 6, + /obj/effect/landmark/mob_spawner/goldgrub = 10, + /obj/effect/landmark/mob_spawner/goliath = 50, + /obj/effect/landmark/mob_spawner/gutlunch = 4, + /obj/effect/landmark/mob_spawner/legion = 30, + /obj/effect/landmark/mob_spawner/watcher = 40, + + /obj/structure/spawner/lavaland = 2, + /obj/structure/spawner/lavaland/goliath = 3, + /obj/structure/spawner/lavaland/legion = 3, + + SPAWN_MEGAFAUNA = 6, +)) + +GLOBAL_LIST_INIT(caves_default_flora_spawns, list( + /obj/structure/flora/ash/cacti = 1, + /obj/structure/flora/ash/cap_shroom = 2, + /obj/structure/flora/ash/leaf_shroom = 2, + /obj/structure/flora/ash/rock/style_random = 1, + /obj/structure/flora/ash/stem_shroom = 2, + /obj/structure/flora/ash/tall_shroom = 2, +)) + +/proc/lavaland_caves_spawn_mob(turf/T, mob_scan_range = 12, megafauna_scan_range = 7) + var/mob_spawn = pickweight(GLOB.caves_default_mob_spawns) + + while(mob_spawn == SPAWN_MEGAFAUNA) + if(istype(get_area(T), /area/lavaland/surface/outdoors/unexplored/danger)) //this is danger. it's boss time. + mob_spawn = pickweight(GLOB.megafauna_spawn_list) + else //this is not danger, don't spawn a boss, spawn something else + mob_spawn = pickweight(GLOB.caves_default_mob_spawns) + + for(var/thing in urange(mob_scan_range, T)) + if(!(ishostile(thing) || istype(thing, /obj/structure/spawner) || istype(thing, /obj/effect/landmark/mob_spawner))) + continue + // don't spawn a megafauna if there's already one within view + if((ispath(mob_spawn, /mob/living/simple_animal/hostile/megafauna) || ismegafauna(thing)) && (get_dist(T, thing) <= megafauna_scan_range)) + return + // if the random is a standard mob, avoid spawning if there's another one within the scan range + if(ispath(mob_spawn, /obj/effect/landmark/mob_spawner) && istype(thing, /obj/effect/landmark/mob_spawner)) + return + // prevents tendrils spawning in each other's collapse range + if((ispath(mob_spawn, /obj/structure/spawner/lavaland) && istype(thing, /obj/structure/spawner/lavaland)) && get_dist(T, thing) <= LAVALAND_TENDRIL_COLLAPSE_RANGE) + return + + // there can be only one bubblegum, so don't waste spawns on it + if(ispath(mob_spawn, /mob/living/simple_animal/hostile/megafauna/bubblegum)) + GLOB.megafauna_spawn_list.Remove(mob_spawn) + + // same as above, we do not want multiple of these robots + if(ispath(mob_spawn, /mob/living/simple_animal/hostile/megafauna/ancient_robot)) + GLOB.megafauna_spawn_list.Remove(mob_spawn) + + new mob_spawn(T) + SSblackbox.record_feedback("tally", "lavaland_mob_spawns", 1, "[mob_spawn]") + +/proc/lavaland_caves_spawn_flora(turf/T) + var/flora_spawn = pickweight(GLOB.caves_default_flora_spawns) + for(var/obj/structure/flora/ash/F in range(4, T)) //Allows for growing patches, but not ridiculous stacks of flora + if(!istype(F, flora_spawn)) + return + new flora_spawn(T) + +/datum/caves_theme + var/name = "Not Specified" + + var/seed + var/perlin_accuracy = 5 + var/perlin_stamp_size = 10 + var/perlin_lower_range = 0 + var/perlin_upper_range = 0.3 + +/datum/caves_theme/New() + seed = rand(1, 999999) + +/datum/caves_theme/proc/setup() + var/result = rustg_dbp_generate("[seed]", "[perlin_accuracy]", "[perlin_stamp_size]", "[world.maxx]", "[perlin_lower_range]", "[perlin_upper_range]") + var/z = level_name_to_num(MINING) + for(var/turf/T in block(1, 1, z, world.maxx, world.maxy, z)) + if(!istype(get_area(T), /area/lavaland/surface/outdoors/unexplored)) + continue + if(!istype(T, /turf/simulated/mineral)) + continue + var/c = result[world.maxx * (T.y - 1) + T.x] + if(c == "1") + T.ChangeTurf(/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface) + on_change(T) + + CHECK_TICK + +/datum/caves_theme/proc/on_change(turf/T) + if(prob(2)) + lavaland_caves_spawn_flora(T) + else if(prob(1)) + lavaland_caves_spawn_mob(T) + +/datum/caves_theme/proc/safe_replace(turf/T) + if(T.flags & NO_LAVA_GEN) + return FALSE + if(!istype(get_area(T), /area/lavaland/surface/outdoors/unexplored)) + return FALSE + if(istype(T, /turf/simulated/floor/chasm)) + return FALSE + if(istype(T, /turf/simulated/floor/lava/lava_land_surface)) + return FALSE + if(istype(T, /turf/simulated/floor/lava/mapping_lava)) + return FALSE + + return TRUE + +/datum/caves_theme/classic + name = "Classic Caves" + +/datum/caves_theme/burrows + name = "Blocked Burrows" + perlin_accuracy = 90 + perlin_stamp_size = 7 + perlin_lower_range = 0 + perlin_upper_range = 0.3 + +/datum/caves_theme/burrows/on_change(turf/T) + if(prob(9)) + new /obj/structure/flora/ash/rock/style_random(T) + else if(prob(5)) + lavaland_caves_spawn_flora(T) + else if(prob(1)) + lavaland_caves_spawn_mob(T) + +/datum/caves_theme/deeprock/proc/maybe_make_room(turf/T) + if(rand(1, 150) != 1) + return + + for(var/turf/oasis_centroid in oasis_centroids) + if(get_dist(T, oasis_centroid) < oasis_padding) + return + + oasis_centroids |= T + var/new_scan_range = rand(4, 7) + var/tempradius = rand(10, 15) + var/probmodifer = OASIS_SPAWNER_PROB_MODIFIER * tempradius + var/list/oasis_turfs = list() + for(var/turf/NT in circlerangeturfs(T, tempradius)) + var/distance = (max(get_dist(T, NT), 1)) //Get dist throws -1 if same turf + if(safe_replace(NT) && prob(min(probmodifer / distance, 100))) + var/turf/changed = NT.ChangeTurf(/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface) + if(prob(5)) + lavaland_caves_spawn_mob(changed, new_scan_range, new_scan_range) + else if(prob(10)) + lavaland_caves_spawn_flora(changed) + oasis_turfs |= NT + + if(prob(50)) + tempradius = round(tempradius / 3) + var/oasis_laketype = pickweight(lake_weights) + if(oasis_laketype == /turf/simulated/floor/plating/asteroid) + new /obj/effect/spawner/oasisrock(T, tempradius) + for(var/turf/oasis in circlerangeturfs(T, tempradius)) + if(safe_replace(oasis)) + oasis.ChangeTurf(oasis_laketype) + oasis_turfs -= oasis + + // Move tendrils out of the oasis + for(var/obj/structure/spawner/lavaland/O in circlerange(T, tempradius)) + O.forceMove(pick_n_take(oasis_turfs)) + + return T + +/datum/caves_theme/deeprock + name = "Deadly Deeprock" + perlin_stamp_size = 12 + perlin_lower_range = 0 + perlin_upper_range = 0.2 + var/oasis_padding = 50 + var/list/oasis_centroids = list() + var/lake_weights = list( + /turf/simulated/floor/lava/lava_land_surface = 4, + /turf/simulated/floor/lava/lava_land_surface/plasma = 4, + /turf/simulated/floor/chasm/straight_down/lava_land_surface = 4, + /turf/simulated/floor/lava/mapping_lava = 6, + /turf/simulated/floor/beach/away/water/lavaland_air = 1, + /turf/simulated/floor/plating/asteroid = 1 + ) + +/datum/caves_theme/deeprock/on_change(turf/T) + maybe_make_room(T) + if(prob(3)) + lavaland_caves_spawn_flora(T) + else if(prob(2)) + lavaland_caves_spawn_mob(T) + + +#undef OASIS_SPAWNER_PROB_MODIFIER +#undef SPAWN_MEGAFAUNA + +#undef LAVALAND_MIN_CAVE_Y +#undef LAVALAND_MAX_CAVE_Y diff --git a/code/modules/lavaland/lavaland_theme.dm b/code/modules/lavaland/lavaland_theme.dm index 20dfdecb38ae..08ce4d374a78 100644 --- a/code/modules/lavaland/lavaland_theme.dm +++ b/code/modules/lavaland/lavaland_theme.dm @@ -1,8 +1,3 @@ -/// Approximate lower bound of the walkable land area on Lavaland, north of the southern lava border. -#define LAVALAND_MIN_CAVE_Y 10 -/// Approximate upper bound of the walkable land area on Lavaland, south of the Legion entrance. -#define LAVALAND_MAX_CAVE_Y 222 - /datum/lavaland_theme /// Name of lavaland theme var/name = "Not Specified" @@ -17,20 +12,6 @@ else if(!ispath(primary_turf_type)) stack_trace("Wrong turf type `[primary_turf_type.type]` in `[type]` lavaland theme") -/datum/lavaland_theme/proc/setup_caves() - var/max_attempts = 100 - var/max_cave_spawns = 40 - var/z = level_name_to_num(MINING) - while(max_attempts > 0 && max_cave_spawns > 0) - var/x = rand(1, world.maxx) - var/y = rand(LAVALAND_MIN_CAVE_Y, LAVALAND_MAX_CAVE_Y) - var/turf/next_turf = locate(x, y, z) - var/area/next_area = get_area(next_turf) - if(istype(next_turf, /turf/simulated/mineral/random/volcanic) && istype(next_area, /area/lavaland/surface/outdoors/unexplored/danger)) - next_turf.ChangeTurf(/turf/simulated/floor/plating/asteroid/airless/cave/volcanic, FALSE, TRUE, TRUE) - max_cave_spawns-- - max_attempts-- - /** * This proc should do all theme specific thing. * Now it only generates rivers, but it can do all stuff you desire. @@ -66,5 +47,3 @@ var/datum/river_spawner/spawner = new(level_name_to_num(MINING), spread_prob_ = 10, spread_prob_loss_ = 5) spawner.generate(nodes = 6, min_x = 50, min_y = 7, max_x = 250, max_y = 225) -#undef LAVALAND_MIN_CAVE_Y -#undef LAVALAND_MAX_CAVE_Y diff --git a/code/modules/library/library_catalog.dm b/code/modules/library/library_catalog.dm index cabc94a9c3b1..7a1b39fe3135 100644 --- a/code/modules/library/library_catalog.dm +++ b/code/modules/library/library_catalog.dm @@ -452,7 +452,8 @@ var/list/flag_json = list() //Flagged book json is stored as such: "[[reporter_ckey1, report_id1],[reporter_ckey2, report_id2]]"" for(var/datum/flagged_book/book in reportedbook.reports) - flag_json += list(list( //yes this is intentional + //yes this is intentional + flag_json += list(list( book.reporter, book.category_id, )) diff --git a/code/modules/library/library_computer.dm b/code/modules/library/library_computer.dm index 2bac8221c60d..a98a441fca9d 100644 --- a/code/modules/library/library_computer.dm +++ b/code/modules/library/library_computer.dm @@ -301,7 +301,7 @@ //rating acts if("set_rating") if(params["rating_value"]) - user_data.selected_rating = text2num(params["rating_value"]) + user_data.selected_rating = clamp(text2num(params["rating_value"]), 0, 10) if("rate_book") if(GLOB.library_catalog.rate_book(params["user_ckey"], params["bookid"], user_data.selected_rating)) playsound(loc, 'sound/machines/ping.ogg', 25, 0) diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index 89757f89d5e3..b3578178ab32 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -99,8 +99,11 @@ cut_overlay(exposure_overlay) if(glow_icon && glow_icon_state) - glow_overlay = image(icon = glow_icon, icon_state = glow_icon_state, dir = dir, layer = 1) - glow_overlay.plane = LIGHTING_LAMPS_PLANE + glow_overlay = image(icon = glow_icon, icon_state = glow_icon_state, dir = dir, layer = -2) + if(layer <= LOW_OBJ_LAYER) + glow_overlay.plane = FLOOR_LIGHTING_LAMPS_PLANE // Yeah this sucks + else + glow_overlay.plane = LIGHTING_LAMPS_PLANE glow_overlay.blend_mode = BLEND_ADD if(glow_colored) diff --git a/code/modules/lighting/lighting_emissive_blocker.dm b/code/modules/lighting/lighting_emissive_blocker.dm index b2102dea8b09..6eb46cbdad8a 100644 --- a/code/modules/lighting/lighting_emissive_blocker.dm +++ b/code/modules/lighting/lighting_emissive_blocker.dm @@ -11,6 +11,7 @@ layer = FLOAT_LAYER mouse_opacity = MOUSE_OPACITY_TRANSPARENT appearance_flags = EMISSIVE_APPEARANCE_FLAGS + flags_2 = RAD_NO_CONTAMINATE_2 /atom/movable/emissive_blocker/Initialize(mapload, source) . = ..() diff --git a/code/modules/lighting/lighting_turf.dm b/code/modules/lighting/lighting_turf.dm index 0ab81a99f7ca..a0c39b80da3a 100644 --- a/code/modules/lighting/lighting_turf.dm +++ b/code/modules/lighting/lighting_turf.dm @@ -98,6 +98,8 @@ lighting_build_overlay() else lighting_clear_overlay() + for(var/obj/machinery/machine in contents) + machine.reregister_machine() /turf/proc/generate_missing_corners() if(!IS_DYNAMIC_LIGHTING(src) && !light_sources) diff --git a/code/modules/mapping/access_helpers.dm b/code/modules/mapping/access_helpers.dm index 54582614ccfa..6b6506c6fc28 100644 --- a/code/modules/mapping/access_helpers.dm +++ b/code/modules/mapping/access_helpers.dm @@ -5,29 +5,20 @@ // These are mutually exclusive; can't have req_any and req_all /obj/effect/mapping_helpers/airlock/access/any/payload(obj/machinery/door/airlock/airlock) - if(is_type_in_list(airlock, blacklist)) + if(length(airlock.req_access)) + log_world("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!") return - if(airlock.req_access_txt == "0") - // Overwrite if there is no access set, otherwise add onto existing access - if(airlock.req_one_access_txt == "0") - airlock.req_one_access_txt = "[access]" - else - airlock.req_one_access_txt += ";[access]" - else - log_world("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!") + LAZYINITLIST(airlock.req_one_access) + airlock.req_one_access |= access /obj/effect/mapping_helpers/airlock/access/all/payload(obj/machinery/door/airlock/airlock) - if(is_type_in_list(airlock, blacklist)) + if(length(airlock.req_one_access)) + log_world("[src] at [AREACOORD(src)] tried to set req_access, but req_one_access was already set!") return - if(airlock.req_one_access_txt == "0") - if(airlock.req_access_txt == "0") - airlock.req_access_txt = "[access]" - else - airlock.req_access_txt += ";[access]" - else - log_world("[src] at [AREACOORD(src)] tried to set req_access, but req_one_access was already set!") + LAZYINITLIST(airlock.req_access) + airlock.req_access |= access // -------------------- Req Any (Only requires ONE of the given accesses to open) // -------------------- Command access helpers @@ -467,3 +458,37 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/mule_bot access = ACCESS_CARGO_BOT + +// Miscellaneous access helpers +/obj/effect/mapping_helpers/airlock/access/all/ruins/deepstorage + access = ACCESS_DEEPSTORAGE + +/obj/effect/mapping_helpers/airlock/access/all/ruins/moonoutpost19 + access = ACCESS_AWAY01 + +/obj/effect/mapping_helpers/airlock/access/all/ruins/theta + access = ACCESS_THETA_STATION + +/obj/effect/mapping_helpers/airlock/access/all/syndicate + access = ACCESS_SYNDICATE + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/general + access = ACCESS_CENT_GENERAL + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/security + access = ACCESS_CENT_SECURITY + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/shuttles + access = ACCESS_CENT_SHUTTLES + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/specops + access = ACCESS_CENT_SPECOPS + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/commander + access = ACCESS_CENT_COMMANDER + +/obj/effect/mapping_helpers/airlock/access/all/shuttles/vox + access = ACCESS_VOX + +/obj/effect/mapping_helpers/airlock/access/all/centcomm/traders + access = ACCESS_TRADE_SOL diff --git a/code/modules/mapping/base_map_datum.dm b/code/modules/mapping/base_map_datum.dm index 0fff760c7c05..9ea1d428c429 100644 --- a/code/modules/mapping/base_map_datum.dm +++ b/code/modules/mapping/base_map_datum.dm @@ -18,3 +18,5 @@ var/voteable = TRUE /// Minimum amount of players required for this map to be eligible in random map picks. var/min_players_random = 0 + /// Sound to play at the start of the game, aka the welcoming sound + var/welcome_sound = 'sound/AI/welcome.ogg' diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 784f6672c1c7..ce504e0e2f04 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -91,11 +91,17 @@ /obj/effect/mapping_helpers/airlock/LateInitialize() . = ..() - if(!(locate(/obj/machinery/door) in get_turf(src))) - log_world("[src] failed to find an airlock at [AREACOORD(src)]") + var/list/valid_airlocks = list() for(var/obj/machinery/door/D in get_turf(src)) - payload(D) + if(!is_type_in_list(D, blacklist)) + valid_airlocks += D + + if(length(valid_airlocks)) + for(var/obj/machinery/door/D in valid_airlocks) + payload(D) + else + log_world("[src] failed to find any valid airlocks at [AREACOORD(src)]") qdel(src) diff --git a/code/modules/mapping/station_datums.dm b/code/modules/mapping/station_datums.dm index ceecd3d0dfa9..b74e7d5c3e0a 100644 --- a/code/modules/mapping/station_datums.dm +++ b/code/modules/mapping/station_datums.dm @@ -3,18 +3,21 @@ technical_name = "Cyberiad" map_path = "_maps/map_files/stations/boxstation.dmm" webmap_url = "https://webmap.affectedarc07.co.uk/maps/paradise/cyberiad/" + welcome_sound = 'sound/AI/welcome_cyberiad.ogg' /datum/map/metastation fluff_name = "NSS Cerebron" technical_name = "MetaStation" map_path = "_maps/map_files/stations/metastation.dmm" webmap_url = "https://webmap.affectedarc07.co.uk/maps/paradise/metastation/" + welcome_sound = 'sound/AI/welcome_cerebron.ogg' /datum/map/deltastation fluff_name = "NSS Kerberos" technical_name = "Delta" map_path = "_maps/map_files/stations/deltastation.dmm" webmap_url = "https://webmap.affectedarc07.co.uk/maps/paradise/deltastation/" + welcome_sound = 'sound/AI/welcome_kerberos.ogg' /datum/map/cerestation fluff_name = "NSS Farragus" @@ -22,12 +25,14 @@ map_path = "_maps/map_files/stations/cerestation.dmm" webmap_url = "https://webmap.affectedarc07.co.uk/maps/paradise/cerestation/" min_players_random = 60 + welcome_sound = 'sound/AI/welcome_farragus.ogg' /datum/map/emeraldstation fluff_name = "NSS Diagoras" technical_name = "EmeraldStation" map_path = "_maps/map_files/stations/emeraldstation.dmm" webmap_url = "https://affectedarc07.co.uk/emerald.html" + welcome_sound = 'sound/AI/welcome_diagoras.ogg' /datum/map/test_tiny fluff_name = "test_tiny" diff --git a/code/modules/mapping/windoor_access_helpers.dm b/code/modules/mapping/windoor_access_helpers.dm index 8d3195cf9cab..d193060c9a5f 100644 --- a/code/modules/mapping/windoor_access_helpers.dm +++ b/code/modules/mapping/windoor_access_helpers.dm @@ -11,30 +11,23 @@ return // Access already set in map edit - if(windoor.req_access_txt != "0") + if(length(windoor.req_access)) log_world("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!") return - // Overwrite if there is no access set, otherwise add onto existing access - if(windoor.req_one_access_txt == "0") - windoor.req_one_access_txt = "[access]" - return - - windoor.req_one_access_txt += ";[access]" + LAZYINITLIST(windoor.req_one_access) + windoor.req_one_access |= access /obj/effect/mapping_helpers/airlock/windoor/access/all/payload(obj/machinery/door/window/windoor) if(windoor.dir != dir) return - if(windoor.req_one_access_txt != "0") + if(length(windoor.req_one_access)) log_world("[src] at [AREACOORD(src)] tried to set req_access, but req_one_access was already set!") return - if(windoor.req_access_txt == "0") - windoor.req_access_txt = "[access]" - return - - windoor.req_access_txt += ";[access]" + LAZYINITLIST(windoor.req_access) + windoor.req_access |= access // -------------------- Req Any (Only requires ONE of the given accesses to open) // -------------------- Command access helpers diff --git a/code/modules/martial_arts/bearserk.dm b/code/modules/martial_arts/bearserk.dm index 68d2454c0481..bfd1becf1065 100644 --- a/code/modules/martial_arts/bearserk.dm +++ b/code/modules/martial_arts/bearserk.dm @@ -56,7 +56,7 @@ var/mob/living/carbon/human/H = user if(slot == SLOT_HUD_HEAD) style.teach(H, TRUE) - H.faction |= "russian" // Russian Hardbass Begins + H.faction |= "soviet" H.physiology.stun_mod *= 0.80 ADD_TRAIT(H, TRAIT_RESISTHEAT, "bearserk") @@ -67,7 +67,7 @@ var/mob/living/carbon/human/H = user if(H.get_item_by_slot(SLOT_HUD_HEAD) == src) style.remove(H) - H.faction -= "russian" // Hardbass stops + H.faction -= "soviet" H.physiology.stun_mod /= 0.80 REMOVE_TRAIT (H, TRAIT_RESISTHEAT, "bearserk") @@ -75,4 +75,4 @@ . = ..() if(isAntag(user)) . += "Wearing this armored pelt grants you the strength of the space bear. \ - It also makes wild bears and Russians neutral towards you." + It also makes wild bears and wild communists neutral towards you." diff --git a/code/modules/martial_arts/combos/judo/judothrow.dm b/code/modules/martial_arts/combos/judo/judothrow.dm index 4939dead2e61..4c1a5146361f 100644 --- a/code/modules/martial_arts/combos/judo/judothrow.dm +++ b/code/modules/martial_arts/combos/judo/judothrow.dm @@ -4,7 +4,7 @@ explaination_text = "Establish a gripset on your opponent and throw them to the floor, inflicting stamina damage" combo_text_override = "Grab, Disarm" /datum/martial_combo/judo/judothrow/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA) - if(user.IsKnockedDown() || IS_HORIZONTAL(target)) + if(IS_HORIZONTAL(user) || IS_HORIZONTAL(target)) return MARTIAL_COMBO_FAIL target.visible_message("[user] judo throws [target] to ground!", \ "[user] judo throws you to the ground!") diff --git a/code/modules/martial_arts/judo.dm b/code/modules/martial_arts/judo.dm index 96af7e0996c1..2e2e9b3c66d4 100644 --- a/code/modules/martial_arts/judo.dm +++ b/code/modules/martial_arts/judo.dm @@ -19,9 +19,10 @@ item_state = "judo" w_class = WEIGHT_CLASS_BULKY storage_slots = 3 - max_combined_w_class = 6 + max_combined_w_class = 7 var/datum/martial_art/judo/style can_hold = list( + /obj/item/radio, /obj/item/grenade/flashbang, /obj/item/grenade/chem_grenade/teargas, /obj/item/reagent_containers/spray/pepper, @@ -75,11 +76,6 @@ add_attack_logs(A, D, "Melee attacked with [src]") return TRUE -/datum/martial_art/judo/grab_act(mob/living/carbon/human/attacker, mob/living/carbon/human/defender) - if(IS_HORIZONTAL(attacker)) - return FALSE - return ..() - /datum/martial_art/judo/explaination_header(user) to_chat(user, "You recall the teachings of Corporate Judo.") diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index b9d1100c17cd..603599a92281 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -426,8 +426,8 @@ H.visible_message("[H] collapses!", \ "Your legs give out!") H.Weaken(8 SECONDS) - if(H.staminaloss && !H.IsSleeping()) - var/total_health = (H.health - H.staminaloss) + if(H.getStaminaLoss() && !H.IsSleeping()) + var/total_health = (H.health - H.getStaminaLoss()) if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ "[user] knocks you unconscious!") diff --git a/code/modules/maze_generation/maze_generator.dm b/code/modules/maze_generation/maze_generator.dm index 7891393482f9..234cce94a8fc 100644 --- a/code/modules/maze_generation/maze_generator.dm +++ b/code/modules/maze_generation/maze_generator.dm @@ -162,7 +162,6 @@ // Gather the windows. If a spot has 3 windows on it, its a dead end var/windowcount = 0 for(var/obj/structure/window/reinforced/mazeglass/W in T) - pass(W) // Stops DM whining about unused vars windowcount++ CHECK_TICK diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 2cab7e579075..6f7fccc38d53 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -327,13 +327,12 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/survival_pod, /obj/structure/sign/mining name = "nanotrasen mining corps sign" desc = "A sign of relief for weary miners, and a warning for would-be competitors to Nanotrasen's mining claims." - icon = 'icons/turf/walls/survival_pod_walls.dmi' icon_state = "ntpod" + layer = TABLE_LAYER // scuffed but it works /obj/structure/sign/mining/survival name = "shelter sign" desc = "A high visibility sign designating a safe shelter." - icon = 'icons/turf/walls/survival_pod_walls.dmi' icon_state = "survival" //Fluff @@ -374,7 +373,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/survival_pod, /obj/item/stack/telecrystal/twenty, /obj/item/banhammer) -/obj/item/fakeartefact/New() +/obj/item/fakeartefact/Initialize(mapload) . = ..() var/obj/item/I = pick(possible) name = initial(I.name) @@ -382,3 +381,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/economy/vending/wallmed/survival_pod, desc = initial(I.desc) icon_state = initial(I.icon_state) item_state = initial(I.item_state) + lefthand_file = initial(I.lefthand_file) + righthand_file = initial(I.righthand_file) + slot_flags = initial(I.slot_flags) + w_class = initial(I.w_class) diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index 05f37e93c821..f82264900213 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -1,3 +1,6 @@ +// the stuff used for wormhole weaver +GLOBAL_LIST_EMPTY(wormhole_effect) + /**********************Jaunter**********************/ /obj/item/wormhole_jaunter name = "wormhole jaunter" @@ -17,7 +20,8 @@ /obj/item/wormhole_jaunter/proc/turf_check(mob/user) var/turf/device_turf = get_turf(user) - if(!device_turf || !is_teleport_allowed(device_turf.z)) + var/area/our_area = get_area(device_turf) + if(!device_turf || !is_teleport_allowed(device_turf.z) || our_area.tele_proof) to_chat(user, "You're having difficulties getting the [name] to work.") return FALSE return TRUE @@ -198,13 +202,18 @@ thrower = user /obj/item/grenade/jaunter_grenade/prime() + var/area/our_area = get_area(src) + var/turf/T = get_turf(src) + if(!is_teleport_allowed(T.z) || our_area.tele_proof) + do_sparks(5, 0, T) + qdel(src) + return update_mob() var/list/destinations = list() for(var/obj/item/beacon/B in GLOB.beacons) var/turf/BT = get_turf(B) if(is_station_level(BT.z)) destinations += BT - var/turf/T = get_turf(src) if(istype(T, /turf/simulated/floor/chasm/straight_down/lava_land_surface)) for(var/obj/effect/abstract/chasm_storage/C in T) var/found_mob = FALSE @@ -227,3 +236,197 @@ new /obj/effect/portal/jaunt_tunnel(drunken_opening, drunk_dial, src, 100, thrower) new /obj/effect/temp_visual/thunderbolt(drunken_opening) qdel(src) + +/obj/item/wormhole_jaunter/wormhole_weaver + name = "wormhole weaver" + icon = 'icons/obj/device.dmi' + icon_state = "wormhole_weaver" + item_state = "electronic" + desc = "This peculiar device is a prototype from a discontinued project. It was designed as an alternative to jaunters, offering more precise teleportation. However, as a prototype, it drains its entire battery with a single wormhole and can only target the beacons included in the kit." + /// Where are we teleporting to? + var/destination + /// Power cell (10000W). + var/obj/item/stock_parts/cell/high/wcell = null + /// The amount it costs to use this. + var/chargecost = 10000 + var/icon_state_inactive = "wormhole_weaver_inactive" + /// Used for icon update check. + var/inactive = FALSE + /// Is user re-activating the device? + var/currently_reactivating = FALSE + /// Does the user already have the teleportation menu open? + var/menu_open = FALSE + /// Did we get hit by EMP? + var/emp_inflicted = FALSE + /// The turf where we activated the wormwhole. + var/wormhole_loc + +/obj/item/wormhole_jaunter/wormhole_weaver/attack_self(mob/user) + activate(user, TRUE) + +/obj/item/wormhole_jaunter/wormhole_weaver/emp_act(severity) + + if(!emp_inflicted) + playsound(loc, 'sound/machines/shut_down.ogg', 50, TRUE) + visible_message("A malfunction detected in the weaver's subsystems. Initiating safety protocols.") + emp_inflicted = TRUE + inactive = TRUE + icon_state = icon_state_inactive + for(var/obj/O in contents) + O.emp_act(severity) + for(var/obj/effect/temp_visual/thunderbolt_targeting/wormhole_weaver/E in GLOB.wormhole_effect) + if(E) + qdel(E) + visible_message("Wormhole marker disappears!") + do_sparks(5, FALSE, wormhole_loc) + +/obj/item/wormhole_jaunter/wormhole_weaver/proc/prepare_foractivation(mob/user) + if(do_after(user, 3 SECONDS, target = src)) + playsound(loc, 'sound/machines/twobeep.ogg', 50, TRUE) + to_chat(user, "The weaver is now ready for use.") + inactive = FALSE + emp_inflicted = FALSE + currently_reactivating = FALSE + icon_state = initial(icon_state) + else + currently_reactivating = FALSE + +/obj/item/wormhole_jaunter/wormhole_weaver/get_destinations(mob/user) + var/list/destinations = list() + + for(var/obj/item/beacon/B in GLOB.beacons) + if(B.wormhole_weaver) + destinations += B + + return destinations + +/obj/item/wormhole_jaunter/wormhole_weaver/activate(mob/user) + if(wcell.charge < chargecost) + to_chat(user, "Device isn't charged enough to be used at this time.") + return + + if(inactive || emp_inflicted) + if(currently_reactivating) + to_chat(user, "You are already reactivating the device!") + return + currently_reactivating = TRUE + prepare_foractivation(user) + return + + var/list/C = get_destinations(user) + if(!length(C)) + to_chat(user, "[src] found no beacons in the world to anchor a wormhole to.") + return + + if(menu_open) + return + + var/list/L = list() + var/list/areaindex = list() + menu_open = TRUE + + for(var/obj/item/beacon/R in GLOB.beacons) + var/turf/T = get_turf(R) + if(!T) + continue + if(!R.wormhole_weaver) + continue + var/tmpname = T.loc.name + if(areaindex[tmpname]) + tmpname = "[tmpname] ([++areaindex[tmpname]])" + else + areaindex[tmpname] = 1 + L[tmpname] = R + + var/desc = tgui_input_list(user, "Please select a location to target.", "Device Target Interface", L) + if(!desc) + menu_open = FALSE + return + + if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !turf_check(user) || !Adjacent(user)) + menu_open = FALSE + return + + wormhole_loc = get_turf(src) + new /obj/effect/temp_visual/thunderbolt_targeting/wormhole_weaver(wormhole_loc) + destination = L[desc] + user.visible_message( + "[user] pulls out a black colored device and points it to the floor.", + "You activate the wormhole weaver, it will take some time until device assembles a wormhole link." + ) + wcell.use(chargecost) + icon_state = icon_state_inactive + inactive = TRUE + menu_open = FALSE + + sleep(5 SECONDS) + if(emp_inflicted) + return + + create_wormhole(wormhole_loc, destination) + +/obj/item/wormhole_jaunter/wormhole_weaver/proc/create_wormhole(used_turf, turf/destination) + new /obj/effect/portal/jaunt_tunnel(used_turf, get_turf(destination), src, 100) + do_sparks(5, FALSE, used_turf) + +// overridden because we don't need this +/obj/item/wormhole_jaunter/wormhole_weaver/chasm_react(mob/user) + return + +/obj/item/wormhole_jaunter/wormhole_weaver/emag_act(mob/user) + to_chat(user, "Emagging [src] has no effect.") + +/obj/effect/temp_visual/thunderbolt_targeting/wormhole_weaver + duration = 5 SECONDS + +/obj/effect/temp_visual/thunderbolt_targeting/wormhole_weaver/Initialize() + . = ..() + GLOB.wormhole_effect += src + playsound(loc, 'sound/machines/twobeep.ogg', 50, TRUE) + set_light(2, l_color = "#FFD165") + +/obj/effect/temp_visual/thunderbolt_targeting/wormhole_weaver/Destroy() + GLOB.wormhole_effect -= src + return ..() + +// below here is recharge code for wormhole weaver, taken from rcs code +/obj/item/wormhole_jaunter/wormhole_weaver/get_cell() + return wcell + +/obj/item/wormhole_jaunter/wormhole_weaver/New() + ..() + wcell = new(src) + +/obj/item/wormhole_jaunter/wormhole_weaver/examine(mob/user) + . = ..() + . += "Device currently has [chargecost > wcell.charge ? "insufficient" : "sufficient"] power. You can recharge it with a recharger." + +/obj/item/wormhole_jaunter/wormhole_weaver/Destroy() + QDEL_NULL(wcell) + return ..() + +/obj/item/paper/fluff/weaver_instruction + name = "prototype guideline" + info = {"

Introduction and Caution


+

+ Firstly, thank you for your interest in our cutting-edge technology. The package you hold contains three (3) targeting beacons, each tuned to emit a specific frequency + that can only be detected by wormhole weaver devices. For this reason, do not damage or destroy the beacons under any circumstances. +

+ Using this device is fairly simple. First, choose a target destination and confirm your choice. Then, point the device at the location where you want the wormhole to + position itself. It will take approximately five seconds for the weaver to establish a connection. +

+ Please note that this prototype must be fully charged before use. Each activation drains the entire battery, and after each recharge, the device must be manually + reactivated. Due to its fragile design, even the slightest malfunction will trigger safety protocols, immediately canceling the weaving process. Therefore, keep the + device away from EMP interference. +

+ It is also highly advised to avoid taking a wormhole on a full stomach."} + +/obj/item/storage/box/weaver_kit + name = "dusty package" + +/obj/item/storage/box/weaver_kit/populate_contents() + new /obj/item/wormhole_jaunter/wormhole_weaver(src) + new /obj/item/paper/fluff/weaver_instruction(src) + new /obj/item/beacon/wormhole_weaver(src) + new /obj/item/beacon/wormhole_weaver(src) + new /obj/item/beacon/wormhole_weaver(src) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index 12cb30ef9c66..66e473e25bf2 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -48,6 +48,9 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) if(!area.outdoors) to_chat(user, "[src] can only be used on things that are outdoors!") return + if(area.tele_proof || !is_teleport_allowed(A.z)) + to_chat(user, "Bluespace distortions prevent the fulton from inflating!") + return if(!flag) return if(!istype(A)) diff --git a/code/modules/mining/lavaland/loot/colossus_loot.dm b/code/modules/mining/lavaland/loot/colossus_loot.dm index f47f059515e4..def0e5c7c202 100644 --- a/code/modules/mining/lavaland/loot/colossus_loot.dm +++ b/code/modules/mining/lavaland/loot/colossus_loot.dm @@ -261,7 +261,7 @@ harm_intent_damage = 1 friendly = "mends" density = FALSE - flying = TRUE + initial_traits = list(TRAIT_FLYING) obj_damage = 0 pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = VENTCRAWLER_ALWAYS diff --git a/code/modules/mining/lavaland/loot/hierophant_loot.dm b/code/modules/mining/lavaland/loot/hierophant_loot.dm index 66a94acf1ad8..eb5b621a6300 100644 --- a/code/modules/mining/lavaland/loot/hierophant_loot.dm +++ b/code/modules/mining/lavaland/loot/hierophant_loot.dm @@ -242,6 +242,9 @@ var/turf/turf_to_teleport_to = get_step(target, get_dir(source, M)) //get position relative to caster if(!turf_to_teleport_to || is_blocked_turf(turf_to_teleport_to, TRUE)) return + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.set_alpha_tracking(0, src, update_alpha = FALSE) animate(M, alpha = 0, time = 2, easing = EASE_OUT) //fade out sleep(1) if(!M) @@ -254,7 +257,12 @@ sleep(1) if(!M) return - animate(M, alpha = 255, time = 2, easing = EASE_IN) //fade IN + var/our_alpha = 255 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.set_alpha_tracking(ALPHA_VISIBLE, src, update_alpha = FALSE) + our_alpha = H.get_alpha() + animate(M, alpha = our_alpha, time = 2, easing = EASE_IN) //fade IN sleep(1) if(!M) return diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index d7c5720588eb..bc3a2f957d9a 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -31,33 +31,39 @@ prize_list["Gear"] = list( EQUIPMENT("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), EQUIPMENT("Explorer's Webbing", /obj/item/storage/belt/mining, 500), - EQUIPMENT("Fulton Beacon", /obj/item/fulton_core, 400), EQUIPMENT("Mining Conscription Kit", /obj/item/storage/backpack/duffel/mining_conscript, 1500), - EQUIPMENT("Advanced Jetpack Module", /obj/item/mod/module/jetpack/advanced, 2000), EQUIPMENT("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), EQUIPMENT("Lazarus Capsule", /obj/item/mobcapsule, 800), EQUIPMENT("Lazarus Capsule belt", /obj/item/storage/belt/lazarus, 200), + EQUIPMENT("Tracking Bio-chip Kit", /obj/item/storage/box/minertracker, 600), + ) + prize_list["Modsuits and Exosuits"] = list( + EQUIPMENT("Standard MODsuit", /obj/item/mod/control/pre_equipped/standard/explorer, 1000), + EQUIPMENT("Advanced Jetpack Module", /obj/item/mod/module/jetpack/advanced, 2000), EQUIPMENT("Mining MODsuit", /obj/item/mod/control/pre_equipped/mining/vendor, 3500), EQUIPMENT("Asteroid MODsuit Skin", /obj/item/mod/skin_applier/asteroid, 1000), - EQUIPMENT("Tracking Bio-chip Kit", /obj/item/storage/box/minertracker, 600), - EQUIPMENT("Mining Charge Detonator", /obj/item/detonator, 150) + EQUIPMENT("Exosuit Grenade Launcher", /obj/item/mecha_parts/mecha_equipment/weapon/energy/mining_grenade, 2500), ) prize_list["Consumables"] = list( EQUIPMENT("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 100), - EQUIPMENT("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600), + EQUIPMENT("First-Aid Kit", /obj/item/storage/firstaid/regular, 400), + EQUIPMENT("Advanced First-Aid Kit", /obj/item/storage/firstaid/adv, 600), EQUIPMENT("Fulton Pack", /obj/item/extraction_pack, 1000), + EQUIPMENT("Fulton Beacon", /obj/item/fulton_core, 400), EQUIPMENT("Jaunter", /obj/item/wormhole_jaunter, 750), EQUIPMENT("Chasm Jaunter Recovery Grenade", /obj/item/grenade/jaunter_grenade, 1500), EQUIPMENT("Lazarus Injector", /obj/item/lazarus_injector, 1000), EQUIPMENT("Mining Charge", /obj/item/grenade/plastic/miningcharge/lesser, 150), EQUIPMENT("Industrial Mining Charge", /obj/item/grenade/plastic/miningcharge, 500), - EQUIPMENT("Point Transfer Card", /obj/item/card/mining_point_card, 500), + EQUIPMENT("Mining Charge Detonator", /obj/item/detonator, 150), EQUIPMENT("Shelter Capsule", /obj/item/survivalcapsule, 400), + EQUIPMENT("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), EQUIPMENT("Stabilizing Serum", /obj/item/hivelordstabilizer, 400), EQUIPMENT("Survival Medipen", /obj/item/reagent_containers/hypospray/autoinjector/survival, 500), ) - prize_list["Kinetic Accelerator"] = list( + prize_list["Kinetic Weapons"] = list( EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), + EQUIPMENT("Kinetic Crusher", /obj/item/kinetic_crusher, 750), EQUIPMENT("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150), EQUIPMENT("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), EQUIPMENT("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), @@ -69,13 +75,10 @@ EQUIPMENT("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 100), ) prize_list["Digging Tools"] = list( + EQUIPMENT("Silver Pickaxe", /obj/item/pickaxe/silver, 1000), EQUIPMENT("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000), - EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), - EQUIPMENT("Kinetic Crusher", /obj/item/kinetic_crusher, 750), - EQUIPMENT("Mecha Grenade Launcher", /obj/item/mecha_parts/mecha_equipment/weapon/energy/mining_grenade, 2500), EQUIPMENT("Resonator", /obj/item/resonator, 800), - EQUIPMENT("Silver Pickaxe", /obj/item/pickaxe/silver, 1000), - EQUIPMENT("Super Resonator", /obj/item/resonator/upgraded, 2500), + EQUIPMENT("Super Resonator", /obj/item/resonator/upgraded, 1500), ) prize_list["Minebot"] = list( EQUIPMENT("Nanotrasen Minebot", /obj/item/mining_drone_cube, 800), @@ -92,10 +95,11 @@ EQUIPMENT("Hoverboard", /obj/item/melee/skateboard/hoverboard, 4000), //Cross lava rivers in a discounted style. To buying it in cargo. Still more than jump boots. EQUIPMENT("HRD-MDE Project Box", /obj/item/storage/box/hardmode_box, 3500), //I want miners have to pay a lot to get this, but be set once they do. EQUIPMENT("Laser Pointer", /obj/item/laser_pointer, 300), - EQUIPMENT("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), + EQUIPMENT("The Real Man ID Sticker", /obj/item/id_decal/prisoner, 400), + EQUIPMENT("Mythril Coin", /obj/item/coin/mythril, 100), EQUIPMENT("Soap", /obj/item/soap/nanotrasen, 200), EQUIPMENT("Space Cash", /obj/item/stack/spacecash/c200, 2000), - EQUIPMENT("Whiskey", /obj/item/reagent_containers/drinks/bottle/whiskey, 100) + EQUIPMENT("Point Transfer Card", /obj/item/card/mining_point_card, 500), ) prize_list["Extra"] = list() // Used in child vendors @@ -150,7 +154,13 @@ var/list/cat_items = list() for(var/prize_name in prize_list[cat]) var/datum/data/mining_equipment/prize = prize_list[cat][prize_name] - cat_items[prize_name] = list("name" = prize_name, "price" = prize.cost) + var/obj/item = prize.equipment_path + cat_items[prize_name] = list( + "name" = prize_name, + "price" = prize.cost, + "icon" = item.icon, + "icon_state" = item.icon_state + ) static_data["items"][cat] = cat_items return static_data @@ -383,37 +393,37 @@ RefreshParts() prize_list = list() - prize_list["Equipment"] = list( + prize_list["Gear"] = list( EQUIPMENT("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), - EQUIPMENT("Tacticool Toolbelt", /obj/item/storage/belt/utility/expedition, 500), - EQUIPMENT("Fulton Beacon", /obj/item/fulton_core, 400), + EQUIPMENT("Tacticool Toolbelt", /obj/item/storage/belt/utility/expedition/vendor, 500), EQUIPMENT("GPS", /obj/item/gps, 200), EQUIPMENT("Treasure Satchel", /obj/item/storage/bag/expedition, 100), - EQUIPMENT ("Robust Treasure Satchel", /obj/item/storage/bag/expedition/robust, 300), + EQUIPMENT("Robust Treasure Satchel", /obj/item/storage/bag/expedition/robust, 300), EQUIPMENT("Tracking Bio-chip Kit", /obj/item/storage/box/minertracker, 600), EQUIPMENT("Telecommunications Relay Kit", /obj/item/storage/box/relay_kit, 500), EQUIPMENT("Tracking Beacon", /obj/item/beacon, 200), ) - prize_list["Modsuits"] = list( + prize_list["Modsuits and Exosuits"] = list( EQUIPMENT("Standard MODsuit", /obj/item/mod/control/pre_equipped/standard/explorer, 1000), EQUIPMENT("Advanced Jetpack Module", /obj/item/mod/module/jetpack/advanced, 2000), - EQUIPMENT("Night Vision Module", /obj/item/mod/module/visor/night, 1500), - EQUIPMENT("Clamp Module", /obj/item/mod/module/clamp, 500), - EQUIPMENT("GPS Module", /obj/item/mod/module/gps, 500), + EQUIPMENT("Exosuit Jetpack Module", /obj/item/mecha_parts/mecha_equipment/thrusters, 1500), // they stack up, so put 3-4 for FTL speed. EQUIPMENT("Mining MODsuit", /obj/item/mod/control/pre_equipped/mining/vendor, 3500), EQUIPMENT("Asteroid MODsuit Skin", /obj/item/mod/skin_applier/asteroid, 1000), + EQUIPMENT("Exosuit Grenade Launcher", /obj/item/mecha_parts/mecha_equipment/weapon/energy/mining_grenade, 2500) ) prize_list["Consumables"] = list( EQUIPMENT("First-Aid Kit", /obj/item/storage/firstaid/regular, 400), EQUIPMENT("Advanced First-Aid Kit", /obj/item/storage/firstaid/adv, 600), EQUIPMENT("Fulton Pack", /obj/item/extraction_pack, 1000), - EQUIPMENT("Point Transfer Card", /obj/item/card/mining_point_card, 500), + EQUIPMENT("Fulton Beacon", /obj/item/fulton_core, 400), EQUIPMENT("Stabilizing Serum", /obj/item/hivelordstabilizer, 400), + EQUIPMENT("Survival Medipen", /obj/item/reagent_containers/hypospray/autoinjector/survival, 500), ) - prize_list["Kinetic Accelerator"] = list( - EQUIPMENT("Kinetic Pistol", /obj/item/gun/energy/kinetic_accelerator/pistol, 750), + prize_list["Kinetic Weapons"] = list( + EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), + EQUIPMENT("Kinetic Pistol", /obj/item/gun/energy/kinetic_accelerator/pistol, 500), EQUIPMENT("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150), EQUIPMENT("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), EQUIPMENT("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), @@ -425,6 +435,7 @@ ) prize_list["Miscellaneous"] = list( + EQUIPMENT("Whiskey", /obj/item/reagent_containers/drinks/bottle/whiskey, 100), EQUIPMENT("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300), EQUIPMENT("Toy Sword", /obj/item/toy/sword, 200), EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150), @@ -432,6 +443,7 @@ EQUIPMENT("Suspicious ID Sticker", /obj/item/id_decal/emag, 400), EQUIPMENT("Syndicate Coin", /obj/item/coin/antagtoken/syndicate, 100), EQUIPMENT("Space Cash", /obj/item/stack/spacecash/c200, 2000), + EQUIPMENT("Point Transfer Card", /obj/item/card/mining_point_card, 500), ) /obj/machinery/mineral/equipment_vendor/explorer/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index b16300ea4579..682a21b7a022 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -22,8 +22,8 @@ /obj/structure/closet/wardrobe/miner name = "mining wardrobe" - icon_state = "mixed" - icon_closed = "mixed" + icon_state = "generic" + closed_door_sprite = "mixed" /obj/structure/closet/wardrobe/miner/populate_contents() new /obj/item/storage/backpack/duffel(src) @@ -46,7 +46,7 @@ /obj/structure/closet/secure_closet/miner name = "miner's equipment" icon_state = "mining" - open_door_sprite = "mining_door" + opened_door_sprite = "cargo" req_access = list(ACCESS_MINING) /obj/structure/closet/secure_closet/miner/populate_contents() diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index 1d0a465f01b4..fb50bc42bae8 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -121,7 +121,8 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new) other_antags += list( "Blob" = (mind.special_role == SPECIAL_ROLE_BLOB), "Nuclear Operative" = (mind in SSticker.mode.syndicates), - "Abductor" = (mind in SSticker.mode.abductors) + "Abductor" = (mind in SSticker.mode.abductors), + "Event Roles" = (mind.special_role == SPECIAL_ROLE_EVENTMISC) ) for(var/antag_name in other_antags) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 9c8ac77ccc32..f2b18ff15e9e 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -439,7 +439,7 @@ name = "Tradeband" desc = "Maintained by the various trading cartels in major systems, this elegant, structured language is used for bartering and bargaining." speech_verb = "enunciates" - colour = "say_quote" + colour = "tradeband" key = "2" space_chance = 100 syllables = list("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", diff --git a/code/modules/mob/living/brain/robotic_brain.dm b/code/modules/mob/living/brain/robotic_brain.dm index 0fd4dc8cdbc4..fbaa53320c67 100644 --- a/code/modules/mob/living/brain/robotic_brain.dm +++ b/code/modules/mob/living/brain/robotic_brain.dm @@ -16,7 +16,8 @@ var/requires_master = TRUE var/mob/living/carbon/human/imprinted_master = null var/ejected_flavor_text = "circuit" - + /// If this is a posibrain, which will reject attempting to put a new ghost in it, because this a real brain we care about, not a robobrain + var/can_be_reinhabited = TRUE dead_icon = "boris_blank" /obj/item/mmi/robotic_brain/Destroy() @@ -31,7 +32,7 @@ to_chat(user, "You press your thumb on [src] and imprint your user information.") imprinted_master = user return - if(brainmob && !brainmob.key && !searching) + if(brainmob && !brainmob.key && !searching && can_be_reinhabited) //Start the process of searching for a new user. to_chat(user, "You carefully locate the manual activation switch and start [src]'s boot process.") request_player() @@ -93,7 +94,7 @@ become_occupied(occupied_icon) /obj/item/mmi/robotic_brain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer. - if(brainmob && brainmob.key) + if(brainmob && brainmob.key || !searching) return searching = FALSE @@ -104,6 +105,8 @@ /obj/item/mmi/robotic_brain/proc/volunteer(mob/dead/observer/user) if(!searching) return + if(brainmob && brainmob.key) + return // No, something is wrong, abort. if(!istype(user) && !HAS_TRAIT(user, TRAIT_RESPAWNABLE)) to_chat(user, "Seems you're not a ghost. Could you please file an exploit report on the forums?") return @@ -182,11 +185,11 @@ ..() /obj/item/mmi/robotic_brain/attack_ghost(mob/dead/observer/O) + if(brainmob && brainmob.key) + return // No point pinging a posibrain with a player already inside if(searching) volunteer(O) return - if(brainmob && brainmob.key) - return // No point pinging a posibrain with a player already inside if(validity_checks(O) && (world.time >= next_ping_at)) next_ping_at = world.time + (20 SECONDS) playsound(get_turf(src), 'sound/items/posiping.ogg', 80, 0) @@ -204,3 +207,4 @@ requires_master = FALSE ejected_flavor_text = "metal cube" dead_icon = "posibrain" + can_be_reinhabited = FALSE diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 4b54760533a7..191ae6906660 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -203,7 +203,7 @@ icon_state = "[initial(icon_state)]_dead" item_state = "facehugger_inactive" stat = DEAD - qdel(GetComponent(/datum/component/proximity_monitor)) + DeleteComponent(/datum/component/proximity_monitor) visible_message("[src] curls up into a ball!") diff --git a/code/modules/mob/living/carbon/carbon_procs.dm b/code/modules/mob/living/carbon/carbon_procs.dm index 8f9694118a56..e3a91388a67d 100644 --- a/code/modules/mob/living/carbon/carbon_procs.dm +++ b/code/modules/mob/living/carbon/carbon_procs.dm @@ -738,7 +738,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven else if(I == handcuffed) handcuffed = null if(buckled && buckled.buckle_requires_restraints) - buckled.unbuckle_mob(src) + unbuckle() update_handcuffed() else if(I == legcuffed) legcuffed = null @@ -999,7 +999,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven handcuffed = null if(buckled && buckled.buckle_requires_restraints) - buckled.unbuckle_mob(src) + unbuckle() update_handcuffed() if(client) @@ -1053,7 +1053,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven /mob/living/carbon/proc/slip(description, knockdown, tilesSlipped, walkSafely, slipAny, slipVerb = "slip") - if(flying || buckled || (walkSafely && m_intent == MOVE_INTENT_WALK)) + if(HAS_TRAIT(src, TRAIT_FLYING) || buckled || (walkSafely && m_intent == MOVE_INTENT_WALK)) return FALSE if(IS_HORIZONTAL(src) && !tilesSlipped) diff --git a/code/modules/mob/living/carbon/carbon_update_status.dm b/code/modules/mob/living/carbon/carbon_update_status.dm index 58b0c6a3a778..d06555cc6310 100644 --- a/code/modules/mob/living/carbon/carbon_update_status.dm +++ b/code/modules/mob/living/carbon/carbon_update_status.dm @@ -6,7 +6,7 @@ death() create_debug_log("died of damage, trigger reason: [reason]") return - if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || (check_death_method() && getOxyLoss() > 50) || HAS_TRAIT(src, TRAIT_FAKEDEATH) || health < HEALTH_THRESHOLD_KNOCKOUT && check_death_method() || health <= HEALTH_THRESHOLD_DEAD) + if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || (check_death_method() && getOxyLoss() > 50) || HAS_TRAIT(src, TRAIT_FAKEDEATH) || health < HEALTH_THRESHOLD_KNOCKOUT && check_death_method() || health <= HEALTH_THRESHOLD_DEAD) // In case anyone is wondering where oldcrit is handled, it's here. if(stat == CONSCIOUS) KnockOut() create_debug_log("fell unconscious, trigger reason: [reason]") diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 1a3dee8c18eb..f508bc1e511f 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -12,6 +12,7 @@ health = maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_limb_damage + SEND_SIGNAL(src, COMSIG_LIVING_HEALTH_UPDATE) update_stat("updatehealth([reason])") med_hud_set_health() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 009b43763c8c..2c2f3d4d7417 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -438,7 +438,12 @@ emp_act I.acid_act(acidpwr, acid_volume) return 1 -/mob/living/carbon/human/emag_act(user as mob, obj/item/organ/external/affecting) +/mob/living/carbon/human/emag_act(mob/user) + var/obj/item/organ/external/affecting + if(!user.zone_selected) // pulse demons really. + affecting = get_organ(pick(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_ARM, BODY_ZONE_R_LEG)) + else + affecting = get_organ(user.zone_selected) if(!istype(affecting)) return if(!affecting.is_robotic()) @@ -447,9 +452,9 @@ emp_act if(affecting.sabotaged) to_chat(user, "[src]'s [affecting.name] is already sabotaged!") else - to_chat(user, "You sneakily slide the card into the dataport on [src]'s [affecting.name] and short out the safeties.") + to_chat(user, "You sneakily hack into the dataport on [src]'s [affecting.name] and short out the safeties.") affecting.sabotaged = TRUE - return 1 + return TRUE /mob/living/carbon/human/grabbedby(mob/living/user) if(w_uniform) @@ -493,8 +498,6 @@ emp_act visible_message("[src] blocks [I]!") return FALSE - if(istype(I,/obj/item/card/emag)) - emag_act(user, affecting) send_item_attack_message(I, user, hit_area) @@ -837,3 +840,5 @@ emp_act /mob/living/carbon/human/projectile_hit_check(obj/item/projectile/P) return (HAS_TRAIT(src, TRAIT_FLOORED) || HAS_TRAIT(src, TRAIT_NOKNOCKDOWNSLOWDOWN)) && !density // hit mobs that are intentionally lying down to prevent combat crawling. +/mob/living/carbon/human/canBeHandcuffed() + return has_left_hand() || has_right_hand() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 5cf1b5218fcc..501eda399e79 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -103,3 +103,6 @@ var/list/bodyparts = list() /// map organ names to organs var/list/bodyparts_by_name = list() + + /// Lazylist of sources to track what our alpha should be, alpha is set to the minimum. Use the `set_alpha_tracking` and `get_alpha` helpers. + var/list/alpha_sources diff --git a/code/modules/mob/living/carbon/human/human_inventory.dm b/code/modules/mob/living/carbon/human/human_inventory.dm index f8bcaf5d402c..206958d2e123 100644 --- a/code/modules/mob/living/carbon/human/human_inventory.dm +++ b/code/modules/mob/living/carbon/human/human_inventory.dm @@ -118,6 +118,7 @@ update_sight() head_update(I) update_inv_head() + update_misc_effects() else if(I == r_ear) r_ear = null update_inv_ears() @@ -140,6 +141,7 @@ internal = null wear_mask_update(I, toggle_off = FALSE) sec_hud_set_ID() + update_misc_effects() update_inv_wear_mask() else if(I == wear_id) wear_id = null @@ -211,6 +213,7 @@ if(length(hud_list)) sec_hud_set_ID() wear_mask_update(I, toggle_off = TRUE) + update_misc_effects() update_inv_wear_mask() if(SLOT_HUD_HANDCUFFED) handcuffed = I @@ -279,6 +282,7 @@ if(hat.vision_flags || hat.see_in_dark || !isnull(hat.lighting_alpha)) update_sight() // this calls update_inv_head() on its own + update_misc_effects() head_update(I) if(SLOT_HUD_SHOES) shoes = I diff --git a/code/modules/mob/living/carbon/human/human_life.dm b/code/modules/mob/living/carbon/human/human_life.dm index 57c5cc8984b9..a71035751c39 100644 --- a/code/modules/mob/living/carbon/human/human_life.dm +++ b/code/modules/mob/living/carbon/human/human_life.dm @@ -720,7 +720,7 @@ healthdoll.overlays -= (cached_overlays - new_overlays) healthdoll.cached_healthdoll_overlays = new_overlays - if(health <= HEALTH_THRESHOLD_CRIT) + if(health <= HEALTH_THRESHOLD_SUCCUMB) throw_alert("succumb", /atom/movable/screen/alert/succumb) else clear_alert("succumb") diff --git a/code/modules/mob/living/carbon/human/human_mob.dm b/code/modules/mob/living/carbon/human/human_mob.dm index 2a68cfd04673..4c914284b5c9 100644 --- a/code/modules/mob/living/carbon/human/human_mob.dm +++ b/code/modules/mob/living/carbon/human/human_mob.dm @@ -21,7 +21,7 @@ if(!mind) return FALSE if(mind.miming) - qdel(GetComponent(/datum/component/footstep)) + DeleteComponent(/datum/component/footstep) return TRUE /** @@ -2034,3 +2034,30 @@ Eyes need to have significantly high darksight to shine unless the mob has the X dna.ResetUIFrom(src) flavor_text = "" +/** + * Helper for tracking alpha, use this to set an alpha source + * + * alpha_num - num between 0 and 255 that represents the alpha from `source` + * source - a datum that is the cause of the alpha source. This will be turned into a key via UID. + * update_alpha - boolean if alpha should be updated with this proc. Set this to false if you plan to animate the alpha after this call. + */ +/mob/living/carbon/human/proc/set_alpha_tracking(alpha_num, datum/source, update_alpha = TRUE) + alpha_num = round(alpha_num) + if(alpha_num >= ALPHA_VISIBLE) + LAZYREMOVE(alpha_sources, source.UID()) + else + LAZYSET(alpha_sources, source.UID(), max(alpha_num, 0)) + if(update_alpha) + alpha = get_alpha() + +/** + * Gets the target alpha of the human + * + * optional_source - use this to get the alpha of an exact source. This is unsafe, only use if you 100% know it will be in the list. For the best safety, only call this as get_alpha(src) + */ +/mob/living/carbon/human/proc/get_alpha(datum/optional_source) + if(optional_source) + return alpha_sources[optional_source.UID()] + . = ALPHA_VISIBLE + for(var/source in alpha_sources) + . = min(., alpha_sources[source]) diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index 95a6c790308a..52db0245ce1c 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -564,6 +564,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) update_fire() update_icons() update_emissive_block() + alpha = get_alpha() if(player_logged) //make sure the SSD overlay stays overlays += image('icons/effects/effects.dmi', icon_state = "zzz_glow") @@ -854,15 +855,24 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) var/mutable_appearance/standing if(head.sprite_sheets && head.sprite_sheets[dna.species.sprite_sheet_name]) standing = mutable_appearance(head.sprite_sheets[dna.species.sprite_sheet_name], "[head.icon_state]", layer = -HEAD_LAYER) - if(istype(head, /obj/item/clothing/head/helmet/space/plasmaman)) - var/obj/item/clothing/head/helmet/space/plasmaman/P = head - if(!P.up) - standing.overlays += P.visor_icon else if(head.icon_override) standing = mutable_appearance(head.icon_override, "[head.icon_state]", layer = -HEAD_LAYER) else standing = mutable_appearance('icons/mob/clothing/head.dmi', "[head.icon_state]", layer = -HEAD_LAYER) + if(istype(head, /obj/item/clothing/head/helmet/space/plasmaman)) + var/obj/item/clothing/head/helmet/space/plasmaman/P = head + if(!P.up) + standing.overlays += P.visor_icon + + if(istype(head, /obj/item/clothing/head)) + var/obj/item/clothing/head/w_hat = head + for(var/obj/item/clothing/head/hat in w_hat.attached_hats) + if(hat.sprite_sheets && hat.sprite_sheets[dna.species.sprite_sheet_name]) + standing.overlays += image("icon" = hat.sprite_sheets[dna.species.sprite_sheet_name], "icon_state" = "[hat.icon_state]") + else + standing.overlays += image("icon" = hat.icon_override, "icon_state" = "[hat.icon_state]") + if(head.blood_DNA) var/image/bloodsies = image("icon" = dna.species.blood_mask, "icon_state" = "helmetblood") bloodsies.color = head.blood_color diff --git a/code/modules/mob/living/carbon/human/human_update_status.dm b/code/modules/mob/living/carbon/human/human_update_status.dm index ee7fe70d3eed..fa6516724fa7 100644 --- a/code/modules/mob/living/carbon/human/human_update_status.dm +++ b/code/modules/mob/living/carbon/human/human_update_status.dm @@ -3,10 +3,14 @@ return ..(reason) if(stat == DEAD) - if(dna.species && dna.species.can_revive_by_healing) + if(dna.species && dna.species.can_revive_by_healing) // Here's where IPC revival is handled var/obj/item/organ/internal/brain/B = get_int_organ(/obj/item/organ/internal/brain) if(B) - if((health >= (HEALTH_THRESHOLD_DEAD + HEALTH_THRESHOLD_CRIT) * 0.5) && check_vital_organs() && !suiciding) + if((health >= (HEALTH_THRESHOLD_DEAD + HEALTH_THRESHOLD_CRIT) * 0.5) && ipc_vital_organ_check() && !suiciding) + var/mob/dead/observer/ghost = get_ghost() + if(ghost) + to_chat(ghost, "Your chassis has been repaired and repowered, re-enter if you want to continue playing! (Verbs -> Ghost -> Re-enter corpse)") + SEND_SOUND(ghost, sound('sound/effects/genetics.ogg')) update_revive() create_debug_log("revived from healing, trigger reason: [reason]") diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index d51046d14b6f..5cc343669642 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -159,16 +159,16 @@ //Defining lists of icon skin tones for species that have them. var/list/icon_skin_tones = list() - // Determines the organs that the species spawns with and - var/list/has_organ = list( // which required-organ checks are conducted. - "heart" = /obj/item/organ/internal/heart, - "lungs" = /obj/item/organ/internal/lungs, - "liver" = /obj/item/organ/internal/liver, - "kidneys" = /obj/item/organ/internal/kidneys, - "brain" = /obj/item/organ/internal/brain, - "appendix" = /obj/item/organ/internal/appendix, - "eyes" = /obj/item/organ/internal/eyes - ) + /// Determines the organs that the species spawns with and which required-organ checks are conducted. + var/list/has_organ = list( + "heart" = /obj/item/organ/internal/heart, + "lungs" = /obj/item/organ/internal/lungs, + "liver" = /obj/item/organ/internal/liver, + "kidneys" = /obj/item/organ/internal/kidneys, + "brain" = /obj/item/organ/internal/brain, + "appendix" = /obj/item/organ/internal/appendix, + "eyes" = /obj/item/organ/internal/eyes + ) var/vision_organ = /obj/item/organ/internal/eyes // If set, this organ is required for vision. var/list/has_limbs = list( "chest" = list("path" = /obj/item/organ/external/chest, "descriptor" = "chest"), @@ -293,7 +293,7 @@ if(HAS_TRAIT(H, TRAIT_IGNORESLOWDOWN)) ignoreslow = TRUE - var/flight = H.flying //Check for flight and flying items + var/flight = HAS_TRAIT(H, TRAIT_FLYING) //Check for flight and flying items ADD_SLOWDOWN(speed_mod) @@ -337,7 +337,7 @@ . = round_down(. * SLOWDOWN_MULTIPLIER) / SLOWDOWN_MULTIPLIER //This allows us to round in values of 0.5 A slowdown of 0.55 becomes 1.10, which is rounded to 1, then reduced to 0.5 leftover -= . - var/health_deficiency = max(H.maxHealth - H.health, H.staminaloss) + var/health_deficiency = max(H.maxHealth - H.health, H.getStaminaLoss()) if(H.reagents) for(var/datum/reagent/R in H.reagents.reagent_list) if(R.shock_reduction) @@ -586,7 +586,7 @@ if(target.anchored) return FALSE if(target.buckled) - target.buckled.unbuckle_mob(target) + target.unbuckle() var/shove_dir = get_dir(user.loc, target.loc) var/turf/shove_to = get_step(target.loc, shove_dir) diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index 478646c32889..5c04aef27953 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -454,7 +454,7 @@ if(!isturf(picked)) return if(H.buckled) - H.buckled.unbuckle_mob(H, force = TRUE) + H.unbuckle(force = TRUE) do_teleport(H, picked) return TRUE @@ -538,7 +538,7 @@ if(!isturf(picked)) return if(H.buckled) - H.buckled.unbuckle_mob(H, force = TRUE) + H.unbuckle(force = TRUE) do_teleport(H, picked) last_teleport = world.time UpdateButtons() //action icon looks unavailable diff --git a/code/modules/mob/living/carbon/human/species/human_species.dm b/code/modules/mob/living/carbon/human/species/human_species.dm index d6bf6d4f933a..ef5fa94650b4 100644 --- a/code/modules/mob/living/carbon/human/species/human_species.dm +++ b/code/modules/mob/living/carbon/human/species/human_species.dm @@ -14,7 +14,8 @@ With a constant desire to colonize and spread their influence onto other species, they have begun to develop alliances and enemies, \ making humans one of the most recognizable and socially diverse species in the sector." - icon_skin_tones = list( //Organized to be from Light to Dark. + /// Organized to be from Light to Dark. + icon_skin_tones = list( 1 = "Default White", 2 = "Pale", 3 = "Classic", @@ -28,7 +29,7 @@ 11 = "Caramel", 12 = "Coffee", 13 = "Chestnut" - ) + ) reagent_tag = PROCESS_ORG diff --git a/code/modules/mob/living/carbon/human/species/machine.dm b/code/modules/mob/living/carbon/human/species/machine.dm index a7503197e841..38b70dcfa4d0 100644 --- a/code/modules/mob/living/carbon/human/species/machine.dm +++ b/code/modules/mob/living/carbon/human/species/machine.dm @@ -33,7 +33,7 @@ //Default styles for created mobs. default_hair = "Blue IPC Screen" dies_at_threshold = TRUE - can_revive_by_healing = 1 + can_revive_by_healing = TRUE reagent_tag = PROCESS_SYN male_scream_sound = 'sound/goonstation/voice/robot_scream.ogg' female_scream_sound = 'sound/goonstation/voice/robot_scream.ogg' diff --git a/code/modules/mob/living/carbon/human/species/shadow.dm b/code/modules/mob/living/carbon/human/species/shadow.dm index 24ff15da2012..92f9f48e14c9 100644 --- a/code/modules/mob/living/carbon/human/species/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/shadow.dm @@ -39,4 +39,7 @@ else if(light_amount < 2) //heal in the dark H.heal_overall_damage(1, 1) H.clear_alert("lightexposure") + else //we're inside an object, so darkness + H.clear_alert("lightexposure") + H.heal_overall_damage(1, 1) ..() diff --git a/code/modules/mob/living/carbon/human/species/unathi.dm b/code/modules/mob/living/carbon/human/species/unathi.dm index bf00c89cb961..d0102489d666 100644 --- a/code/modules/mob/living/carbon/human/species/unathi.dm +++ b/code/modules/mob/living/carbon/human/species/unathi.dm @@ -121,15 +121,16 @@ species_traits = list(LIPS, NOT_SELECTABLE) inherent_traits = list(TRAIT_CHUNKYFINGERS) - has_organ = list( // same as unathi's organs, aside for the lungs as they need to be able to breathe on lavaland. - "heart" = /obj/item/organ/internal/heart/unathi, - "lungs" = /obj/item/organ/internal/lungs/unathi/ash_walker, - "liver" = /obj/item/organ/internal/liver/unathi, - "kidneys" = /obj/item/organ/internal/kidneys/unathi, - "brain" = /obj/item/organ/internal/brain/unathi, - "appendix" = /obj/item/organ/internal/appendix, - "eyes" = /obj/item/organ/internal/eyes/unathi - ) + // same as unathi's organs, aside for the lungs as they need to be able to breathe on lavaland. + has_organ = list( + "heart" = /obj/item/organ/internal/heart/unathi, + "lungs" = /obj/item/organ/internal/lungs/unathi/ash_walker, + "liver" = /obj/item/organ/internal/liver/unathi, + "kidneys" = /obj/item/organ/internal/kidneys/unathi, + "brain" = /obj/item/organ/internal/brain/unathi, + "appendix" = /obj/item/organ/internal/appendix, + "eyes" = /obj/item/organ/internal/eyes/unathi + ) /datum/species/unathi/ashwalker/on_species_gain(mob/living/carbon/human/H) ..() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index a7209d9f643c..22b318ff3b21 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -9,6 +9,9 @@ if(advanced_bullet_dodge_chance) RegisterSignal(src, COMSIG_ATOM_PREHIT, PROC_REF(advanced_bullet_dodge)) + for(var/initial_trait in initial_traits) + ADD_TRAIT(src, initial_trait, INNATE_TRAIT) + // Used to determine the forces dependend on the mob size // Will only change the force if the force was not set in the mob type itself /mob/living/proc/determine_move_and_pull_forces() @@ -293,7 +296,7 @@ if(stat == DEAD) to_chat(src, "It's too late, you're already dead!") return - if(health >= HEALTH_THRESHOLD_CRIT) + if(health >= HEALTH_THRESHOLD_SUCCUMB) to_chat(src, "You are unable to succumb to death! This life continues!") return @@ -307,7 +310,7 @@ if(stat == DEAD) return - if(health >= HEALTH_THRESHOLD_CRIT) + if(health >= HEALTH_THRESHOLD_SUCCUMB) to_chat(src, "You are unable to succumb to death! This life continues!") return @@ -359,6 +362,7 @@ return health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() + SEND_SIGNAL(src, COMSIG_LIVING_HEALTH_UPDATE) update_stat("updatehealth([reason])") med_hud_set_health() med_hud_set_status() @@ -537,7 +541,7 @@ on_fire = 0 suiciding = 0 if(buckled) //Unbuckle the mob and clear the alerts. - buckled.unbuckle_mob(src, force = TRUE) + unbuckle(force = TRUE) if(iscarbon(src)) var/mob/living/carbon/C = src @@ -802,6 +806,10 @@ END RESIST PROCS */////////////////////// +/// Unbuckle the mob from whatever it is buckled to. +/mob/living/proc/unbuckle(force) + buckled.unbuckle_mob(src, force) + /mob/living/proc/Exhaust() to_chat(src, "You're too exhausted to keep going...") Weaken(10 SECONDS) @@ -819,7 +827,7 @@ clear_alert("weightless") else throw_alert("weightless", /atom/movable/screen/alert/weightless) - if(!flying) + if(!HAS_TRAIT(src, TRAIT_FLYING)) float(!has_gravity) /mob/living/proc/float(on) @@ -830,8 +838,7 @@ fixed = TRUE if(on && !floating && !fixed) animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1) - sleep(10) - animate(src, pixel_y = pixel_y - 2, time = 10, loop = -1) + animate(pixel_y = pixel_y - 2, time = 10, loop = -1) floating = TRUE else if(((!on || fixed) && floating)) animate(src, pixel_y = get_standard_pixel_y_offset(), time = 10) @@ -1108,7 +1115,7 @@ return ..() /mob/living/hit_by_thrown_mob(mob/living/C, datum/thrownthing/throwingdatum, damage, mob_hurt, self_hurt) - if(C == src || flying || !density) + if(C == src || HAS_TRAIT(src, TRAIT_FLYING) || !density) return playsound(src, 'sound/weapons/punch1.ogg', 50, 1) if(mob_hurt) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 13b6818105d6..074081bba93f 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -265,10 +265,6 @@ // 100 volume - 20 seconds of lost sleep AdjustSleeping(-(volume * 0.2 SECONDS), bound_lower = 1 SECONDS) // showers cannot save you from sleeping gas, 1 second lower boundary -//This is called when the mob is thrown into a dense turf -/mob/living/proc/turf_collision(turf/T, speed) - src.take_organ_damage(speed*5) - /mob/living/proc/near_wall(direction, distance=1) var/turf/T = get_step(get_turf(src),direction) var/turf/last_turf = src.loc diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 0471a39bcad2..56427c70ef26 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -15,12 +15,12 @@ var/health = 100 //A mob's health //Damage related vars, NOTE: THESE SHOULD ONLY BE MODIFIED BY PROCS - var/bruteloss = 0 //Brutal damage caused by brute force (punching, being clubbed by a toolbox ect... this also accounts for pressure damage) - var/oxyloss = 0 //Oxygen depravation damage (no air in lungs) - var/toxloss = 0 //Toxic damage caused by being poisoned or radiated - var/fireloss = 0 //Burn damage caused by being way too hot, too cold or burnt. - var/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims - var/staminaloss = 0 //Stamina damage, or exhaustion. You recover it slowly naturally, and are stunned if it gets too high. Holodeck and hallucinations deal this. + VAR_PROTECTED/bruteloss = 0 //Brutal damage caused by brute force (punching, being clubbed by a toolbox ect... this also accounts for pressure damage) + VAR_PROTECTED/oxyloss = 0 //Oxygen depravation damage (no air in lungs) + VAR_PROTECTED/toxloss = 0 //Toxic damage caused by being poisoned or radiated + VAR_PROTECTED/fireloss = 0 //Burn damage caused by being way too hot, too cold or burnt. + VAR_PROTECTED/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims + VAR_PROTECTED/staminaloss = 0 //Stamina damage, or exhaustion. You recover it slowly naturally, and are stunned if it gets too high. Holodeck and hallucinations deal this. var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out. @@ -41,6 +41,9 @@ var/mob_biotypes = MOB_ORGANIC var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. + /// movable atom we are buckled to + var/atom/movable/buckling + var/ventcrawler = VENTCRAWLER_NONE var/list/icon/pipes_shown = list() var/last_played_vent @@ -102,6 +105,9 @@ ///This variable is the chance for a mob to automatically dodge a bullet. Useful for admins, and applied to some mobs by default, such as the malfunctioning drone mobs. var/advanced_bullet_dodge_chance = 0 + /// List of traits that should be applied on Initialize + var/list/initial_traits = list() + /* Taste Vars */ diff --git a/code/modules/mob/living/living_life.dm b/code/modules/mob/living/living_life.dm index afba51de5a4a..ebd0c6781e5f 100644 --- a/code/modules/mob/living/living_life.dm +++ b/code/modules/mob/living/living_life.dm @@ -2,7 +2,7 @@ set waitfor = FALSE set invisibility = 0 - if(flying && !floating) //TODO: Better floating + if(HAS_TRAIT(src, TRAIT_FLYING) && !floating) //TODO: Better floating float(TRUE) if(client || registered_z) // This is a temporary error tracker to make sure we've caught everything diff --git a/code/modules/mob/living/silicon/ai/ai_mob.dm b/code/modules/mob/living/silicon/ai/ai_mob.dm index c182f2bd41cb..3fc1f085738d 100644 --- a/code/modules/mob/living/silicon/ai/ai_mob.dm +++ b/code/modules/mob/living/silicon/ai/ai_mob.dm @@ -774,6 +774,9 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(!isturf(loc)) to_chat(src, "You aren't in your core!") return + if(M.occupant && !can_dominate_mechs) + to_chat(src, "This exosuit has a pilot and cannot be controlled.") + return if(M) M.transfer_ai(AI_MECH_HACK, src, usr) //Called om the mech itself. diff --git a/code/modules/mob/living/silicon/robot/robot_mob.dm b/code/modules/mob/living/silicon/robot/robot_mob.dm index ebd84809c5de..43d30fcc1b49 100644 --- a/code/modules/mob/living/silicon/robot/robot_mob.dm +++ b/code/modules/mob/living/silicon/robot/robot_mob.dm @@ -965,11 +965,9 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( else if(!src.module && U.require_module) to_chat(user, "The borg must choose a module before it can be upgraded!") else - if(!user.drop_item()) - return - if(U.action(src)) + if(U.action(user, src)) user.visible_message("[user] applied [U] to [src].", "You apply [U] to [src].") - U.forceMove(src) + else if(istype(W, /obj/item/mmi_radio_upgrade)) if(!opened) diff --git a/code/modules/mob/living/silicon/robot/robot_module_actions.dm b/code/modules/mob/living/silicon/robot/robot_module_actions.dm index 058a4a7fdc5e..ffc0064e0639 100644 --- a/code/modules/mob/living/silicon/robot/robot_module_actions.dm +++ b/code/modules/mob/living/silicon/robot/robot_module_actions.dm @@ -36,6 +36,56 @@ button_overlay_icon = 'icons/obj/clothing/glasses.dmi' button_overlay_icon_state = "meson" +#define MODE_NONE "" +#define MODE_MESON "meson" +#define MODE_TRAY "t-ray" +#define MODE_RAD "radiation" +#define RAD_RANGE 5 + +/datum/action/innate/robot_sight/engineering_scanner + name = "Engineering Scanner Vision" + sight_mode = BORGMESON + button_overlay_icon = 'icons/obj/clothing/glasses.dmi' + button_overlay_icon_state = "trayson-meson" + var/list/mode_list = list(MODE_NONE = MODE_MESON, MODE_MESON = MODE_TRAY, MODE_TRAY = MODE_RAD, MODE_RAD = MODE_NONE) + var/mode = MODE_NONE + +/datum/action/innate/robot_sight/engineering_scanner/Activate() + var/mob/living/silicon/robot/R = owner + mode = mode_list[mode] + to_chat(owner, "You turn your enhanced optics [mode ? "to [mode] mode." : "off."]") + button_overlay_icon_state = "trayson-[mode]" + + if(mode == MODE_MESON) + R.sight_mode |= sight_mode + else + R.sight_mode &= ~sight_mode + R.update_sight() + + if(mode != (MODE_NONE || MODE_MESON)) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + +/datum/action/innate/robot_sight/engineering_scanner/Deactivate() + return + +/datum/action/innate/robot_sight/engineering_scanner/process() + var/mob/living/silicon/robot/user = owner + if(!user.client) + return + switch(mode) + if(MODE_TRAY) + t_ray_scan(user) + if(MODE_RAD) + user.show_rads(RAD_RANGE) + +#undef MODE_NONE +#undef MODE_MESON +#undef MODE_TRAY +#undef MODE_RAD +#undef RAD_RANGE + /datum/action/innate/robot_magpulse name = "Magnetic pulse" button_overlay_icon = 'icons/obj/clothing/shoes.dmi' diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index d5635f674f82..7ab9a7379a5e 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -447,7 +447,7 @@ name = "engineering robot module" module_type = "Engineer" subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor) - module_actions = list(/datum/action/innate/robot_sight/meson, /datum/action/innate/robot_magpulse) + module_actions = list(/datum/action/innate/robot_sight/engineering_scanner, /datum/action/innate/robot_magpulse) basic_modules = list( /obj/item/flash/cyborg, /obj/item/rpd, @@ -458,7 +458,6 @@ /obj/item/crowbar/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/cyborg, - /obj/item/t_scanner, /obj/item/analyzer, /obj/item/geiger_counter/cyborg, /obj/item/holosign_creator/engineering, diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 9f3f30662a8c..bb0c73ac7d6c 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -1,4 +1,5 @@ #define BATON_COOLDOWN 3.5 SECONDS +#define BOT_REBATON_THRESHOLD 5 SECONDS /mob/living/simple_animal/bot/ed209 name = "\improper ED-209 Security Robot" @@ -279,6 +280,10 @@ back_to_idle() return + if(target.stat == DEAD) + back_to_idle() // Stop beating up the dead guy + return + if(Adjacent(target) && isturf(target.loc) && !baton_delayed) // if right next to perp stun_attack(target) if(!lasercolor) @@ -296,7 +301,7 @@ if(BOT_PREP_ARREST) // preparing to arrest target // see if he got away. If he's no no longer adjacent or inside a closet or about to get up, we hunt again. - if(!Adjacent(target) || !isturf(target.loc) || world.time - target.stam_regen_start_time < 4 SECONDS && target.getStaminaLoss() <= 100) + if(!Adjacent(target) || !isturf(target.loc) || target.stam_regen_start_time - world.time <= BOT_REBATON_THRESHOLD || target.getStaminaLoss() <= 100) back_to_hunt() return @@ -321,7 +326,7 @@ back_to_idle() return - if(!Adjacent(target) || !isturf(target.loc) || (target.loc != target_lastloc && world.time - target.stam_regen_start_time < 4 SECONDS && target.getStaminaLoss() <= 100)) //if he's changed loc and about to get up or not adjacent or got into a closet, we prep arrest again. + if(!Adjacent(target) || !isturf(target.loc) || (target.loc != target_lastloc && target.stam_regen_start_time - world.time <= BOT_REBATON_THRESHOLD || target.getStaminaLoss() <= 100)) //if he's changed loc and about to get up or not adjacent or got into a closet, we prep arrest again. back_to_hunt() return @@ -582,3 +587,4 @@ back_to_idle() #undef BATON_COOLDOWN +#undef BOT_REBATON_THRESHOLD diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index db8e397271e5..5112d7e62681 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -330,7 +330,7 @@ if(emagged) // actually emagged bike_horn() else - if(C in view(4, src) && !spam_flag) //keep the range short for patrolling + if((C in view(4, src)) && !spam_flag) //keep the range short for patrolling bike_horn() continue diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 05704ccb59b0..82b3a1c68802 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -1,4 +1,5 @@ #define BATON_COOLDOWN 3.5 SECONDS +#define BOT_REBATON_THRESHOLD 5 SECONDS /mob/living/simple_animal/bot/secbot name = "\improper Securitron" @@ -330,6 +331,10 @@ back_to_idle() return + if(target.stat == DEAD) + back_to_idle() // Stop beating up the dead guy + return + if(Adjacent(target) && isturf(target.loc) && !baton_delayed) // if right next to perp stun_attack(target) mode = BOT_PREP_ARREST @@ -341,7 +346,7 @@ if(BOT_PREP_ARREST) // preparing to arrest target // see if he got away. If he's no no longer adjacent or inside a closet or about to get up, we hunt again. - if(!Adjacent(target) || !isturf(target.loc) || world.time - target.stam_regen_start_time < 4 SECONDS && target.getStaminaLoss() <= 100) + if(!Adjacent(target) || !isturf(target.loc) || target.stam_regen_start_time - world.time <= BOT_REBATON_THRESHOLD|| target.getStaminaLoss() <= 100) back_to_hunt() return // target is stunned and nearby @@ -362,12 +367,12 @@ back_to_idle() - if(BOT_ARREST) + if(BOT_ARREST) // Fun fact: This is not called if(!target || target.handcuffed) back_to_idle() return - if(!Adjacent(target) || !isturf(target.loc) || (target.loc != target_lastloc && target.AmountWeakened() < 4 SECONDS)) //if he's changed loc and about to get up or not adjacent or got into a closet, we prep arrest again. + if(!Adjacent(target) || !isturf(target.loc) || (target.loc != target_lastloc && target.stam_regen_start_time - world.time <= BOT_REBATON_THRESHOLD || target.getStaminaLoss() <= 100)) //if he's changed loc and about to get up or not adjacent or got into a closet, we prep arrest again. back_to_hunt() return //Try arresting again if the target escapes. @@ -407,7 +412,7 @@ if((C.stat) || (C.handcuffed)) continue - if((C.name == oldtarget_name) && (world.time < last_found + 100)) + if((C.name == oldtarget_name) && (world.time < last_found + 5 SECONDS)) continue threatlevel = C.assess_threat(src) @@ -470,3 +475,4 @@ ..() #undef BATON_COOLDOWN +#undef BOT_REBATON_THRESHOLD diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index cdb8d9cb0003..906518cb9414 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -18,7 +18,6 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 faction = list("cult") - flying = TRUE pressure_resistance = 100 universal_speak = TRUE AIStatus = AI_OFF //normal constructs don't have AI diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index 5d28b33ca164..b70492d567a0 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -57,7 +57,6 @@ gloves = /obj/item/clothing/gloves/combat l_ear = /obj/item/radio/headset mask = /obj/item/clothing/mask/gas/syndicate - back = /obj/item/mod/control/pre_equipped/traitor_elite r_pocket = /obj/item/tank/internals/emergency_oxygen id = /obj/item/card/id @@ -94,25 +93,25 @@ name = "Corpse of a Pirate Gunner" -/obj/effect/mob_spawn/human/corpse/russian - name = "Russian" - mob_name = "Russian" +/obj/effect/mob_spawn/human/corpse/soviet + name = "Soviet" + mob_name = "Soviet" hair_style = "bald" facial_hair_style = "shaved" - outfit = /datum/outfit/russiancorpse + outfit = /datum/outfit/sovietcorpse -/datum/outfit/russiancorpse - name = "Corpse of a Russian" +/datum/outfit/sovietcorpse + name = "Corpse of a Soviet" uniform = /obj/item/clothing/under/costume/soviet shoes = /obj/item/clothing/shoes/jackboots head = /obj/item/clothing/head/bearpelt -/obj/effect/mob_spawn/human/corpse/russian/ranged - outfit = /datum/outfit/russiancorpse/ranged +/obj/effect/mob_spawn/human/corpse/soviet/ranged + outfit = /datum/outfit/sovietcorpse/ranged -/datum/outfit/russiancorpse/ranged - name = "Corpse of a Ranged Russian" +/datum/outfit/sovietcorpse/ranged + name = "Corpse of a Ranged Soviet" head = /obj/item/clothing/head/ushanka diff --git a/code/modules/mob/living/simple_animal/friendly/butterfly.dm b/code/modules/mob/living/simple_animal/friendly/butterfly.dm index ba878cd423e3..e928fd850a83 100644 --- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm +++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm @@ -16,17 +16,13 @@ harm_intent_damage = 1 friendly = "nudges" density = FALSE - flying = TRUE pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = VENTCRAWLER_ALWAYS mob_size = MOB_SIZE_TINY mob_biotypes = MOB_ORGANIC | MOB_BUG butcher_results = list(/obj/item/food/meat = 0) gold_core_spawnable = FRIENDLY_SPAWN - -/mob/living/simple_animal/butterfly/Initialize(mapload) //Not the poor butterfly! - . = ..() - ADD_TRAIT(src, TRAIT_EDIBLE_BUG, "edible_bug") + initial_traits = list(TRAIT_FLYING, TRAIT_EDIBLE_BUG) /mob/living/simple_animal/butterfly/New() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index e8064e07b772..2ceba7b97492 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -166,10 +166,12 @@ spawn(rand(20,50)) if(stat == CONSCIOUS && M) icon_state = icon_living - var/list/responses = list( "[src] looks at you imploringly.", - "[src] looks at you pleadingly", - "[src] looks at you with a resigned expression.", - "[src] seems resigned to its fate.") + var/list/responses = list( + "[src] looks at you imploringly.", + "[src] looks at you pleadingly", + "[src] looks at you with a resigned expression.", + "[src] seems resigned to its fate." + ) to_chat(M, pick(responses)) else ..() diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index ae48d73f78bb..b07a72482e6a 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -217,6 +217,8 @@ if(!gibbed) gib() + SSticker.record_biohazard_start(BIOHAZARD_BLOB) + /mob/living/simple_animal/mouse/blobinfected/get_scooped(mob/living/carbon/grabber) to_chat(grabber, "You try to pick up [src], but they slip out of your grasp!") to_chat(src, "[src] tries to pick you up, but you wriggle free of their grasp!") diff --git a/code/modules/mob/living/simple_animal/hostile/bat.dm b/code/modules/mob/living/simple_animal/hostile/bat.dm index 1604aab392e1..b51af42343dd 100644 --- a/code/modules/mob/living/simple_animal/hostile/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/bat.dm @@ -17,7 +17,6 @@ maxHealth = 20 health = 20 mob_size = MOB_SIZE_TINY - flying = TRUE harm_intent_damage = 8 melee_damage_lower = 10 melee_damage_upper = 10 @@ -35,6 +34,8 @@ faction = list("scarybat") gold_core_spawnable = HOSTILE_SPAWN + initial_traits = list(TRAIT_FLYING) + /mob/living/simple_animal/hostile/scarybat/Initialize(mapload, mob/living/L) . = ..() if(istype(L)) diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 2172fa667ead..931b75d3c0c1 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -32,7 +32,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 - faction = list("russian") + faction = list("soviet") gold_core_spawnable = HOSTILE_SPAWN footstep_type = FOOTSTEP_MOB_CLAW diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 5d05c17c5eb5..dd9b7433f8f6 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -34,7 +34,6 @@ density = FALSE mob_size = MOB_SIZE_TINY mob_biotypes = MOB_ORGANIC | MOB_BUG - flying = TRUE gold_core_spawnable = HOSTILE_SPAWN search_objects = TRUE //have to find those plant trays! @@ -43,6 +42,8 @@ minbodytemp = 0 del_on_death = TRUE + initial_traits = list(TRAIT_FLYING) + var/datum/reagent/beegent = null //hehe, beegent var/obj/structure/beebox/beehome = null var/idle = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 2f402fbe4446..ff1588298fec 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -34,10 +34,11 @@ minbodytemp = 0 maxbodytemp = 1500 faction = list("carp") - flying = TRUE pressure_resistance = 200 gold_core_spawnable = HOSTILE_SPAWN + initial_traits = list(TRAIT_FLYING, TRAIT_SHOCKIMMUNE) + var/random_color = TRUE //if the carp uses random coloring var/rarechance = 1 //chance for rare color variant @@ -63,7 +64,6 @@ /mob/living/simple_animal/hostile/carp/Initialize(mapload) . = ..() - ADD_TRAIT(src, TRAIT_SHOCKIMMUNE, SPECIES_TRAIT) carp_randomify(rarechance) update_icons() diff --git a/code/modules/mob/living/simple_animal/hostile/floorcluwne.dm b/code/modules/mob/living/simple_animal/hostile/floorcluwne.dm index dd33037817bd..6f6144d44fa6 100644 --- a/code/modules/mob/living/simple_animal/hostile/floorcluwne.dm +++ b/code/modules/mob/living/simple_animal/hostile/floorcluwne.dm @@ -316,7 +316,7 @@ if(T.density) forceMove(H.loc) if(H.buckled) - H.buckled.unbuckle_mob(H, force = TRUE) + H.unbuckle(force = TRUE) manifested = TRUE Manifest() to_chat(H, "You feel the floor closing in on your feet!") diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm index 75b18ec3ea1c..07def89e3300 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm @@ -631,7 +631,6 @@ Difficulty: Hard weather_immunities = list("lava","ash") atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 - flying = TRUE check_friendly_fire = 1 ranged = TRUE projectilesound = 'sound/weapons/gunshots/gunshot.ogg' @@ -652,6 +651,7 @@ Difficulty: Hard ranged_ignores_vision = TRUE stat_attack = UNCONSCIOUS maxbodytemp = INFINITY + initial_traits = list(TRAIT_FLYING) var/range = 3 var/mob/living/simple_animal/hostile/megafauna/ancient_robot/core = null var/fake_max_hp = 300 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index ad8b1f7becbf..400e87cc01d0 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -30,7 +30,6 @@ Difficulty: Medium icon = 'icons/mob/lavaland/blood_drunk.dmi' mob_biotypes = MOB_ORGANIC | MOB_HUMANOID light_color = "#E4C7C5" - flying = FALSE speak_emote = list("roars") speed = 3 move_to_delay = 3 @@ -61,6 +60,8 @@ Difficulty: Medium /datum/action/innate/megafauna_attack/kinetic_accelerator, /datum/action/innate/megafauna_attack/transform_weapon) + initial_traits = list() // Don't want to inherit flight from parent type /megafauna/ + /obj/item/gps/internal/miner icon_state = null gpstag = "Resonant Signal" diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index 4536949c081c..9edf3e3d0001 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -284,7 +284,7 @@ Difficulty: Medium hotspot.recolor() T.hotspot_expose(700,50,1) for(var/mob/living/L in T.contents) - if(L in hit_list || L == source) + if((L in hit_list) || L == source) continue hit_list += L L.adjustFireLoss(20) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 18739b9e6ead..29f5fb080390 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -11,7 +11,6 @@ light_range = 3 faction = list("mining", "boss") weather_immunities = list("lava","ash") - flying = TRUE robust_searching = TRUE ranged_ignores_vision = TRUE stat_attack = DEAD @@ -29,6 +28,7 @@ flags_2 = IMMUNE_TO_SHUTTLECRUSH_2 mouse_opacity = MOUSE_OPACITY_ICON dodging = FALSE // This needs to be false until someone fixes megafauna pathing so they dont lag-switch teleport at you (09-15-2023) + initial_traits = list(TRAIT_FLYING) var/list/crusher_loot var/medal_type var/score_type = BOSS_SCORE diff --git a/code/modules/mob/living/simple_animal/hostile/mining/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining/basilisk.dm index 5fd8f2003215..f5514b40fbc9 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/basilisk.dm @@ -81,11 +81,11 @@ speak_emote = list("telepathically cries") attack_sound = 'sound/weapons/bladeslice.ogg' stat_attack = UNCONSCIOUS - flying = TRUE robust_searching = TRUE crusher_loot = /obj/item/crusher_trophy/watcher_wing loot = list() butcher_results = list(/obj/item/stack/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1) + initial_traits = list(TRAIT_FLYING) /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/magmawing name = "magmawing watcher" diff --git a/code/modules/mob/living/simple_animal/hostile/mining/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining/elites/elite.dm index 88c8bb0a212f..fa47cc5ff25b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/elites/elite.dm @@ -413,7 +413,7 @@ While using this makes the system rely on OnFire, it still gives options for tim text += "If teleported to the Station by jaunter, you are allowed to attack people on Station, until you get killed." to_chat(mychild, text.Join(" ")) - qdel(GetComponent(/datum/component/proximity_monitor)) + DeleteComponent(/datum/component/proximity_monitor) /obj/item/tumor_shard name = "tumor shard" diff --git a/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm index 6b2611e196e7..395e32f4157b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/elites/herald.dm @@ -209,8 +209,8 @@ del_on_death = TRUE is_mirror = TRUE move_resist = MOVE_FORCE_OVERPOWERING // no dragging your mirror around - flying = TRUE var/mob/living/simple_animal/hostile/asteroid/elite/herald/my_master = null + initial_traits = list(TRAIT_FLYING) /mob/living/simple_animal/hostile/asteroid/elite/herald/mirror/Initialize(mapload) . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm index 02f2d897d5ed..a16ab19c1368 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm @@ -74,7 +74,6 @@ speed = 3 maxHealth = 1 health = 1 - flying = TRUE harm_intent_damage = 5 melee_damage_lower = 2 melee_damage_upper = 2 @@ -87,13 +86,13 @@ pass_flags = PASSTABLE | PASSMOB density = FALSE del_on_death = TRUE + initial_traits = list(TRAIT_FLYING) /mob/living/simple_animal/hostile/asteroid/hivelordbrood/Initialize(mapload) . = ..() addtimer(CALLBACK(src, PROC_REF(death)), 100) AddComponent(/datum/component/swarming) - /mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood name = "blood brood" desc = "A living string of blood and alien materials." diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm index eafb92e7dab0..c9696fd08792 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm @@ -24,7 +24,7 @@ attack_sound = 'sound/weapons/bite.ogg' speak_emote = list("gnashes") faction = list("carp") - flying = TRUE + initial_traits = list(TRAIT_FLYING) var/carp_color = "carp" //holder for icon set var/static/list/carp_colors = list(\ diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm index 1b9db4ba39a7..da8df5e98d74 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm @@ -29,13 +29,14 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 - flying = TRUE pressure_resistance = 300 gold_core_spawnable = NO_SPAWN //too spooky for science faction = list("undead") // did I mention ghost loot = list(/obj/item/food/ectoplasm) del_on_death = TRUE + initial_traits = list(TRAIT_FLYING) + /mob/living/simple_animal/hostile/retaliate/ghost/Process_Spacemove(check_drift = 0) return 1 diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/soviet.dm similarity index 51% rename from code/modules/mob/living/simple_animal/hostile/russian.dm rename to code/modules/mob/living/simple_animal/hostile/soviet.dm index 36d810921332..def10ae15fc2 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/soviet.dm @@ -1,11 +1,11 @@ -/mob/living/simple_animal/hostile/russian - name = "Russian" - desc = "For the Motherland!" +/mob/living/simple_animal/hostile/soviet + name = "Soviet" + desc = "For the Union!" icon = 'icons/mob/simple_human.dmi' - icon_state = "russianmelee" - icon_living = "russianmelee" - icon_dead = "russianmelee_dead" // Does not actually exist. del_on_death. - icon_gib = "russianmelee_gib" // Does not actually exist. del_on_death. + icon_state = "sovietmelee" + icon_living = "sovietmelee" + icon_dead = "sovietmelee_dead" // Does not actually exist. del_on_death. + icon_gib = "sovietmelee_gib" // Does not actually exist. del_on_death. mob_biotypes = MOB_ORGANIC | MOB_HUMANOID speak_chance = 0 turns_per_move = 5 @@ -22,27 +22,27 @@ attack_sound = 'sound/weapons/punch1.ogg' a_intent = INTENT_HARM unsuitable_atmos_damage = 15 - faction = list("russian") + faction = list("soviet") status_flags = CANPUSH - loot = list(/obj/effect/mob_spawn/human/corpse/russian, + loot = list(/obj/effect/mob_spawn/human/corpse/soviet, /obj/item/kitchen/knife, - /obj/item/salvage/loot/russian) + /obj/item/salvage/loot/soviet) del_on_death = TRUE sentience_type = SENTIENCE_OTHER footstep_type = FOOTSTEP_MOB_SHOE -/mob/living/simple_animal/hostile/russian/ranged - icon_state = "russianranged" - icon_living = "russianranged" +/mob/living/simple_animal/hostile/soviet/ranged + icon_state = "sovietranged" + icon_living = "sovietranged" ranged = TRUE retreat_distance = 5 minimum_distance = 5 projectilesound = 'sound/weapons/gunshots/gunshot.ogg' casingtype = /obj/item/ammo_casing/a357 - loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged, /obj/item/gun/projectile/revolver/mateba) + loot = list(/obj/effect/mob_spawn/human/corpse/soviet/ranged, /obj/item/gun/projectile/revolver/mateba) -/mob/living/simple_animal/hostile/russian/ranged/mosin - loot = list(/obj/effect/mob_spawn/human/corpse/russian/ranged, +/mob/living/simple_animal/hostile/soviet/ranged/mosin + loot = list(/obj/effect/mob_spawn/human/corpse/soviet/ranged, /obj/item/gun/projectile/shotgun/boltaction, - /obj/item/salvage/loot/russian) + /obj/item/salvage/loot/soviet) casingtype = /obj/item/ammo_casing/a762 diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm index c4a887baf233..3021c468cbd6 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm @@ -411,12 +411,13 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 mob_size = MOB_SIZE_TINY - flying = TRUE bubble_icon = "syndibot" gold_core_spawnable = HOSTILE_SPAWN del_on_death = TRUE deathmessage = "is smashed into pieces!" + initial_traits = list(TRAIT_FLYING) + /mob/living/simple_animal/hostile/viscerator/Initialize(mapload) . = ..() AddComponent(/datum/component/swarming) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm index 9332ac77b6fb..87e254f7e442 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm @@ -34,8 +34,7 @@ canlay = 0 hasnested = TRUE - spider_spawnfrequency = 300 // 30 seconds - var/grant_prob = 25 // 25% chance every spider_spawnfrequency seconds to gain 1 egg + spider_spawnfrequency = 120 SECONDS var/spider_max_children = 8 @@ -68,9 +67,6 @@ to_chat(src, "You cannot generate eggs while hiding in [loc].") return - if(!prob(grant_prob)) - return - var/list/spider_array = CountSpidersDetailed(TRUE) var/brood_count = spider_array["all"] @@ -100,8 +96,7 @@ to_chat(src, "You have [canlay] eggs available to lay.") /mob/living/simple_animal/hostile/poison/terror_spider/queen/princess/show_egg_timer() - var/average_timer = (1 / (grant_prob / 100)) * (spider_spawnfrequency / 10) - to_chat(src, "Too soon to attempt that again. You generate a new egg every [average_timer] seconds, on average.") + to_chat(src, "Too soon to attempt that again. You generate a new egg every [spider_spawnfrequency / 10] seconds.") /mob/living/simple_animal/hostile/poison/terror_spider/queen/princess/NestMode() // Princesses don't nest. However, we still need to override this in case an AI princess calls it. diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 3d34ba457180..4968aabfb456 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -84,7 +84,7 @@ //Parrots are kleptomaniacs. This variable ... stores the item a parrot is holding. var/obj/item/held_item = null - flying = TRUE + initial_traits = list(TRAIT_FLYING) gold_core_spawnable = FRIENDLY_SPAWN /mob/living/simple_animal/parrot/New() diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index 54cd08666f0e..8129b49d1c83 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -27,10 +27,10 @@ universal_speak = TRUE faction = list("cult") status_flags = CANPUSH - flying = TRUE loot = list(/obj/item/food/ectoplasm) del_on_death = TRUE deathmessage = "lets out a contented sigh as their form unwinds." + initial_traits = list(TRAIT_FLYING, TRAIT_SHOCKIMMUNE) var/holy = FALSE /mob/living/simple_animal/shade/attackby(obj/item/O, mob/user) //Marker -Agouri diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index b819db355e02..8ce7b533a7dd 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -194,7 +194,7 @@ return /* - * String associated list returns a cached list. + * String associated list returns a cached list. * This is like a static list to pass into the element below. */ atmos_requirements = string_assoc_list(atmos_requirements) @@ -354,7 +354,8 @@ icon = initial(icon) icon_state = icon_living density = initial(density) - flying = initial(flying) + if(TRAIT_FLYING in initial_traits) + ADD_TRAIT(src, TRAIT_FLYING, INNATE_TRAIT) if(collar_type) collar_type = "[initial(collar_type)]" regenerate_icons() @@ -364,7 +365,7 @@ . = ..() if(!.) return FALSE - flying = FALSE + REMOVE_TRAIT(src, TRAIT_FLYING, INNATE_TRAIT) walk(src, 0) if(nest) nest.spawned_mobs -= src diff --git a/code/modules/mob/living/simple_animal/slime/slime_death.dm b/code/modules/mob/living/simple_animal/slime/slime_death.dm index 3136f8f07700..fcd7eb8d2b47 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_death.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_death.dm @@ -22,7 +22,7 @@ E.Grant(src) revive() regenerate_icons() - update_name() + update_appearance(UPDATE_NAME) return set_stat(DEAD) //Temporarily set to dead for icon updates diff --git a/code/modules/mob/living/simple_animal/slime/slime_mob.dm b/code/modules/mob/living/simple_animal/slime/slime_mob.dm index 304f9ed74c0a..08682a4717ad 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_mob.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_mob.dm @@ -113,7 +113,7 @@ /mob/living/simple_animal/slime/proc/set_colour(new_colour) colour = new_colour - update_name() + update_appearance(UPDATE_NAME) slime_mutation = mutation_table(colour) var/sanitizedcolour = replacetext(colour, " ", "") coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]") diff --git a/code/modules/mob/living/simple_animal/slime/slime_powers.dm b/code/modules/mob/living/simple_animal/slime/slime_powers.dm index f933d3388709..cb536acb6bba 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_powers.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_powers.dm @@ -118,7 +118,7 @@ visible_message("[src] has let go of [buckled]!", \ "I stopped feeding.") layer = initial(layer) - buckled.unbuckle_mob(src,force=TRUE) + unbuckle(force=TRUE) /mob/living/simple_animal/slime/proc/Evolve() if(stat) @@ -132,7 +132,7 @@ for(var/datum/action/innate/slime/evolve/E in actions) E.Remove(src) regenerate_icons() - update_name() + update_appearance(UPDATE_NAME) else to_chat(src, "I am not ready to evolve yet...") else diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 0ce5b3273d59..5cd8ae5ed495 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -670,7 +670,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ G.affecting.ret_grab(L, 1) if(!flag) if(L.master == src) - var/list/temp = list( ) + var/list/temp = list() temp += L.container //L = null qdel(L) @@ -1360,6 +1360,10 @@ GLOBAL_LIST_INIT(holy_areas, typecacheof(list( alpha = initial(alpha) add_to_all_human_data_huds() +/mob/living/carbon/human/reset_visibility() + ..() + alpha = get_alpha() + /mob/proc/make_invisible() invisibility = INVISIBILITY_LEVEL_TWO alpha = 128 diff --git a/code/modules/mob/mob_misc_procs.dm b/code/modules/mob/mob_misc_procs.dm index 24f71570e459..6ce785a7c7ae 100644 --- a/code/modules/mob/mob_misc_procs.dm +++ b/code/modules/mob/mob_misc_procs.dm @@ -194,7 +194,8 @@ message_admins("No ghosts were willing to take control of [key_name_admin(M)])") /proc/check_zone(zone) - if(!zone) return "chest" + if(!zone) + return "chest" switch(zone) if("eyes") zone = "head" @@ -214,18 +215,28 @@ if(prob(probability)) return zone - var/t = rand(1, 18) // randomly pick a different zone, or maybe the same one - switch(t) - if(1) return "head" - if(2) return "chest" - if(3 to 4) return "l_arm" - if(5 to 6) return "l_hand" - if(7 to 8) return "r_arm" - if(9 to 10) return "r_hand" - if(11 to 12) return "l_leg" - if(13 to 14) return "l_foot" - if(15 to 16) return "r_leg" - if(17 to 18) return "r_foot" + var/random_zone = rand(1, 18) // randomly pick a different zone, or maybe the same one + switch(random_zone) + if(1) + return "head" + if(2) + return "chest" + if(3 to 4) + return "l_arm" + if(5 to 6) + return "l_hand" + if(7 to 8) + return "r_arm" + if(9 to 10) + return "r_hand" + if(11 to 12) + return "l_leg" + if(13 to 14) + return "l_foot" + if(15 to 16) + return "r_leg" + if(17 to 18) + return "r_foot" return zone @@ -265,24 +276,40 @@ phrase = html_decode(phrase) var/leng = length_char(phrase) var/counter = length_char(phrase) - var/newphrase = "" - var/newletter = "" + var/list/newphrase = list() + var/newletter while(counter >= 1) - newletter=copytext_char(phrase, (leng - counter) + 1, (leng - counter) + 2) - if(rand(1,3)==3) - if(lowertext(newletter)=="o") newletter="u"; if(lowertext(newletter)=="о") newletter="у"; if(lowertext(newletter)=="э") newletter="и" - if(lowertext(newletter)=="s") newletter="ch"; if(lowertext(newletter)=="с") newletter="сш"; if(lowertext(newletter)=="г") newletter="х" - if(lowertext(newletter)=="a") newletter="ah"; if(lowertext(newletter)=="а") newletter="ах" - if(lowertext(newletter)=="c") newletter="k"; if(lowertext(newletter)=="ц") newletter="сц" - switch(rand(1,15)) - if(1,3,5,8) newletter="[lowertext(newletter)]" - if(2,4,6,15) newletter="[uppertext(newletter)]" - if(7) newletter+=pick(slurletters) + newletter = copytext_char(phrase, (leng - counter) + 1, (leng - counter) + 2) + if(prob(33.33)) + if(lowertext(newletter) == "o") + newletter = "u" + if(lowertext(newletter) == "о") + newletter = "у" + if(lowertext(newletter) == "э") + newletter = "и" + if(lowertext(newletter) == "s") + newletter = "ch" + if(lowertext(newletter) == "с") + newletter = "сш" + if(lowertext(newletter) == "a") + newletter = "ah" + if(lowertext(newletter) == "а") + newletter = "ах" + if(lowertext(newletter) == "c") + newletter = "k" + if(lowertext(newletter) == "ц") + newletter = "сц" + if(prob(60)) + if(prob(11.11)) + newletter += pick(slurletters) else - pass() - newphrase+="[newletter]" - counter-=1 - return newphrase + if(prob(50)) + newletter = lowertext(newletter) + else + newletter = uppertext(newletter) + newphrase += newletter + counter -= 1 + return newphrase.Join("") /proc/stutter(phrase, stamina_loss = 0, robotic = FALSE) phrase = html_decode(phrase) @@ -676,49 +703,42 @@ rename_character(oldname, newname) -/proc/cultslur(n) // Inflicted on victims of a stun talisman - var/phrase = html_decode(n) +/proc/cultslur(phrase) + phrase = html_decode(phrase) var/leng = length_char(phrase) var/counter = length_char(phrase) - var/newphrase="" - var/newletter="" - while(counter>=1) - newletter=copytext_char(phrase, (leng - counter) + 1, (leng - counter) + 2) - if(rand(1,2)==2) - if(lowertext(newletter)=="o") - newletter="u" - if(lowertext(newletter)=="t") - newletter="ch" - if(lowertext(newletter)=="a") - newletter="ah" - if(lowertext(newletter)=="u") - newletter="oo" - if(lowertext(newletter)=="c") - newletter=" NAR " - if(lowertext(newletter)=="s") - newletter=" SIE " - if(rand(1,4)==4) - if(newletter==" ") - newletter=" no hope... " - if(newletter=="H") - newletter=" IT COMES... " - - switch(rand(1,15)) - if(1) - newletter="'" - if(2) - newletter+="agn" - if(3) - newletter="fth" - if(4) - newletter="nglu" - if(5) - newletter="glor" + var/list/newphrase = list() + var/newletter + while(counter >= 1) + newletter = copytext_char(phrase, (leng - counter) + 1, (leng - counter) + 2) + if(prob(50)) + if(lowertext(newletter) == "o") + newletter = "u" + if(lowertext(newletter) == "t") + newletter = "ch" + if(lowertext(newletter) == "a") + newletter = "ah" + if(lowertext(newletter) == "u") + newletter = "oo" + if(lowertext(newletter) == "c") + newletter = " NAR " + if(lowertext(newletter) == "s") + newletter = " SIE " + if(prob(25)) + if(newletter == " ") + newletter = " no hope... " + if(newletter == "H") + newletter = " IT COMES... " + + if(prob(33.33)) + if(prob(20)) + newletter += "agn" else - pass() + newletter = pick("'", "fth", "nglu", "glor") - newphrase+="[newletter]";counter-=1 - return newphrase + newphrase += newletter + counter -= 1 + return newphrase.Join("") // Why does this exist? /mob/proc/get_preference(toggleflag) diff --git a/code/modules/mob/mob_vars.dm b/code/modules/mob/mob_vars.dm index 627a6bad0729..605a1043d4f4 100644 --- a/code/modules/mob/mob_vars.dm +++ b/code/modules/mob/mob_vars.dm @@ -35,7 +35,7 @@ var/computer_id = null var/lastattacker = null // real name of the person doing the attacking var/lastattackerckey = null // their ckey - var/list/attack_log_old = list( ) + var/list/attack_log_old = list() var/list/debug_log = null var/last_known_ckey = null // Used in logging @@ -63,7 +63,6 @@ var/timeofdeath = 0 //Living var/bodytemperature = 310.055 //98.7 F - var/flying = FALSE var/nutrition = NUTRITION_LEVEL_FED + 50 //Carbon var/satiety = 0 //Carbon var/hunger_drain = HUNGER_FACTOR // how quickly the mob gets hungry; largely utilized by species. @@ -75,8 +74,6 @@ var/lastKnownIP = null /// movable atoms buckled to this mob var/atom/movable/buckled = null //Living - /// movable atom we are buckled to - var/atom/movable/buckling var/obj/item/l_hand = null //Living var/obj/item/r_hand = null //Living diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index f6fe9420aa0f..48f7e6cf8cb3 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -151,6 +151,10 @@ // SS220 ADDITION START - TTS220 if(!check_tts_seed_ready()) return FALSE + + if(!can_use_species(src, client.prefs.active_character.species)) + to_chat(src, alert("You are currently not whitelisted to play [client.prefs.active_character.species].")) + return FALSE // SS220 ADDITION END ready = !ready diff --git a/code/modules/mob/new_player/new_player_login.dm b/code/modules/mob/new_player/new_player_login.dm index 76a2dab353ee..ffd7902f7c00 100644 --- a/code/modules/mob/new_player/new_player_login.dm +++ b/code/modules/mob/new_player/new_player_login.dm @@ -1,7 +1,7 @@ /mob/new_player/Login() update_Login_details() //handles setting lastKnownIP and computer_id for use by the ban systems as well as checking for multikeying if(GLOB.join_motd) - to_chat(src, "
[GLOB.join_motd]
") + to_chat(src, "
[GLOB.join_motd]
") if(!mind) mind = new /datum/mind(key) diff --git a/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm index 341453b7ca1e..77b6e6985f4c 100644 --- a/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories/sprite_accessories.dm @@ -373,6 +373,10 @@ name = "Corgi Shirt" icon_state = "shirt_corgi" +/datum/sprite_accessory/undershirt/shirt_en + name = "Borgi Shirt" // E-N! + icon_state = "shirt_borgi" + /datum/sprite_accessory/undershirt/shirt_clown name = "Clown Shirt" icon_state = "shirt_clown" diff --git a/code/modules/mod/mod_actions.dm b/code/modules/mod/mod_actions.dm index fc10b7448e00..9fbf636001c4 100644 --- a/code/modules/mod/mod_actions.dm +++ b/code/modules/mod/mod_actions.dm @@ -102,10 +102,12 @@ ..() module = linked_module button_overlay_icon_state = module.icon_state + button_background_icon_state = ((module.module_type == MODULE_TOGGLE && module.active) ? "bg_mod_active" : "bg_mod") if(linked_module.allow_flags & MODULE_ALLOW_INCAPACITATED) // clears check hands check_flags = AB_CHECK_CONSCIOUS Grant(user) + RegisterSignals(module, list(COMSIG_MODULE_ACTIVATED, COMSIG_MODULE_DEACTIVATED), PROC_REF(linked_button_update)) /datum/action/item_action/mod/pinned_module/Destroy() UnregisterSignal(module, list(COMSIG_MODULE_ACTIVATED, COMSIG_MODULE_DEACTIVATED, COMSIG_MODULE_USED)) @@ -127,3 +129,8 @@ if(!.) return module.on_select() + +/datum/action/item_action/mod/pinned_module/proc/linked_button_update() + if(module.module_type != MODULE_PASSIVE) + button_background_icon_state = (module.active ? "bg_mod_active" : "bg_mod") + UpdateButtons() diff --git a/code/modules/mod/mod_activation.dm b/code/modules/mod/mod_activation.dm index 93e7c2100f25..5dd2e207e106 100644 --- a/code/modules/mod/mod_activation.dm +++ b/code/modules/mod/mod_activation.dm @@ -223,7 +223,7 @@ module.on_suit_deactivation() STOP_PROCESSING(SSobj, src) update_speed() - update_icon_state() + update_icon(UPDATE_ICON_STATE) wearer.regenerate_icons() /// Quickly deploys all the suit parts and if successful, seals them and turns on the suit. Intended mostly for outfits. diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm index 77fedf4c5292..d526ae37a71b 100644 --- a/code/modules/mod/mod_construction.dm +++ b/code/modules/mod/mod_construction.dm @@ -250,7 +250,7 @@ if(part.use_tool(src, user, 0, volume = 30)) to_chat(user, "Assembly unscrewed.") construction_step = SCREWED_ASSEMBLY_STEP - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/mod/construction/shell/update_icon_state() . = ..() diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index af4e47587a8d..4f5b79b684fd 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -127,14 +127,14 @@ if(length(req_access)) locked = TRUE new_core?.install(src) - helmet = new /obj/item/clothing/head/mod(src) + helmet = build_head() // SS220 EDIT - original: new /obj/item/clothing/head/mod(src) mod_parts += helmet - chestplate = new /obj/item/clothing/suit/mod(src) + chestplate = build_suit() // SS220 EDIT - original: new /obj/item/clothing/suit/mod(src) chestplate.allowed += theme.allowed_suit_storage mod_parts += chestplate - gauntlets = new /obj/item/clothing/gloves/mod(src) + gauntlets = build_gloves() // SS220 EDIT - original: new /obj/item/clothing/gloves/mod(src) mod_parts += gauntlets - boots = new /obj/item/clothing/shoes/mod(src) + boots = build_shoes() // SS220 EDIT - original: new /obj/item/clothing/shoes/mod(src) mod_parts += boots var/list/all_parts = mod_parts + src for(var/obj/item/part as anything in all_parts) diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm index c2ce61cab7e7..40d9abe1a3a4 100644 --- a/code/modules/mod/mod_core.dm +++ b/code/modules/mod/mod_core.dm @@ -86,7 +86,7 @@ if(cell) install_cell(cell) RegisterSignal(mod, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) - RegisterSignal(mod, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) + RegisterSignal(mod, COMSIG_CLICK_CTRL, PROC_REF(on_ctrl_click)) RegisterSignal(mod, COMSIG_MOD_WEARER_SET, PROC_REF(on_wearer_set)) if(mod.wearer) on_wearer_set(mod, mod.wearer) @@ -94,7 +94,7 @@ /obj/item/mod/core/standard/uninstall() if(!QDELETED(cell)) cell.forceMove(drop_location()) - UnregisterSignal(mod, list(COMSIG_PARENT_EXAMINE, COMSIG_ATOM_ATTACK_HAND, COMSIG_MOD_WEARER_SET)) + UnregisterSignal(mod, list(COMSIG_PARENT_EXAMINE, COMSIG_CLICK_CTRL, COMSIG_MOD_WEARER_SET)) if(mod.wearer) on_wearer_unset(mod, mod.wearer) return ..() @@ -179,10 +179,10 @@ if(!mod.open) return - examine_text += cell ? "You could remove the cell with an empty hand." : "You could use a cell on it to install one." + examine_text += cell ? "You could remove the cell while in hand or being worn with Ctrl-Click." : "You could use a cell on it to install one." -/obj/item/mod/core/standard/proc/on_attack_hand(datum/source, mob/living/user) - SIGNAL_HANDLER +/obj/item/mod/core/standard/proc/on_ctrl_click(datum/source, mob/living/user) + SIGNAL_HANDLER // COMSIG_CLICK_CTRL if(mod.seconds_electrified && charge_amount() && mod.shock(user)) return COMPONENT_CANCEL_ATTACK_CHAIN diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index d841c96b886e..635b99e03d14 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -1113,13 +1113,14 @@ armor = list(MELEE = 20, BULLET = 5, LASER = 10, ENERGY = 10, BOMB = 50, RAD = 50, FIRE = 150, ACID = 150) /datum/mod_theme/responsory - name = "responsory" - desc = "A high-speed rescue suit by Nanotrasen, intended for its' emergency response teams." - extended_desc = "A streamlined suit of Nanotrasen design, these sleek black suits are only worn by \ - elite emergency response personnel to help save the day. While the slim and nimble design of the suit \ - cuts the ceramics and ablatives in it down, dropping the protection, \ - it keeps the wearer safe from the harsh void of space while sacrificing no speed whatsoever. \ - While wearing it you feel an extreme deference to darkness. " + name = "\improper 'Ward' responsory" + desc = "A high-tech combat modsuit designed and produced by Nanotrasen. Well armored, environmentally sealed, and outfitted with all manner of useful gadgetry. \ + The pinnacle of corporate security hardware." + extended_desc = "A streamlined suit of powered armor produced entirely in-house by the Nanotrasen Corporation, the NA-22 'Ward' rapid response suit is one of the finest combat modsuits available on the market today. \ + Equipped with a fire-resistant polybenzimidazole bodyglove and lightweight nano-polymer impact panels underneath a steel armored shell, the NA-22 offers reliable protection \ + while retaining combat mobility. Internally, the NA-22 comes pre-loaded with NTOS-11 on a five-year subscription, which enables unparallelled customization options in conjunction \ + with the Ward's unusually generous design specifications. Naturally, the NA-22 has a price tag to match its quality, and is thus only found within Nanotrasen's \ + personal response units, as well as among the wealthiest of Sector PMCs and mercenary groups." default_skin = "responsory" armor_type_1 = /obj/item/mod/armor/mod_theme_responsory diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm index 770c256ff26d..051e5e8658e7 100644 --- a/code/modules/mod/mod_types.dm +++ b/code/modules/mod/mod_types.dm @@ -80,6 +80,7 @@ ) default_pins = list( /obj/item/mod/module/magboot, + /obj/item/mod/module/firefighting_tank ) @@ -97,6 +98,7 @@ default_pins = list( /obj/item/mod/module/jetpack/advanced, /obj/item/mod/module/magboot/advanced, + /obj/item/mod/module/firefighting_tank ) /obj/item/mod/control/pre_equipped/loader @@ -484,7 +486,8 @@ /obj/item/mod/control/pre_equipped/debug theme = /datum/mod_theme/debug applied_core = /obj/item/mod/core/infinite - applied_modules = list( //one of every type of module, for testing if they all work correctly // boy this isn't even 25% the modules + /// One of every type of module, for testing if they all work correctly // boy this isn't even 25% the modules + applied_modules = list( /obj/item/mod/module/storage/bluespace, /obj/item/mod/module/welding, /obj/item/mod/module/flashlight, diff --git a/code/modules/mod/modules/_modules.dm b/code/modules/mod/modules/_modules.dm index 35f6b60db828..6ba416447e6a 100644 --- a/code/modules/mod/modules/_modules.dm +++ b/code/modules/mod/modules/_modules.dm @@ -362,7 +362,7 @@ return var/core_path = pick(accepted_anomalies) core = new core_path(src) - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/mod/module/anomaly_locked/Destroy() QDEL_NULL(core) @@ -407,7 +407,7 @@ core = item to_chat(user, "You install [item].") playsound(src, 'sound/machines/click.ogg', 30, TRUE) - update_icon_state() + update_icon(UPDATE_ICON_STATE) core.forceMove(src) else return ..() @@ -424,7 +424,7 @@ if(Adjacent(user) && !issilicon(user)) user.put_in_hands(core) core = null - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/item/mod/module/anomaly_locked/update_icon_state() icon_state = initial(icon_state) + (core ? "-core" : "") diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index 835de26f048a..909cb209e504 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -288,7 +288,8 @@ RegisterSignal(mod.wearer, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, PROC_REF(on_unarmed_attack)) RegisterSignal(mod.wearer, COMSIG_ATOM_BULLET_ACT, PROC_REF(on_bullet_act)) RegisterSignals(mod.wearer, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_PARENT_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_HITBY, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACK_PAW), PROC_REF(unstealth)) - animate(mod.wearer, alpha = stealth_alpha, time = 1.5 SECONDS) + mod.wearer.set_alpha_tracking(stealth_alpha, src, update_alpha = FALSE) + animate(mod.wearer, alpha = mod.wearer.get_alpha(), time = 1.5 SECONDS) drain_power(use_power_cost) /obj/item/mod/module/stealth/on_deactivation(display_message = TRUE, deleting = FALSE) @@ -298,7 +299,8 @@ if(bumpoff) UnregisterSignal(mod.wearer, COMSIG_LIVING_MOB_BUMP) UnregisterSignal(mod.wearer, list(COMSIG_HUMAN_MELEE_UNARMED_ATTACK, COMSIG_MOB_ITEM_ATTACK, COMSIG_PARENT_ATTACKBY, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_BULLET_ACT, COMSIG_ATOM_HITBY, COMSIG_ATOM_HULK_ATTACK, COMSIG_ATOM_ATTACK_PAW)) - animate(mod.wearer, alpha = 255, time = 1.5 SECONDS) + mod.wearer.set_alpha_tracking(ALPHA_VISIBLE, src, update_alpha = FALSE) + animate(mod.wearer, alpha = mod.wearer.get_alpha(), time = 1.5 SECONDS) /obj/item/mod/module/stealth/proc/unstealth(datum/source) SIGNAL_HANDLER @@ -504,7 +506,7 @@ /obj/item/mod/module/energy_shield/on_suit_deactivation(deleting = FALSE) var/datum/component/shielded/shield = mod.GetComponent(/datum/component/shielded) charges = shield.current_charges - qdel(shield) + shield.RemoveComponent() UnregisterSignal(mod.wearer, COMSIG_HUMAN_CHECK_SHIELDS) /obj/item/mod/module/energy_shield/proc/shield_reaction(mob/living/carbon/human/owner, @@ -579,7 +581,7 @@ return FALSE var/datum/component/shielded/shield = mod.GetComponent(/datum/component/shielded) charges = shield.current_charges - qdel(shield) + shield.RemoveComponent() UnregisterSignal(mod.wearer, COMSIG_HUMAN_CHECK_SHIELDS) REMOVE_TRAIT(mod.wearer, TRAIT_SHOCKIMMUNE, UNIQUE_TRAIT_SOURCE(src)) diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm index 69720a0e3549..617ef90756cb 100644 --- a/code/modules/mod/modules/modules_service.dm +++ b/code/modules/mod/modules/modules_service.dm @@ -38,7 +38,8 @@ /obj/item/mod/module/waddle/on_suit_deactivation(deleting = FALSE) if(!deleting) - qdel(mod.boots.GetComponent(/datum/component/squeak)) + mod.boots.DeleteComponent(/datum/component/squeak) + mod.wearer.RemoveElement(/datum/element/waddling) //Boot heating - dries floors like galoshes/dry diff --git a/code/modules/newscaster/obj/newscaster.dm b/code/modules/newscaster/obj/newscaster.dm index f086ec662bb2..872bf29a8c1a 100644 --- a/code/modules/newscaster/obj/newscaster.dm +++ b/code/modules/newscaster/obj/newscaster.dm @@ -645,18 +645,9 @@ GLOBAL_LIST_EMPTY(allNewscasters) /obj/machinery/newscaster/proc/get_scanned_user(mob/user) . = list(name = "Unknown", security = user.can_admin_interact()) if(ishuman(user)) - var/mob/living/carbon/human/M = user - // No ID, no luck - if(!M.wear_id) - return - // Try to get the ID - var/obj/item/card/id/ID - if(istype(M.wear_id, /obj/item/pda)) - var/obj/item/pda/P = M.wear_id - ID = P.id - else if(istype(M.wear_id, /obj/item/card/id)) - ID = M.wear_id - if(istype(ID)) + var/mob/living/carbon/human/human_user = user + var/obj/item/card/id/ID = human_user.get_id_card() + if(ID) return list(name = "[ID.registered_name] ([ID.assignment])", security = has_access(list(), list(ACCESS_SECURITY), ID.access)) else if(issilicon(user)) var/mob/living/silicon/ai_user = user diff --git a/code/modules/ninja/suit/ninja_head.dm b/code/modules/ninja/suit/ninja_head.dm index ace19a439234..fa095416b75b 100644 --- a/code/modules/ninja/suit/ninja_head.dm +++ b/code/modules/ninja/suit/ninja_head.dm @@ -5,5 +5,6 @@ name = "ninja hood" icon_state = "s-ninja" item_state = "s-ninja_hood" + flags_inv = HIDEEARS|HIDEEYES|HIDEFACE armor = list(MELEE = 75, BULLET = 50, LASER = 20, ENERGY = 10, BOMB = 20, RAD = 15, FIRE = INFINITY, ACID = INFINITY) blockTracking = 1 diff --git a/code/modules/ninja/suit/ninja_mask.dm b/code/modules/ninja/suit/ninja_mask.dm index b61258440bd0..e024ea822a5b 100644 --- a/code/modules/ninja/suit/ninja_mask.dm +++ b/code/modules/ninja/suit/ninja_mask.dm @@ -10,7 +10,7 @@ Contents: name = "ninja mask" desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement." icon_state = "s-ninja(norm)" - item_state = "s-ninja_mask" + item_state = "s-ninja(norm)" sprite_sheets = list( "Vox" = 'icons/mob/clothing/species/vox/mask.dmi', diff --git a/code/modules/ninja/suit/ninja_suit.dm b/code/modules/ninja/suit/ninja_suit.dm index 47d7fbe3c904..b5ee1aedda7b 100644 --- a/code/modules/ninja/suit/ninja_suit.dm +++ b/code/modules/ninja/suit/ninja_suit.dm @@ -14,6 +14,7 @@ Contents: item_state = "s-ninja_suit" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/melee/baton, /obj/item/tank/internals, /obj/item/stock_parts/cell) slowdown = 0 + flags_inv = HIDEJUMPSUIT|HIDETAIL armor = list(MELEE = 75, BULLET = 50, LASER = 20, ENERGY = 10, BOMB = 20, RAD = 15, FIRE = INFINITY, ACID = INFINITY) dyeable = FALSE diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index c8a08ca60696..24ef741d3547 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -18,7 +18,7 @@ GLOBAL_LIST_EMPTY(adminfaxes) var/list/reply_to = null /datum/fax/admin/New() - GLOB.adminfaxes += src + return // Fax panel - lets admins check all faxes sent during the round /client/proc/fax_panel() diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index d653f5917750..0188fcbb5b60 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -299,22 +299,22 @@ GLOBAL_LIST_EMPTY(fax_blacklist) var/success = 0 for(var/obj/machinery/photocopier/faxmachine/F in GLOB.allfaxes) if(F.department == destination) - success = F.receivefax(copyitem) + var/datum/fax/A = new /datum/fax() + A.name = copyitem.name + A.from_department = department + A.to_department = destination + A.origin = src + A.message = copyitem + A.sent_by = sender + A.sent_at = world.time + + success = F.receivefax(A) if(success) - var/datum/fax/F = new /datum/fax() - F.name = copyitem.name - F.from_department = department - F.to_department = destination - F.origin = src - F.message = copyitem - F.sent_by = sender - F.sent_at = world.time - visible_message("[src] beeps, \"Message transmitted successfully.\"") else visible_message("[src] beeps, \"Error transmitting message.\"") -/obj/machinery/photocopier/faxmachine/proc/receivefax(obj/item/incoming) +/obj/machinery/photocopier/faxmachine/proc/receivefax(datum/fax/incoming) if(stat & (BROKEN|NOPOWER)) return FALSE @@ -327,16 +327,31 @@ GLOBAL_LIST_EMPTY(fax_blacklist) addtimer(CALLBACK(src, PROC_REF(print_fax), incoming), 2 SECONDS) return TRUE -/obj/machinery/photocopier/faxmachine/proc/print_fax(obj/item/incoming) - if(istype(incoming, /obj/item/paper)) - papercopy(incoming) - else if(istype(incoming, /obj/item/photo)) - photocopy(incoming) - else if(istype(incoming, /obj/item/paper_bundle)) - bundlecopy(incoming) +/obj/machinery/photocopier/faxmachine/proc/print_fax(datum/fax/incoming) + var/obj/item/new_copy = null + if(istype(incoming.message, /obj/item/paper)) + new_copy = papercopy(incoming.message) + else if(istype(incoming.message, /obj/item/photo)) + new_copy = photocopy(incoming.message) + else if(istype(incoming.message, /obj/item/paper_bundle)) + new_copy = bundlecopy(incoming.message) else return + // Store the fax that was received in the admin room in adminfaxes + // Fixes issue where deleting the original would make it unreadable in the admin panel + if(istype(incoming, /datum/fax/admin)) + var/datum/fax/admin/A = new /datum/fax/admin() + A.name = new_copy.name + A.from_department = incoming.from_department + A.to_department = incoming.to_department + A.origin = incoming.origin + A.message = new_copy + A.sent_by = incoming.sent_by + A.sent_at = incoming.sent_at + + GLOB.adminfaxes += A + use_power(active_power_consumption) /obj/machinery/photocopier/faxmachine/proc/log_fax(mob/sender, destination) @@ -387,7 +402,7 @@ GLOBAL_LIST_EMPTY(fax_blacklist) message_admins(sender, "SYNDICATE FAX", destination, copyitem, "#DC143C") for(var/obj/machinery/photocopier/faxmachine/F in GLOB.allfaxes) if(F.department == destination) - F.receivefax(copyitem) + F.receivefax(A) visible_message("[src] beeps, \"Message transmitted successfully.\"") log_fax(sender, destination) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 5ea585121ca9..03009f4c219e 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -319,7 +319,7 @@ add_hiddenprint(usr) // No more forging nasty documents as someone else, you jerks if(!is_pen(item_write) && !istype(item_write, /obj/item/toy/crayon)) return - if(loc != usr && !Adjacent(usr) && !((istype(loc, /obj/item/clipboard) || istype(loc, /obj/item/folder)) && (usr in get_turf(src) || loc.Adjacent(usr)))) + if(loc != usr && !Adjacent(usr) && !((istype(loc, /obj/item/clipboard) || istype(loc, /obj/item/folder)) && ((usr in get_turf(src)) || loc.Adjacent(usr)))) return // If paper is not in usr, then it must be near them, or in a clipboard or folder, which must be in or near usr input_element = parsepencode(input_element, item_write, usr) // Encode everything from pencode to html if(id != "end") @@ -651,11 +651,11 @@ name = "Teleporter Instructions" info = "

Teleporter Instruction


  1. Install circuit board, glass and wiring to complete Teleporter Control Console
  2. Use a screwdriver, wirecutter and screwdriver again on the Teleporter Station to connect it
  3. Set destination with Teleporter Control Computer
  4. Activate Teleporter Hub with Teleporter Station
" -/obj/item/paper/russiantraitorobj +/obj/item/paper/soviettraitorobj name = "paper- 'Mission Objectives'" info = "The Syndicate have cunningly disguised a Syndicate Uplink as your PDA. Simply enter the code \"678 Bravo\" into the ringtone select to unlock its hidden features.

Objective #1. Kill the God damn AI in a fire blast that it rocks the station. Success!
Objective #2. Escape alive. Failed." -/obj/item/paper/russiannuclearoperativeobj +/obj/item/paper/sovietnuclearoperativeobj name = "paper- 'Objectives of a Nuclear Operative'" info = "Objective #1: Destroy the station with a nuclear device." diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 3b866e1b186a..4bd0eef2f6a2 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -72,7 +72,7 @@ else if(is_pen(W) || istype(W, /obj/item/toy/crayon)) usr << browse("", "window=PaperBundle[UID()]") //Closes the dialog - P = src[page] + P = get_page() P.attackby(W, user, params) update_icon() @@ -106,7 +106,7 @@ /obj/item/paper_bundle/proc/show_content(mob/user as mob) var/dat = {""} - var/obj/item/W = src[page] + var/obj/item/W = get_page() switch(screen) if(0) dat+= "
" @@ -120,11 +120,11 @@ dat+= "
Previous Page
" dat+= "
Remove [(istype(W, /obj/item/paper)) ? "paper" : "photo"]


" dat+= "
" - if(istype(src[page], /obj/item/paper)) + if(istype(W, /obj/item/paper)) var/obj/item/paper/P = W dat += P.show_content(usr, view = 0) usr << browse(dat, "window=PaperBundle[UID()]") - else if(istype(src[page], /obj/item/photo)) + else if(istype(W, /obj/item/photo)) var/obj/item/photo/P = W usr << browse_rsc(P.img, "tmp_photo.png") usr << browse(dat + "[P.name]" \ @@ -162,11 +162,11 @@ playsound(loc, "pageturn", 50, 1) if(href_list["remove"]) - var/obj/item/W = src[page] + var/obj/item/W = get_page() usr.put_in_hands(W) to_chat(usr, "You remove [W] from the bundle.") if(amount == 1) - var/obj/item/paper/P = src[1] + var/obj/item/paper/P = get_page(1) usr.unEquip(src) usr.put_in_hands(P) usr.unset_machine() // Ensure the bundle GCs @@ -234,6 +234,7 @@ desc = "A single sheet of paper." if(photos) desc += "\nThere [photos == 1 ? "is a photo" : "are [photos] photos"] attached to it." + /obj/item/paper_bundle/update_icon_state() if(length(contents)) var/obj/item/paper/P = contents[1] @@ -267,4 +268,9 @@ . += sheet . += "clip" - update_desc() + update_appearance(UPDATE_DESC) + +/obj/item/paper_bundle/proc/get_page(page_override) + if(page_override) + return contents[page_override] + return contents[page] diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index ebe264a44717..a1395f0f19a3 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -179,19 +179,25 @@ name = "fancy pen" desc = "A fancy metal pen. An inscription on one side reads, \"L.L. - L.R.\"" icon_state = "fancypen" - container_type = DRAINABLE //cannot be refilled, love can be extracted for use in other items with syringe + container_type = (DRAINABLE | TRANSPARENT) //cannot be refilled, but pax can be extracted for use in other items with syringe origin_tech = "engineering=4;syndicate=2" transfer_amount = 25 // 4 Dosages instead of 2 -/obj/item/pen/sleepy/love/attack(mob/living/M, mob/user) - var/can_transfer = reagents.total_volume && M.reagents +/obj/item/pen/sleepy/love/Initialize(mapload) . = ..() - if(can_transfer && .) - M.apply_status_effect(STATUS_EFFECT_PACIFIED) //pacifies for 40 seconds - return TRUE + START_PROCESSING(SSobj, src) + +/obj/item/pen/sleepy/love/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() /obj/item/pen/sleepy/love/fill_pen() - reagents.add_reagent("love", 100) + reagents.add_reagent("pax", 100) // strong and unique reagent, making you a pacifist for a long time. + +/obj/item/pen/sleepy/love/process() + if(reagents.total_volume < 100) + reagents.add_reagent("pax", 0.5) // slow refill over time. In average 1 dose every 100 seconds. + /obj/item/pen/sleepy/undisguised name = "sleepy pen" diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm index 8bfc36d51321..b5155a3acb32 100644 --- a/code/modules/pda/PDA.dm +++ b/code/modules/pda/PDA.dm @@ -160,8 +160,12 @@ GLOBAL_LIST_EMPTY(PDAs) . = ..() if(id) . += image('icons/goonstation/objects/pda_overlay.dmi', id.icon_state) + if(length(notifying_programs)) - . += image('icons/obj/pda.dmi', "pda-r") + if(icon_state == "pda-library") + . += image('icons/obj/pda.dmi', "pda-r-library") + else + . += image('icons/obj/pda.dmi', "pda-r") /obj/item/pda/proc/close(mob/user) SStgui.close_uis(src) diff --git a/code/modules/pda/pdas.dm b/code/modules/pda/pdas.dm index 3b848311b7ed..4191bd58f10e 100644 --- a/code/modules/pda/pdas.dm +++ b/code/modules/pda/pdas.dm @@ -16,7 +16,7 @@ /obj/item/pda/detective default_cartridge = /obj/item/cartridge/detective - icon_state = "pda-security" + icon_state = "pda-detective" default_pen = /obj/item/pen/multi /obj/item/pda/warden @@ -79,6 +79,11 @@ icon_state = "pda-rd" default_pen = /obj/item/pen/rd +/obj/item/pda/heads/qm + default_cartridge = /obj/item/cartridge/qm + icon_state = "pda-qm" + default_pen = /obj/item/pen/qm + /obj/item/pda/captain default_cartridge = /obj/item/cartridge/captain icon_state = "pda-captain" @@ -88,12 +93,12 @@ /obj/item/pda/heads/ntrep default_cartridge = /obj/item/cartridge/supervisor - icon_state = "pda-h" + icon_state = "pda-ntr" default_pen = /obj/item/pen/multi/fountain /obj/item/pda/heads/magistrate default_cartridge = /obj/item/cartridge/supervisor - icon_state = "pda-h" + icon_state = "pda-magistrate" default_pen = /obj/item/pen/multi/gold /obj/item/pda/heads/blueshield @@ -125,11 +130,6 @@ default_cartridge = /obj/item/cartridge/cargo icon_state = "pda-cargo" -/obj/item/pda/quartermaster - default_cartridge = /obj/item/cartridge/qm - icon_state = "pda-qm" - default_pen = /obj/item/pen/qm - /obj/item/pda/shaftminer icon_state = "pda-miner" @@ -174,7 +174,7 @@ default_pen = /obj/item/pen/multi /obj/item/pda/clear - icon_state = "pda-transp" + icon_state = "pda-clear" desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition with a transparent case." model_name = "Thinktronic 5230 Personal Data Assistant Deluxe Special Max Turbo Limited Edition" diff --git a/code/modules/power/apc/apc.dm b/code/modules/power/apc/apc.dm index e1f99ebb895a..f818ad845c98 100644 --- a/code/modules/power/apc/apc.dm +++ b/code/modules/power/apc/apc.dm @@ -131,7 +131,6 @@ armor = list(MELEE = 20, BULLET = 20, LASER = 10, ENERGY = 100, BOMB = 30, RAD = 100, FIRE = 90, ACID = 50) ..() GLOB.apcs += src - GLOB.apcs = sortAtom(GLOB.apcs) wires = new(src) @@ -179,6 +178,7 @@ A.powernet.powernet_apc = src if(!mapload) + GLOB.apcs = sortAtom(GLOB.apcs) return electronics_state = APC_ELECTRONICS_SECURED diff --git a/code/modules/power/engines/singularity/singularity.dm b/code/modules/power/engines/singularity/singularity.dm index 43d6337f619f..a043f9999fb6 100644 --- a/code/modules/power/engines/singularity/singularity.dm +++ b/code/modules/power/engines/singularity/singularity.dm @@ -336,7 +336,7 @@ var/movement_dir = pick(GLOB.alldirs - last_failed_movement) - if(get_turf(src) == target || !target) + if(!target || get_dist(src, target) <= 2) assign_target() if(force_move) movement_dir = force_move diff --git a/code/modules/power/engines/supermatter/supermatter.dm b/code/modules/power/engines/supermatter/supermatter.dm index f52cc040ba5c..0e3773f6b43b 100644 --- a/code/modules/power/engines/supermatter/supermatter.dm +++ b/code/modules/power/engines/supermatter/supermatter.dm @@ -559,6 +559,8 @@ var/mole_crunch_bonus = 0 if(combined_gas > MOLE_CRUNCH_THRESHOLD) mole_crunch_bonus = 7000 //This adds 7000 EER worth of power to the SM. This should make mole crunch potentially worthy as a SM setup, if not risky. More stable than the anomalies, but very easy to push over the edge. Don't forget, a high EER setup can harvest power through zaps + if(!has_been_powered) // Nice try, no free no risk power + enable_for_the_first_time() radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus / 10))) + mole_crunch_bonus) //Power * 0.55 * a value between 1 and 0.8 @@ -602,7 +604,7 @@ //After this point power is lowered //This wraps around to the begining of the function //Handle high power zaps/anomaly generation - if(power > POWER_PENALTY_THRESHOLD || damage > damage_penalty_point) //If the power is above 5000 or if the damage is above 550 + if(power > POWER_PENALTY_THRESHOLD || damage > damage_penalty_point || combined_gas > MOLE_CRUNCH_THRESHOLD) //If the power is above 5000, if the damage is above 550, or mole crushing var/range = 4 zap_cutoff = 1500 if(removed && removed.return_pressure() > 0 && removed.temperature() > 0) @@ -641,9 +643,9 @@ if(prob(5)) supermatter_anomaly_gen(src, FLUX_ANOMALY, rand(5, 10)) - if(power > SEVERE_POWER_PENALTY_THRESHOLD && prob(5) || prob(1)) + if(power > SEVERE_POWER_PENALTY_THRESHOLD && prob(5) || prob(1) || combined_gas > MOLE_CRUNCH_THRESHOLD && prob(5)) supermatter_anomaly_gen(src, GRAVITATIONAL_ANOMALY, rand(5, 10)) - if((power > SEVERE_POWER_PENALTY_THRESHOLD && prob(2)) || (prob(0.3) && power > POWER_PENALTY_THRESHOLD)) + if((power > SEVERE_POWER_PENALTY_THRESHOLD && prob(2)) || (prob(0.3) && power > POWER_PENALTY_THRESHOLD) || combined_gas > MOLE_CRUNCH_THRESHOLD && prob(2)) supermatter_anomaly_gen(src, BLUESPACE_ANOMALY, rand(5, 10)) if(prob(15)) @@ -1062,7 +1064,7 @@ step_towards(P,center) /obj/machinery/atmospherics/supermatter_crystal/proc/supermatter_anomaly_gen(turf/anomalycenter, type = FLUX_ANOMALY, anomalyrange = 5) - var/turf/L = pick(orange(anomalyrange, anomalycenter)) + var/turf/L = pick(RANGE_TURFS(anomalyrange, anomalycenter)) if(L) switch(type) if(FLUX_ANOMALY) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 4e7c27fb5e55..b56a3151cdca 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -58,11 +58,16 @@ GLOBAL_LIST_EMPTY(gravity_generators) /obj/machinery/gravity_generator/main/station/Initialize(mapload) . = ..() - AddComponent(/datum/component/multitile, 1, list( + AddComponent(/datum/component/multitile, list( list(1, 1, 1), list(1, MACH_CENTER, 1), - list(0, 0, 0), )) + + var/area/machine_area = get_area(src) + parent_area_type = machine_area.get_top_parent_type() + if(parent_area_type) + areas = typesof(parent_area_type) + update_gen_list() set_power() @@ -87,6 +92,8 @@ GLOBAL_LIST_EMPTY(gravity_generators) var/current_overlay = null var/construction_state = GRAV_NEEDS_WELDING var/overlay_state = "activated" + var/parent_area_type + var/areas = list() /obj/machinery/gravity_generator/main/examine(mob/user) . = ..() @@ -268,24 +275,21 @@ GLOBAL_LIST_EMPTY(gravity_generators) change_power_mode(on ? ACTIVE_POWER_USE : IDLE_POWER_USE) if(gravity) // If we turned on - if(generators_in_level() == 0) // And there's no other gravity generators on this z level + if(generators_in_area() == 0) // And there's no other gravity generators on this z level alert = TRUE investigate_log("was brought online and is now producing gravity for this level.", "gravity") message_admins("The gravity generator was brought online. ([src_area.name])") for(var/area/A in world) - if(!is_station_level(A.z)) - continue - A.gravitychange(TRUE, A) + if((A.type in areas) && A.z == z) + A.gravitychange(TRUE, A) - else if(generators_in_level() == 1) // Turned off, and there is only one gravity generator on the Z level + else if(generators_in_area() == 1) // Turned off, and there is only one gravity generator on the Z level alert = TRUE investigate_log("was brought offline and there is now no gravity for this level.", "gravity") message_admins("The gravity generator was brought offline with no backup generator. ([src_area.name])") for(var/area/A in world) - if(!is_station_level(A.z)) - continue - A.gravitychange(FALSE, A) - + if((A.type in areas) && A.z == z) + A.gravitychange(FALSE, A) update_icon() update_gen_list() if(alert) @@ -340,7 +344,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) radiation_pulse(get_turf(L), 600, 2) /** - * Shake everyone on the z level and play an alarm to let them know that gravity was enagaged/disenagaged. + * Shake everyone on the area list and play an alarm to let them know that gravity was enagaged/disenagaged. */ /obj/machinery/gravity_generator/main/proc/shake_everyone() var/turf/our_turf = get_turf(src) @@ -349,30 +353,27 @@ GLOBAL_LIST_EMPTY(gravity_generators) for(var/shaken in GLOB.mob_list) var/mob/M = shaken var/turf/their_turf = get_turf(M) - if(their_turf?.z == our_turf.z) + if(their_turf && ((get_area(their_turf)).type in typesof(parent_area_type)) && (M.z == z)) M.update_gravity(M.mob_has_gravity()) if(M.client) shake_camera(M, 15, 1) M.playsound_local(our_turf, null, 100, TRUE, 0.5, S = alert_sound) -// TODO: Make the gravity generator cooperate with the space manager -/obj/machinery/gravity_generator/main/proc/generators_in_level() - var/turf/T = get_turf(src) - if(!T) - return FALSE - if(GLOB.gravity_generators["[T.z]"]) - return length(GLOB.gravity_generators["[T.z]"]) - return FALSE - /obj/machinery/gravity_generator/main/proc/update_gen_list() - var/turf/T = get_turf(src) - if(T) - if(!GLOB.gravity_generators["[T.z]"]) - GLOB.gravity_generators["[T.z]"] = list() + if(parent_area_type) + if(!GLOB.gravity_generators["[parent_area_type]"]) + GLOB.gravity_generators["[parent_area_type]"] = list() if(on) - GLOB.gravity_generators["[T.z]"] |= src + GLOB.gravity_generators["[parent_area_type]"] |= src else - GLOB.gravity_generators["[T.z]"] -= src + GLOB.gravity_generators["[parent_area_type]"] -= src + +/obj/machinery/gravity_generator/main/proc/generators_in_area() + if(!parent_area_type) + return FALSE + if(GLOB.gravity_generators["[parent_area_type]"]) + return length(GLOB.gravity_generators["[parent_area_type]"]) + return FALSE // Misc @@ -385,7 +386,6 @@ GLOBAL_LIST_EMPTY(gravity_generators) animate(src, transform = M * 40, time = 0.8 SECONDS, alpha = 128) QDEL_IN(src, 0.8 SECONDS) - /obj/item/paper/gravity_gen name = "paper - 'Generate your own gravity!'" info = {"

Generating Gravity For Dummies

diff --git a/code/modules/power/lights.dm b/code/modules/power/lights.dm index 04de3076a22a..74780dc48b75 100644 --- a/code/modules/power/lights.dm +++ b/code/modules/power/lights.dm @@ -2,18 +2,16 @@ // // Consists of light fixtures (/obj/machinery/light) and light tube/bulb items (/obj/item/light) -// status values shared between lighting fixtures and items -#define LIGHT_OK 0 -#define LIGHT_EMPTY 1 -#define LIGHT_BROKEN 2 -#define LIGHT_BURNED 3 - #define LIGHT_ON_DELAY_LOWER 1 SECONDS #define LIGHT_ON_DELAY_UPPER 3 SECONDS #define MAXIMUM_SAFE_BACKUP_CHARGE 600 #define EMERGENCY_LIGHT_POWER_USE 0.5 +#define LIGHT_CONSTRUCT_EMPTY_FRAME 1 +#define LIGHT_CONSTRUCT_WIRED 2 +#define LIGHT_CONSTRUCT_COMPLETED 3 + /** * # Light fixture frame * @@ -27,84 +25,73 @@ icon = 'icons/obj/lighting.dmi' icon_state = "tube-construct-stage1" anchored = TRUE - layer = 5 + layer = FLY_LAYER max_integrity = 200 armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 80, ACID = 50) - /// Construction stage (1 = Empty frame | 2 = Wired frame | 3 = Completed frame) - var/stage = 1 + /// Construction stage + var/stage = LIGHT_CONSTRUCT_EMPTY_FRAME /// Light bulb type var/fixture_type = "tube" /// How many metal sheets get given after deconstruction var/sheets_refunded = 2 /// Holder for the completed fixture - var/obj/machinery/light/newlight = null + var/obj/machinery/light/construct_type = /obj/machinery/light/built /obj/machinery/light_construct/Initialize(mapload, ndir, building) . = ..() - if(fixture_type == "bulb") - icon_state = "bulb-construct-stage1" + update_icon(UPDATE_ICON_STATE) /obj/machinery/light_construct/examine(mob/user) . = ..() if(get_dist(user, src) <= 2) switch(stage) - if(1) + if(LIGHT_CONSTRUCT_EMPTY_FRAME) . += "It's an empty frame bolted to the wall. It needs to be wired." - if(2) + if(LIGHT_CONSTRUCT_WIRED) . += "The frame is wired, but the casing's cover is unscrewed." - if(3) + if(LIGHT_CONSTRUCT_COMPLETED) . += "The casing is screwed shut." /obj/machinery/light_construct/wrench_act(mob/living/user, obj/item/I) . = TRUE switch(stage) - if(1) + if(LIGHT_CONSTRUCT_EMPTY_FRAME) to_chat(user, "You begin to dismantle [src].") if(!I.use_tool(src, user, 30, volume = I.tool_volume)) return new /obj/item/stack/sheet/metal(get_turf(loc), sheets_refunded) TOOL_DISMANTLE_SUCCESS_MESSAGE qdel(src) - if(2) + if(LIGHT_CONSTRUCT_WIRED) to_chat(user, "You have to remove the wires first.") - if(3) + if(LIGHT_CONSTRUCT_COMPLETED) to_chat(user, "You have to unscrew the case first.") /obj/machinery/light_construct/wirecutter_act(mob/living/user, obj/item/I) - if(stage != 2) + if(stage != LIGHT_CONSTRUCT_WIRED) return if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return . = TRUE - stage = 1 - switch(fixture_type) - if("tube") - icon_state = "tube-construct-stage1" - if("bulb") - icon_state = "bulb-construct-stage1" + + stage = LIGHT_CONSTRUCT_EMPTY_FRAME + update_icon(UPDATE_ICON_STATE) new /obj/item/stack/cable_coil(get_turf(loc), 1, paramcolor = COLOR_RED) WIRECUTTER_SNIP_MESSAGE /obj/machinery/light_construct/screwdriver_act(mob/living/user, obj/item/I) - if(stage != 2) + if(stage != LIGHT_CONSTRUCT_WIRED) return . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return - switch(fixture_type) - if("tube") - icon_state = "tube-empty" - if("bulb") - icon_state = "bulb-empty" - stage = 3 + + stage = LIGHT_CONSTRUCT_COMPLETED + update_icon(UPDATE_ICON_STATE) user.visible_message("[user] closes [src]'s casing.", \ "You close [src]'s casing.", "You hear a screwdriver.") - switch(fixture_type) - if("tube") - newlight = new /obj/machinery/light/built(loc) - if("bulb") - newlight = new /obj/machinery/light/small/built(loc) + var/obj/machinery/light/newlight = new construct_type(loc) newlight.setDir(dir) transfer_fingerprints_to(newlight) qdel(src) @@ -112,16 +99,12 @@ /obj/machinery/light_construct/attackby(obj/item/W, mob/living/user, params) add_fingerprint(user) if(istype(W, /obj/item/stack/cable_coil)) - if(stage != 1) + if(stage != LIGHT_CONSTRUCT_EMPTY_FRAME) return var/obj/item/stack/cable_coil/coil = W coil.use(1) - switch(fixture_type) - if("tube") - icon_state = "tube-construct-stage2" - if("bulb") - icon_state = "bulb-construct-stage2" - stage = 2 + stage = LIGHT_CONSTRUCT_WIRED + update_icon(UPDATE_ICON_STATE) playsound(loc, coil.usesound, 50, 1) user.visible_message("[user.name] adds wires to [src].", \ "You add wires to [src].", "You hear a noise.") @@ -138,6 +121,13 @@ new /obj/item/stack/sheet/metal(loc, sheets_refunded) qdel(src) +/obj/machinery/light_construct/update_icon_state() + . = ..() + if(stage == LIGHT_CONSTRUCT_COMPLETED) + icon_state = "[fixture_type]-empty" + return + icon_state = "[fixture_type]-construct-stage[stage]" + /** * # Small light fixture frame * @@ -148,13 +138,28 @@ /obj/machinery/light_construct/small name = "small light fixture frame" desc = "A small light fixture under construction." - icon = 'icons/obj/lighting.dmi' icon_state = "bulb-construct-stage1" anchored = TRUE - layer = 5 - stage = 1 + layer = FLY_LAYER fixture_type = "bulb" sheets_refunded = 1 + construct_type = /obj/machinery/light/small/built + +/obj/machinery/light_construct/floor + name = "floor light fixture frame" + desc = "A floor light fixture under construction." + icon_state = "floor-construct-stage1" + anchored = TRUE + layer = ABOVE_OPEN_TURF_LAYER + plane = FLOOR_PLANE + fixture_type = "floor" + sheets_refunded = 3 + construct_type = /obj/machinery/light/floor/built + + +#undef LIGHT_CONSTRUCT_EMPTY_FRAME +#undef LIGHT_CONSTRUCT_WIRED +#undef LIGHT_CONSTRUCT_COMPLETED /** @@ -170,7 +175,7 @@ glow_icon_state = "tube" exposure_icon_state = "cone" anchored = TRUE - layer = 5 + layer = FLY_LAYER max_integrity = 100 power_state = ACTIVE_POWER_USE idle_power_consumption = 2 //when in low power mode @@ -198,6 +203,8 @@ var/light_type = /obj/item/light/tube /// Type of light bulb that goes into the fixture var/fitting = "tube" + /// What light construct type to turn into when we are deconstructed + var/obj/machinery/light_construct/deconstruct_type = /obj/machinery/light_construct /// How many times has the light been switched on/off? (This is used to calc the probability the light burns out) var/switchcount = 0 /// Is the light rigged to explode? @@ -238,6 +245,7 @@ brightness_color = "#a0a080" nightshift_light_range = 4 light_type = /obj/item/light/bulb + deconstruct_type = /obj/machinery/light_construct/small /obj/machinery/light/spot name = "spotlight" @@ -245,13 +253,30 @@ brightness_range = 12 brightness_power = 4 -/obj/machinery/light/built/Initialize(mapload) +/obj/machinery/light/floor + name = "floor light" + desc = "A lightbulb you can walk on without breaking it, amazing." + icon_state = "floor1" + glow_icon_state = "floor" + exposure_icon_state = "floor_circle" + base_state = "floor" + fitting = "bulb" + light_type = /obj/item/light/bulb + deconstruct_type = /obj/machinery/light_construct/floor + brightness_range = 6 + nightshift_light_range = 6 + layer = ABOVE_OPEN_TURF_LAYER + plane = FLOOR_PLANE + +/obj/machinery/light/built status = LIGHT_EMPTY - return ..() -/obj/machinery/light/small/built/Initialize(mapload) +/obj/machinery/light/small/built + status = LIGHT_EMPTY + +/obj/machinery/light/floor/built status = LIGHT_EMPTY - return ..() + // create a new lighting fixture /obj/machinery/light/Initialize(mapload) @@ -265,7 +290,7 @@ if(A && !A.requires_power) on = TRUE - switch(fitting) + switch(base_state) if("tube") brightness_range = 8 if(prob(2)) @@ -275,6 +300,11 @@ brightness_color = "#a0a080" if(prob(5)) break_light_tube(TRUE) + if("floor") + brightness_range = 6 + brightness_color = "#a0a080" + if(prob(3)) + break_light_tube(TRUE) update(FALSE, TRUE, FALSE) /obj/machinery/light/proc/on_security_level_change_planned(datum/source, previous_level_number, new_level_number) @@ -340,6 +370,17 @@ else underlays += emissive_appearance(icon, "[base_state]_lightmask") +/obj/machinery/light/fix(mob/user, obj/used_tool, emagged = FALSE) + if(status != LIGHT_OK) + to_chat(user, "You replace the [fitting] with [used_tool].") + status = LIGHT_OK + switchcount = 0 + rigged = emagged + on = has_power() + update(TRUE, TRUE, FALSE) + else + to_chat(user, "There is a working [fitting] already inserted!") + return /** * Updates the light's 'on' state and power consumption based on [/obj/machinery/light/var/on]. * @@ -557,18 +598,10 @@ /obj/machinery/light/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) - var/obj/machinery/light_construct/newlight = null var/cur_stage = 2 if(!disassembled) cur_stage = 1 - switch(fitting) - if("tube") - newlight = new /obj/machinery/light_construct(loc) - newlight.icon_state = "tube-construct-stage2" - - if("bulb") - newlight = new /obj/machinery/light_construct/small(loc) - newlight.icon_state = "bulb-construct-stage2" + var/obj/machinery/light_construct/newlight = new deconstruct_type(loc) newlight.setDir(dir) newlight.stage = cur_stage if(!disassembled) @@ -578,6 +611,7 @@ if(status != LIGHT_EMPTY) drop_light_tube() new /obj/item/stack/cable_coil(loc, 1, "red") + newlight.update_icon(UPDATE_ICON_STATE) transfer_fingerprints_to(newlight) qdel(src) @@ -822,6 +856,22 @@ explosion(T, 0, 0, 2, 2) qdel(src) +/obj/machinery/light/extinguish_light(force = FALSE) + on = FALSE + extinguished = TRUE + emergency_mode = FALSE + no_emergency = TRUE + addtimer(CALLBACK(src, PROC_REF(enable_emergency_lighting)), 5 MINUTES, TIMER_UNIQUE|TIMER_OVERRIDE) + visible_message("[src] flickers and falls dark.") + update(FALSE) + +/obj/machinery/light/proc/enable_emergency_lighting() + visible_message("[src]'s emergency lighting flickers back to life.") + extinguished = FALSE + no_emergency = FALSE + update(FALSE) + + /** * MARK: Light item * @@ -857,7 +907,7 @@ /obj/item/light/Crossed(mob/living/L) if(istype(L) && has_gravity(loc)) - if(L.incorporeal_move || L.flying || L.floating) + if(L.incorporeal_move || HAS_TRAIT(L, TRAIT_FLYING) || L.floating) return playsound(loc, 'sound/effects/glass_step.ogg', 50, TRUE) if(status == LIGHT_BURNED || status == LIGHT_OK) @@ -908,14 +958,6 @@ ..() shatter() -/obj/item/light/bulb/fire - name = "fire bulb" - desc = "A replacement fire bulb." - icon_state = "fbulb" - base_state = "fbulb" - item_state = "egg4" - brightness_range = 5 - // update the icon state and description of the light /obj/item/light/proc/update() @@ -933,11 +975,6 @@ /obj/item/light/New() ..() - switch(name) - if("light tube") - brightness_range = rand(6,9) - if("light bulb") - brightness_range = rand(4,6) update() @@ -990,26 +1027,7 @@ limb.droplimb(0, DROPLIMB_BURN) return FIRELOSS -/obj/machinery/light/extinguish_light(force = FALSE) - on = FALSE - extinguished = TRUE - emergency_mode = FALSE - no_emergency = TRUE - addtimer(CALLBACK(src, PROC_REF(enable_emergency_lighting)), 5 MINUTES, TIMER_UNIQUE|TIMER_OVERRIDE) - visible_message("[src] flickers and falls dark.") - update(FALSE) - -/obj/machinery/light/proc/enable_emergency_lighting() - visible_message("[src]'s emergency lighting flickers back to life.") - extinguished = FALSE - no_emergency = FALSE - update(FALSE) - #undef MAXIMUM_SAFE_BACKUP_CHARGE #undef EMERGENCY_LIGHT_POWER_USE -#undef LIGHT_OK -#undef LIGHT_EMPTY -#undef LIGHT_BROKEN -#undef LIGHT_BURNED #undef LIGHT_ON_DELAY_LOWER #undef LIGHT_ON_DELAY_UPPER diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 68134c24008c..decfac1f1a0d 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -189,6 +189,7 @@ make_terminal(user, temporary_direction, temporary_location) terminal.connect_to_network() + stat &= ~BROKEN return // Disassembling the terminal diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index ff397b39e9cb..5a0fbf434ff6 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -128,7 +128,7 @@ var/list/stored_ammo = list() var/ammo_type = /obj/item/ammo_casing var/max_ammo = 7 - var/multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_NONE // see update_icon_state() for details + var/multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_NONE // see update_icon_state for details var/caliber var/multiload = 1 var/slow_loading = FALSE diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 1e9c05ef2257..889d8d5c6e46 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -604,6 +604,11 @@ materials = list(MAT_METAL = 20000) var/charge = 1000 +// Overwrite description so shells aren't displayed +/obj/item/ammo_box/magazine/detective/speedcharger/update_desc() + . = ..() + desc = "[initial(desc)]" + /obj/item/ammo_box/magazine/detective/speedcharger/update_icon_state() return diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 36984e63b5ef..aa6c863cd63d 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -352,6 +352,7 @@ if(!user.unEquip(I)) return to_chat(user, "You click [S] into place on [src].") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) if(S.on) set_light(0) gun_light = S @@ -375,6 +376,7 @@ return K.forceMove(src) to_chat(user, "You attach [K] to [src]'s bayonet lug.") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) bayonet = K var/state = "bayonet" //Generic state. if(bayonet.icon_state in icon_states('icons/obj/guns/bayonets.dmi')) //Snowflake state? @@ -389,21 +391,23 @@ /obj/item/gun/screwdriver_act(mob/user, obj/item/I) . = TRUE - if(!I.use_tool(src, user, 0, volume = I.tool_volume)) - return - if(gun_light && can_flashlight) - for(var/obj/item/flashlight/seclite/S in src) - to_chat(user, "You unscrew the seclite from [src].") - gun_light = null - S.loc = get_turf(user) - update_gun_light(user) - S.update_brightness(user) - update_icon() - for(var/datum/action/item_action/toggle_gunlight/TGL in actions) - qdel(TGL) - else if(bayonet && can_bayonet) //if it has a bayonet, and the bayonet can be removed - bayonet.forceMove(get_turf(user)) - clear_bayonet() + if(gun_light || bayonet) + if(!I.use_tool(src, user, 0, volume = I.tool_volume)) + return + if(gun_light && can_flashlight) + for(var/obj/item/flashlight/seclite/S in src) + to_chat(user, "You unscrew the seclite from [src].") + gun_light = null + S.loc = get_turf(user) + update_gun_light(user) + S.update_brightness(user) + update_icon() + for(var/datum/action/item_action/toggle_gunlight/TGL in actions) + qdel(TGL) + else if(bayonet && can_bayonet) // if it has a bayonet, and the bayonet can be removed + bayonet.forceMove(get_turf(user)) + to_chat(user, "You remove [bayonet] from [src].") + clear_bayonet() /obj/item/gun/proc/toggle_gunlight() if(!gun_light) diff --git a/code/modules/projectiles/gun_attachments.dm b/code/modules/projectiles/gun_attachments.dm index 9a5156b45469..a24355285f46 100644 --- a/code/modules/projectiles/gun_attachments.dm +++ b/code/modules/projectiles/gun_attachments.dm @@ -2,7 +2,7 @@ /obj/item/suppressor - name = "suppressor" + name = "universal suppressor" desc = "A universal syndicate small-arms suppressor for maximum espionage." icon = 'icons/obj/guns/projectile.dmi' icon_state = "suppressor" diff --git a/code/modules/projectiles/guns/chaos_bolt.dm b/code/modules/projectiles/guns/chaos_bolt.dm index 3466cc29581e..fab8d9955f4a 100644 --- a/code/modules/projectiles/guns/chaos_bolt.dm +++ b/code/modules/projectiles/guns/chaos_bolt.dm @@ -247,6 +247,7 @@ H.electrocute_act(CHAOS_STAFF_DAMAGE, src) /datum/status_effect/teleport_roulette + id = "teleport_roulette" duration = 16 SECONDS status_type = STATUS_EFFECT_REPLACE tick_interval = 2 SECONDS diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 70869766e3b8..ad85a7e67f75 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -291,6 +291,7 @@ require_module = TRUE module_type = /obj/item/robot_module/miner usesound = 'sound/items/screwdriver.ogg' + allow_duplicate = TRUE var/denied_type = null var/maximum_of_type = 1 var/cost = 30 @@ -313,12 +314,12 @@ else return ..() -/obj/item/borg/upgrade/modkit/action(mob/living/silicon/robot/R) +/obj/item/borg/upgrade/modkit/action(mob/user, mob/living/silicon/robot/R) if(!..()) return for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/H in R.module.modules) - return install(H, usr) + return install(H, user) /obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) . = TRUE diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 30714c54095c..ca49135be11d 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -97,7 +97,7 @@ //APS Pistol// /obj/item/gun/projectile/automatic/pistol/APS name = "stechkin APS pistol" - desc = "The original russian version of a widely used Syndicate sidearm. Uses 10mm ammo." + desc = "A deadly automatic pistol produced by the USSP's State Armory. Uses 10mm ammo." icon_state = "aps" w_class = WEIGHT_CLASS_NORMAL origin_tech = "combat=3;materials=2;syndicate=3" diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index c5f35cffa977..38b5c4a3aa52 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -168,7 +168,7 @@ /obj/item/gun/projectile/revolver/mateba name = "\improper Unica 6 auto-revolver" - desc = "A retro high-powered autorevolver typically used by officers of the New Russia military. Uses .357 ammo." //>10mm hole >.357 + desc = "A retro high-powered autorevolver typically used by officers of several unrelated militaries. Uses .357 ammo." //>10mm hole >.357 icon_state = "mateba" /obj/item/gun/projectile/revolver/golden diff --git a/code/modules/projectiles/guns/projectile/toy.dm b/code/modules/projectiles/guns/projectile/toy.dm index dcf3c6261a77..27d195f82d9e 100644 --- a/code/modules/projectiles/guns/projectile/toy.dm +++ b/code/modules/projectiles/guns/projectile/toy.dm @@ -99,6 +99,7 @@ suppressed_sound = 'sound/weapons/gunshots/gunshot_smg.ogg' needs_permit = FALSE mag_type = /obj/item/ammo_box/magazine/toy/smgm45 + origin_tech = "combat=3;materials=2;syndicate=2" /obj/item/gun/projectile/automatic/c20r/toy/riot mag_type = /obj/item/ammo_box/magazine/toy/smgm45/riot @@ -133,6 +134,7 @@ inhand_y_dimension = 32 mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/tommygun w_class = WEIGHT_CLASS_SMALL + origin_tech = "combat=3;materials=2;syndicate=2" /obj/item/gun/projectile/automatic/sniper_rifle/toy name = "donksoft sniper rifle" diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 85376f0d8e2e..45eae9706d47 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -76,7 +76,8 @@ /obj/item/food/grown/pumpkin = list("pumpkinjuice" = 0), /obj/item/food/grown/apple = list("applejuice" = 0), /obj/item/food/grown/grapes = list("grapejuice" = 0), - /obj/item/food/grown/pineapple = list("pineapplejuice" = 0) + /obj/item/food/grown/pineapple = list("pineapplejuice" = 0), + /obj/item/food/grown/bungofruit = list("bungojuice" = 0) ) var/list/dried_items = list( diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm index af10f6ee3f92..d661a9fad43f 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol.dm @@ -1504,14 +1504,11 @@ /datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(!M.nutrition) - switch(rand(1, 3)) - if(1) - to_chat(M, "You feel hungry...") - if(2) - update_flags |= M.adjustToxLoss(1, FALSE) - to_chat(M, "Your stomach grumbles painfully!") - else - pass() + if(prob(66.66)) + to_chat(M, "You feel hungry...") + else if(prob(50)) + update_flags |= M.adjustToxLoss(1, FALSE) + to_chat(M, "Your stomach grumbles painfully!") else if(prob(60)) M.adjust_nutrition(-remove_nutrition) diff --git a/code/modules/reagents/chemistry/reagents/drinks_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks_reagents.dm index c1561de6b6ed..1371a3bf5224 100644 --- a/code/modules/reagents/chemistry/reagents/drinks_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks_reagents.dm @@ -140,6 +140,15 @@ drink_desc = "Apple juice. Maybe it would have been better in a pie..." taste_description = "apple juice" +/datum/reagent/consumable/bungojuice + name = "Bungo Juice" + id = "bungojuice" + description = "Exotic! You feel like you are on vacation already." + color = "#F9E43D" + drink_name = "Bungo Juice" + drink_desc = "Exotic! You feel like you are on vacation already." + taste_description = "succulent bungo with an acidic poisonous tang" + /datum/reagent/consumable/drink/watermelonjuice name = "Watermelon Juice" id = "watermelonjuice" diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index a983c66b1a00..ead46024498a 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -679,6 +679,22 @@ if(volume >= 5 && !isspaceturf(T)) new /obj/item/food/weirdcheesewedge(T) +/datum/reagent/consumable/cheese_curds + name = "Cheese Curds" + id = "cheese_curds" + description = "Some mushed up cheese curds. You're not quite sure why you did this." + reagent_state = SOLID + color = "#FFFF00" + taste_description = "salty cheese" + +/datum/reagent/consumable/yogurt + name = "yogurt" + id = "yogurt" + description = "Some yogurt, produced by bacterial fermentation of milk. Yum." + reagent_state = LIQUID + color = "#FFFFFF" + taste_description = "yogurt" + /datum/reagent/consumable/beans name = "Refried beans" id = "beans" diff --git a/code/modules/reagents/chemistry/reagents/misc_reagents.dm b/code/modules/reagents/chemistry/reagents/misc_reagents.dm index becb5f5bb504..3c64adf2b7e5 100644 --- a/code/modules/reagents/chemistry/reagents/misc_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/misc_reagents.dm @@ -453,6 +453,7 @@ id = "jestosterone" description = "Jestosterone is an odd chemical compound that induces a variety of annoying side-effects in the average person. It also causes mild intoxication, and is toxic to mimes." color = "#ff00ff" //Fuchsia, pity we can't do rainbow here + process_flags = ORGANIC | SYNTHETIC taste_description = "a funny flavour" /datum/reagent/jestosterone/on_new() @@ -475,14 +476,14 @@ C.AddElement(/datum/element/waddling) C.AddComponent(/datum/component/squeak, null, null, null, null, null, TRUE, falloff_exponent = 20) -/datum/reagent/jestosterone/on_mob_life(mob/living/carbon/M) +/datum/reagent/jestosterone/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE if(prob(10)) M.emote("giggle") if(!M.mind) return ..() | update_flags if(M.mind.assigned_role == "Clown") - update_flags |= M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! + update_flags |= M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER, robotic = TRUE) //Screw those pesky clown beatings! else M.AdjustDizzy(20 SECONDS, 0, 100 SECONDS) M.Druggy(30 SECONDS) @@ -502,7 +503,10 @@ "You feel like telling a pun.") to_chat(M, "[pick(clown_message)]") if(M.mind.assigned_role == "Mime") - update_flags |= M.adjustToxLoss(1.5 * REAGENTS_EFFECT_MULTIPLIER) + if(M.dna.species.tox_mod <= 0) // If they can't take tox damage, make them take burn damage + update_flags |= M.adjustFireLoss(1.5 * REAGENTS_EFFECT_MULTIPLIER, robotic = TRUE) + else + update_flags |= M.adjustToxLoss(1.5 * REAGENTS_EFFECT_MULTIPLIER) return ..() | update_flags /datum/reagent/jestosterone/on_mob_delete(mob/living/M) @@ -510,8 +514,8 @@ if(M.mind?.assigned_role != "Clown") REMOVE_TRAIT(M, TRAIT_COMIC_SANS, id) M.RemoveElement(/datum/element/waddling) - qdel(M.GetComponent(/datum/component/squeak)) + M.DeleteComponent(/datum/component/squeak) /datum/reagent/royal_bee_jelly name = "Royal bee jelly" @@ -727,3 +731,56 @@ if(H.dna.species.bodyflags & HAS_SKIN_COLOR) //take current alien color and darken it slightly H.change_skin_color("#9B7653") + +/datum/reagent/admin_cleaner + name = "WD-2381" + color = "#da9eda" + description = "Extra-bubbly cleaner designed to clear all objects. Or, well. Anything that isn't bolted down. Or is, for that matter. In other words: if you're seeing this, how'd you get your hands on it?" + +/datum/reagent/admin_cleaner/organic + name = "WD-2381-MOB" + id = "admincleaner_mob" + description = "A bottle of strange nanites that instantly devour bodies, both living and dead, as well as organs." + +/datum/reagent/admin_cleaner/organic/reaction_mob(mob/living/M, method, volume, show_message) + . = ..() + if(method == REAGENT_TOUCH) + M.dust() + +/datum/reagent/admin_cleaner/organic/reaction_obj(obj/O, volume) + if(is_organ(O)) + qdel(O) + if(istype(O, /obj/effect/decal/cleanable/blood) || istype(O, /obj/effect/decal/cleanable/vomit)) + qdel(O) + if(istype(O, /obj/item/mmi)) + qdel(O) + +/datum/reagent/admin_cleaner/item + name = "WD-2381-ITM" + id = "admincleaner_item" + description = "A bottle of strange nanites that instantly devour items, while curiously leaving everything else untouched." + +/datum/reagent/admin_cleaner/item/reaction_obj(obj/O, volume) + if(isitem(O) && !istype(O, /obj/item/grenade/clusterbuster/segment)) + qdel(O) + +/datum/reagent/admin_cleaner/all + name = "WD-2381-ALL" + id = "admincleaner_all" + description = "An incredibly dangerous set of nanites engineered by Syndicate Janitors which devour everything they touch." + +/datum/reagent/admin_cleaner/all/reaction_obj(obj/O, volume) + if(istype(O, /obj/item/grenade/clusterbuster/segment)) + // don't clear clusterbang segments + // I'm allowed to make this hack because this is admin only anyway + return + if(!iseffect(O)) + qdel(O) + +/datum/reagent/admin_cleaner/all/reaction_mob(mob/living/M, method, volume, show_message) + . = ..() + if(method == REAGENT_TOUCH) + M.dust() + + + diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 4ea9e6c141e6..7dd272207e8b 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -924,14 +924,11 @@ /datum/reagent/lipolicide/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE if(!M.nutrition) - switch(rand(1,3)) - if(1) - to_chat(M, "You feel hungry...") - if(2) - update_flags |= M.adjustToxLoss(1, FALSE) - to_chat(M, "Your stomach grumbles painfully!") - else - pass() + if(prob(66.66)) + to_chat(M, "You feel hungry...") + else if(prob(50)) + update_flags |= M.adjustToxLoss(1, FALSE) + to_chat(M, "Your stomach grumbles painfully!") else if(prob(60)) var/fat_to_burn = max(round(M.nutrition / 100, 1), 5) diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index 9c5388ac9299..83956eb56c9d 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -61,9 +61,7 @@ if(iseffect(O)) var/obj/effect/E = O if(E.is_cleanable()) - var/obj/effect/decal/cleanable/blood/B = E - if(!(istype(B) && B.off_floor)) - qdel(E) + qdel(E) else if(O.simulated) O.color = initial(O.color) diff --git a/code/modules/reagents/chemistry/recipes/food_reactions.dm b/code/modules/reagents/chemistry/recipes/food_reactions.dm index 4a0ab9df0074..583f354d3338 100644 --- a/code/modules/reagents/chemistry/recipes/food_reactions.dm +++ b/code/modules/reagents/chemistry/recipes/food_reactions.dm @@ -77,6 +77,26 @@ for(var/i = 1, i <= created_volume, i++) new /obj/item/food/sliceable/cheesewheel(location) +/datum/chemical_reaction/cheese_curds + name = "Cheese Curds" + id = "cheese_curds" + result = null + required_reagents = list("milk" = 15, "vinegar" = 5, "cream" = 5) + result_amount = 1 + min_temp = T0C + 80 + +/datum/chemical_reaction/cheese_curds/on_reaction(datum/reagents/holder, created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/food/cheese_curds(location) + +/datum/chemical_reaction/yogurt + name = "Yogurt" + id = "yogurt" + result = "yogurt" + required_reagents = list("milk" = 10, "virusfood" = 2) + result_amount = 10 + /datum/chemical_reaction/syntiflesh name = "Syntiflesh" id = "syntiflesh" diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 5e1c90749583..ad7350420cda 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -463,7 +463,7 @@ if(slime.docile) //Undoes docility, but doesn't make rabid. slime.visible_message("[slime] forgets its training, becoming wild once again!") slime.docile = FALSE - slime.update_name() + slime.update_appearance(UPDATE_NAME) continue slime.rabid = TRUE slime.visible_message("[slime] is driven into a frenzy!") diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index ff2a5af0b700..73b400127950 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -185,7 +185,7 @@ if(!istype(H) || !H.reagents || HAS_TRAIT(H, TRAIT_PIERCEIMMUNE) || ismachineperson(H)) return - if(H.floating || H.flying || H.buckled) + if(H.floating || HAS_TRAIT(H, TRAIT_FLYING) || H.buckled) return if(!IS_HORIZONTAL(H) && (H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) || (H.w_uniform && (H.w_uniform.body_parts_covered & FEET)))) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 1448089796be..52ec63933a7c 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -1611,7 +1611,7 @@ /obj/effect/decal/cleanable/blood/gibs/pipe_eject(direction) var/list/dirs if(direction) - dirs = list( direction, turn(direction, -45), turn(direction, 45)) + dirs = list(direction, turn(direction, -45), turn(direction, 45)) else dirs = GLOB.alldirs.Copy() @@ -1620,7 +1620,7 @@ /obj/effect/decal/cleanable/blood/gibs/robot/gib/pipe_eject(direction) var/list/dirs if(direction) - dirs = list( direction, turn(direction, -45), turn(direction, 45)) + dirs = list(direction, turn(direction, -45), turn(direction, 45)) else dirs = GLOB.alldirs.Copy() diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 9351978962e9..c7a23b33c67e 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -450,7 +450,7 @@ to_chat(user, "You seal [src], preparing it for delivery.") icon_state = "shippack_sealed" sealed = 1 - update_desc() + update_appearance(UPDATE_DESC) else if(tgui_alert(user, "Do you want to tear up the package?", "Shipping", list("Yes", "No")) == "Yes") to_chat(user, "You shred [src].") diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 837f80365c04..3a5f5c10390b 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -27,7 +27,7 @@ name = "Exosuit Board (\"Odysseus\" Central Control module)" desc = "Allows for the construction of a \"Odysseus\" Central Control module." id = "odysseus_main" - req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3) + req_tech = list("programming" = 3, "biotech" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000) build_path = /obj/item/circuitboard/mecha/odysseus/main @@ -37,12 +37,33 @@ name = "Exosuit Board (\"Odysseus\" Peripherals Control module)" desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module." id = "odysseus_peri" - req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3) + req_tech = list("programming" = 3, "biotech" = 3, "engineering" = 3) build_type = IMPRINTER materials = list(MAT_GLASS = 1000) build_path = /obj/item/circuitboard/mecha/odysseus/peripherals category = list("Exosuit Modules") +// Nkarrdem +/datum/design/nkarrdem_main + name = "Exosuit Board (\"Nkarrdem\" Central Control module)" + desc = "Allows for the construction of a \"Nkarrdem\" Central Control module." + id = "nkarrdem_main" + req_tech = list("programming" = 3, "biotech" = 3, "engineering" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000) + build_path = /obj/item/circuitboard/mecha/nkarrdem/main + category = list("Exosuit Modules") + +/datum/design/nkarrdem_peri + name = "Exosuit Board (\"Nkarrdem\" Peripherals Control module)" + desc = "Allows for the construction of a \"Nkarrdem\" Peripheral Control module." + id = "nkarrdem_peri" + req_tech = list("programming" = 3, "biotech" = 3, "engineering" = 3) + build_type = IMPRINTER + materials = list(MAT_GLASS = 1000) + build_path = /obj/item/circuitboard/mecha/nkarrdem/peripherals + category = list("Exosuit Modules") + // Gygax /datum/design/gygax_main name = "Exosuit Board (\"Gygax\" Central Control module)" diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 92b1f19de11c..39448394c68f 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -249,6 +249,70 @@ construction_time = 13 SECONDS category = list("Odysseus") +//Nkarrdem +/datum/design/nkarrdem_chassis + name = "Exosuit Chassis (\"Nkarrdem\")" + id = "nkarrdem_chassis" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/chassis/nkarrdem + materials = list(MAT_METAL=20000) + construction_time = 10 SECONDS + category = list("Nkarrdem") + +/datum/design/nkarrdem_torso + name = "Exosuit Torso (\"Nkarrdem\")" + id = "nkarrdem_torso" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/nkarrdem_torso + materials = list(MAT_METAL=12000) + construction_time = 18 SECONDS + category = list("Nkarrdem") + +/datum/design/nkarrdem_head + name = "Exosuit Head (\"Nkarrdem\")" + id = "nkarrdem_head" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/nkarrdem_head + materials = list(MAT_METAL=6000,MAT_GLASS=10000) + construction_time = 10 SECONDS + category = list("Nkarrdem") + +/datum/design/nkarrdem_left_arm + name = "Exosuit Left Arm (\"Nkarrdem\")" + id = "nkarrdem_left_arm" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/nkarrdem_left_arm + materials = list(MAT_METAL=6000) + construction_time = 12 SECONDS + category = list("Nkarrdem") + +/datum/design/nkarrdem_right_arm + name = "Exosuit Right Arm (\"Nkarrdem\")" + id = "nkarrdem_right_arm" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/nkarrdem_right_arm + materials = list(MAT_METAL=6000) + construction_time = 12 SECONDS + category = list("Nkarrdem") + +/datum/design/nkarrdem_left_leg + name = "Exosuit Left Leg (\"Nkarrdem\")" + id = "nkarrdem_left_leg" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/nkarrdem_left_leg + materials = list(MAT_METAL=12000) + construction_time = 13 SECONDS + category = list("Nkarrdem") + +/datum/design/nkarrdem_right_leg + name = "Exosuit Right Leg (\"Nkarrdem\")" + id = "nkarrdem_right_leg" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/nkarrdem_right_leg + materials = list(MAT_METAL=12000) + construction_time = 13 SECONDS + category = list("Nkarrdem") + //Gygax /datum/design/gygax_chassis name = "Exosuit Chassis (\"Gygax\")" @@ -672,6 +736,56 @@ construction_time = 20 SECONDS category = list("Exosuit Equipment") +/datum/design/mech_mop + name = "Exosuit Janitorial Equipment (Mega Mop)" + id = "mech_mop" + build_type = MECHFAB + req_tech = list("materials" = 4, "engineering" = 3) + build_path = /obj/item/mecha_parts/mecha_equipment/janitor/mega_mop + materials = list(MAT_METAL=5000,MAT_GLASS=3000) + construction_time = 10 SECONDS + category = list("Exosuit Equipment") + +/datum/design/mech_garbage_bag + name = "Exosuit Janitorial Equipment (Garbage Magnet)" + id = "mech_garbage_bag" + build_type = MECHFAB + req_tech = list("materials" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 3) + build_path = /obj/item/mecha_parts/mecha_equipment/janitor/garbage_magnet + materials = list(MAT_METAL=1500,MAT_GOLD=1500,MAT_URANIUM=700,MAT_PLASMA=2000) + construction_time = 10 SECONDS + category = list("Exosuit Equipment") + +/datum/design/mech_mega_spray + name = "Exosuit Janitorial Equipment (Mega Spray)" + id = "mech_mega_spray" + build_type = MECHFAB + req_tech = list("biotech" = 5, "engineering" = 6, "plasmatech" = 6) + build_path = /obj/item/mecha_parts/mecha_equipment/janitor/mega_spray + materials = list(MAT_METAL=1000,MAT_GLASS=4000,MAT_GOLD=1000,MAT_PLASMA=3000) + construction_time = 10 SECONDS + category = list("Exosuit Equipment") + +/datum/design/mech_light_replacer + name = "Exosuit Janitorial Equipment (Light Replacer)" + id = "mech_light_replacer" + build_type = MECHFAB + req_tech = list("bluespace" = 7, "materials" = 5, "engineering" = 6, "plasmatech" = 6) + build_path = /obj/item/mecha_parts/mecha_equipment/janitor/light_replacer + materials = list(MAT_METAL=1500,MAT_SILVER=150,MAT_GLASS=6000,MAT_BLUESPACE=300) + construction_time = 10 SECONDS + category = list("Exosuit Equipment") + +/datum/design/mech_cleaning_grenade_launcher + name = "Exosuit Janitorial Equipment (Cleaning Grenade Launcher)" + id = "mech_cleaning_grenade_launcher" + build_type = MECHFAB + req_tech = list("toxins" = 7, "engineering" = 7, "plasmatech" = 6, "combat" = 6) + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/cleaner + materials = list(MAT_METAL=5000,MAT_GLASS=3000,MAT_SILVER=4000,MAT_GOLD=6000) + construction_time = 10 SECONDS + category = list("Exosuit Equipment") + /datum/design/mech_generator name = "Exosuit Equipment (Plasma Generator)" id = "mech_generator" diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 8f9247bd5d54..da2d8dd774d9 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -350,10 +350,11 @@ desc = "An implant that enhances your muscles to punch harder and throw people back." id = "muscle_implant" req_tech = list("combat" = 7, "syndicate" = 4, "biotech" = 7) - build_type = PROTOLATHE + build_type = PROTOLATHE | MECHFAB materials = list(MAT_GOLD = 5000, MAT_METAL = 10000, MAT_TITANIUM = 3000, MAT_BLUESPACE = 2000) + construction_time = 200 build_path = /obj/item/organ/internal/cyberimp/arm/muscle - category = list("Weapons") + category = list("Medical", "Weapons") /datum/design/upgraded_chemical_flamethrower name = "Extended Capacity Chemical Flamethrower Parts" diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 2a0827d75a1f..3ed8d1d32dc7 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -482,12 +482,12 @@ if(globalMalf > 16 && globalMalf < 35) visible_message("[src] melts [exp_on], ian-izing the air around it!") throwSmoke(loc) - var/mob/tracked_ian = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_living_list + var/mob/living/tracked_ian = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_living_list if(tracked_ian) throwSmoke(tracked_ian.loc) tracked_ian.loc = loc if(tracked_ian.buckled) - tracked_ian.buckled.unbuckle_mob(tracked_ian, TRUE) + tracked_ian.unbuckle(force = TRUE) investigate_log("Experimentor has stolen Ian!", "experimentor") //...if anyone ever fixes it... else new /mob/living/simple_animal/pet/dog/corgi(loc) @@ -496,12 +496,12 @@ if(globalMalf > 36 && globalMalf < 59) visible_message("[src] encounters a run-time error!") throwSmoke(loc) - var/mob/tracked_runtime = locate(/mob/living/simple_animal/pet/cat/Runtime) in GLOB.mob_living_list + var/mob/living/tracked_runtime = locate(/mob/living/simple_animal/pet/cat/Runtime) in GLOB.mob_living_list if(tracked_runtime) throwSmoke(tracked_runtime.loc) tracked_runtime.loc = loc if(tracked_runtime.buckled) - tracked_runtime.buckled.unbuckle_mob(tracked_runtime, TRUE) + tracked_runtime.unbuckle(force = TRUE) investigate_log("Experimentor has stolen Runtime!", "experimentor") else new /mob/living/simple_animal/pet/cat(loc) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 216f680e8556..28b410b9d373 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -419,7 +419,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/finish_machine(key, amount, enough_materials, obj/machinery/r_n_d/machine, datum/design/being_built, list/efficient_mats) if(machine) if(enough_materials && being_built) - SSblackbox.record_feedback("nested tally", "RND Production List", amount, list("[being_built.category]", "[being_built.name]")) + if(is_station_level(z)) + SSblackbox.record_feedback("tally", "station_protolathe_production", amount, "[being_built.type]") for(var/i in 1 to amount) var/obj/item/new_item = new being_built.build_path(src) if(istype(new_item)) // Only want a random pixel offset if it IS actually an item, and not a structure like a bluespace closet diff --git a/code/modules/ruins/lavalandruin_code/hermit.dm b/code/modules/ruins/lavalandruin_code/hermit.dm index 855a545b3fcc..021fb4290ea7 100644 --- a/code/modules/ruins/lavalandruin_code/hermit.dm +++ b/code/modules/ruins/lavalandruin_code/hermit.dm @@ -19,35 +19,32 @@ /obj/effect/mob_spawn/human/alive/hermit/Initialize(mapload) . = ..() var/arrpee = rand(1,4) + outfit.suit = /obj/item/clothing/suit/space/syndicate/orange + outfit.head = /obj/item/clothing/head/helmet/space/syndicate/orange + outfit.shoes = /obj/item/clothing/shoes/black + outfit.back = /obj/item/storage/backpack switch(arrpee) if(1) flavour_text += "you were a [pick("arms dealer", "shipwright", "docking manager")]'s assistant on a small trading station several sectors from here. Raiders attacked, and there was \ only one pod left when you got to the escape bay. You took it and launched it alone, and the crowd of terrified faces crowding at the airlock door as your pod's engines burst to \ life and sent you to this hell are forever branded into your memory." outfit.uniform = /obj/item/clothing/under/misc/assistantformal - outfit.shoes = /obj/item/clothing/shoes/black - outfit.back = /obj/item/storage/backpack if(2) flavour_text += "you're an exile from the Tiger Cooperative. Their technological fanaticism drove you to question the power and beliefs of the Exolitics, and they saw you as a \ heretic and subjected you to hours of horrible torture. You were hours away from execution when a high-ranking friend of yours in the Cooperative managed to secure you a pod, \ scrambled its destination's coordinates, and launched it. You awoke from stasis when you landed and have been surviving - barely - ever since." outfit.uniform = /obj/item/clothing/under/color/orange outfit.shoes = /obj/item/clothing/shoes/orange - outfit.back = /obj/item/storage/backpack if(3) flavour_text += "you were a doctor on one of Nanotrasen's space stations, but you left behind that damn corporation's tyranny and everything it stood for. From a metaphorical hell \ to a literal one, you find yourself nonetheless missing the recycled air and warm floors of what you left behind... but you'd still rather be here than there." outfit.uniform = /obj/item/clothing/under/rank/medical/doctor - outfit.suit = /obj/item/clothing/suit/storage/labcoat outfit.back = /obj/item/storage/backpack/medic - outfit.shoes = /obj/item/clothing/shoes/black if(4) flavour_text += "you were always joked about by your friends for \"not playing with a full deck\", as they so kindly put it. It seems that they were right when you, on a tour \ at one of Nanotrasen's state-of-the-art research facilities, were in one of the escape pods alone and saw the red button. It was big and shiny, and it caught your eye. You pressed \ it, and after a terrifying and fast ride for days, you landed here. You've had time to wisen up since then, and you think that your old friends wouldn't be laughing now." outfit.uniform = /obj/item/clothing/under/color/grey/glorf - outfit.shoes = /obj/item/clothing/shoes/black - outfit.back = /obj/item/storage/backpack /obj/effect/mob_spawn/human/alive/hermit/Destroy() new/obj/structure/fluff/empty_cryostasis_sleeper(get_turf(src)) diff --git a/code/modules/ruins/lavalandruin_code/seed_vault.dm b/code/modules/ruins/lavalandruin_code/seed_vault.dm index 261c22ef4882..bbedf9201628 100644 --- a/code/modules/ruins/lavalandruin_code/seed_vault.dm +++ b/code/modules/ruins/lavalandruin_code/seed_vault.dm @@ -22,7 +22,7 @@ flavour_text = "You are a sentient ecosystem, an example of the mastery over life that your creators possessed. Your masters, benevolent as they were, created uncounted \ seed vaults and spread them across the universe to every planet they could chart. You are in one such seed vault. Your goal is to cultivate and spread life wherever it will go while waiting \ for contact from your creators. Estimated time of last contact: Deployment, 5x10^3 millennia ago." - assignedrole = "Lifebringer" + assignedrole = "Seed Vault Diona" /obj/effect/mob_spawn/human/alive/seed_vault/special(mob/living/new_spawn) var/plant_name = pick("Tomato", "Potato", "Broccoli", "Carrot", "Ambrosia", "Pumpkin", "Ivy", "Kudzu", "Banana", "Moss", "Flower", "Bloom", "Root", "Bark", "Glowshroom", "Petal", "Leaf", \ diff --git a/code/modules/ruins/ruin_areas.dm b/code/modules/ruins/ruin_areas.dm index 02cc3722e893..d1cc859aaa21 100644 --- a/code/modules/ruins/ruin_areas.dm +++ b/code/modules/ruins/ruin_areas.dm @@ -1,3 +1,11 @@ +GLOBAL_LIST_INIT(ruin_prototypes, list(/area/ruin, + /area/ruin/unpowered, + /area/ruin/powered, + /area/ruin/space, + /area/ruin/space/powered, + /area/ruin/space/unpowered, + /area/ruin/space/unpowered/no_grav)) + //Parent types /area/ruin diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 970372602636..b816473851f7 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -516,17 +516,6 @@ mode = SHUTTLE_ENDGAME timer = 0 - open_dock() - -/obj/docking_port/mobile/emergency/proc/open_dock() - pass() -/* - for(var/obj/machinery/door/poddoor/shuttledock/D in airlocks) - var/turf/T = get_step(D, D.checkdir) - if(!istype(T,/turf/space)) - spawn(0) - D.open() -*/ //Leaving this here incase someone decides to port -tg-'s escape shuttle stuff: /obj/docking_port/mobile/emergency/proc/random_docking_go() var/cycles = 1000 diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index a18849260505..35ae17be544a 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -645,20 +645,18 @@ var/obj/mecha/mech = AM if(mech.occupant) INVOKE_ASYNC(mech, TYPE_PROC_REF(/obj/mecha, get_out_and_die)) - if(ismob(AM)) - var/mob/M = AM - if(M.buckled) - M.buckled.unbuckle_mob(M, force = TRUE) - if(isliving(AM)) - var/mob/living/L = AM - if(L.incorporeal_move || L.status_flags & GODMODE) - continue - L.stop_pulling() - L.visible_message("[L] is hit by \ - a hyperspace ripple!", - "You feel an immense \ - crushing pressure as the space around you ripples.") - L.gib() + if(isliving(AM)) + var/mob/living/L = AM + if(L.buckled) + L.unbuckle(force = TRUE) + if(L.incorporeal_move || L.status_flags & GODMODE) + continue + L.stop_pulling() + L.visible_message("[L] is hit by \ + a hyperspace ripple!", + "You feel an immense \ + crushing pressure as the space around you ripples.") + L.gib() else if(lance_docking) //corrupt the child, destroy them all if(!AM.simulated) continue diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index d4c3a9509013..60a37770ef55 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -174,7 +174,9 @@ /obj/item/food/sliceable/xenomeatbread //maybe add some dangerous/special food here, ie robobuger? ) -#define BASE_ENERGY_CONVERSION 4e-6 +/// Points generated per cycle for each Watt of power consumption +#define POINTS_PER_W 4e-6 +/// Amount of points generated per cycle per 50KW for the first 500KW #define BASE_POINTS 2 /** @@ -199,13 +201,6 @@ interact_offline = TRUE luminosity = 1 - /// Correspond to power required for a mining level, first entry for level 1, etc. - var/list/power_needs = list(1 KW, 2 KW, 5 KW, 10 KW, 15 KW, - 25 KW, 50 KW, 100 KW, 250 KW, 500 KW, - 1 MW, 2 MW, 5 MW, 10 MW, 15 MW, - 20 MW, 25 MW, 30 MW, 40 MW, 50 MW, - 60 MW, 70 MW, 80 MW, 90 MW, 100 MW) - /// list of possible products var/static/product_list = list( new /datum/data/bluespace_tap_product("Unknown Exotic Hat", /obj/effect/spawner/lootdrop/bluespace_tap/hat, 5000), @@ -214,37 +209,31 @@ new /datum/data/bluespace_tap_product("Unknown Biological Artifact", /obj/effect/spawner/lootdrop/bluespace_tap/organic, 20000) ) - /// The level the machine is currently mining at. 0 means off - var/input_level = 0 - /// The machine you WANT the machine to mine at. It will try to match this. - var/desired_level = 0 + /// The amount of power being used for mining at the moment (Watts) + var/mining_power = 0 + /// The power you WANT the machine to use for mining. It will try to match this. (Watts) + var/desired_mining_power = 0 + /// Points mined this cycle + var/mined_points = 0 /// Available mining points var/points = 0 /// The total points earned by this machine so far, for tracking station goal and highscore var/total_points = 0 - /// How much power the machine needs per processing tick at the current level. - var/actual_power_usage = 0 // Tweak these and active_power_consumption to balance power generation - /// Max power input level, I don't expect this to be ever reached. It has been reached. - var/max_level = 25 - /// amount of points generated per level for the first 10 levels - var/base_points = BASE_POINTS - /// amount of points generated per process cycle per unit of energy consumed - var/conversion_ratio = BASE_ENERGY_CONVERSION - /// How high the machine can be run before it starts having a chance for dimension breaches. - var/safe_levels = 15 /// Whether or not auto shutdown will engage when portals open var/auto_shutdown = TRUE /// Whether or not stabilizers will engage to prevent or reduce the chance of portals opening var/stabilizers = TRUE - /// Amount of power the stabilizers consume + /// Amount of power the stabilizers consume (Watts) var/stabilizer_power = 0 - /// Amount of overhead in levels. Each level of overhead allows stabilizing 15+overhead. - var/overhead = 0 + /// Whether or not mining power will be prevented from exceedingn stabilizer power + var/stabilizer_priority = TRUE /// When event triggers this will hold references to all portals so we can fix the sprite after they're broken var/list/active_nether_portals = list() + /// The amount of portals waiting to be spawned. Used mostly for UI and icon stuff. + var/spawning = 0 /obj/machinery/power/bluespace_tap/Initialize(mapload) . = ..() @@ -256,7 +245,7 @@ if(!powernet) connect_to_network() - AddComponent(/datum/component/multitile, 1, list( + AddComponent(/datum/component/multitile, list( list(1, 1, 1), list(1, MACH_CENTER, 1), list(1, 0, 1), @@ -280,7 +269,7 @@ underlays.Cut() - if(length(active_nether_portals)) + if(length(active_nether_portals) || spawning) . += "cascade" set_light(15, 5, "#ff0000") return @@ -296,19 +285,19 @@ underlays += emissive_appearance(icon, "light_mask") /obj/machinery/power/bluespace_tap/proc/get_icon_state_number() - switch(input_level) - if(0) - return 0 - if(1 to 3) + switch(mining_power) + if(50 KW to 3 MW) return 1 - if(4 to 8) + if(3 MW to 8 MW) return 2 - if(9 to 11) + if(8 MW to 11 MW) return 3 - if(12 to 15) + if(11 MW to 15 MW) return 4 - if(16 to INFINITY) + if(15 MW to INFINITY) return 5 + else + return 0 /obj/machinery/power/bluespace_tap/power_change() . = ..() @@ -331,99 +320,96 @@ update_icon() /** - * Increases the desired mining level - * - * Increases the desired mining level, that - * the machine tries to reach if there - * is enough power for it. Note that it does - * NOT increase the actual mining level directly. - */ -/obj/machinery/power/bluespace_tap/proc/increase_level() - if(desired_level < max_level) - desired_level++ -/** - * Decreases the desired mining level - * - * Decreases the desired mining level, that - * the machine tries to reach if there - * is enough power for it. Note that it does - * NOT decrease the actual mining level directly. - */ -/obj/machinery/power/bluespace_tap/proc/decrease_level() - if(desired_level > 0) - desired_level-- - -/** - * Sets the desired mining level + * Sets the desired mining power (Watts) * - * Sets the desired mining level, that + * Sets the desired mining power, that * the machine tries to reach if there * is enough power for it. Note that it does - * NOT change the actual mining level directly. + * NOT change the actual mining power directly. * Arguments: - * * t_level - The level we try to set it at, between 0 and max_level + * * t_power - The power we try to set it at, between 0 and max_level */ -/obj/machinery/power/bluespace_tap/proc/set_level(t_level) - if(t_level < 0) - return - if(t_level > max_level) - return - desired_level = t_level -/** - * Gets the amount of power at a set input level - * - * Gets the amount of power (in W) a set input level needs. - * Note that this is not necessarily the current power use. - * * i_level - The hypothetical input level for which we want to know the power use. - */ -/obj/machinery/power/bluespace_tap/proc/get_power_use(i_level) - if(!i_level) - return 0 - return power_needs[i_level] +/obj/machinery/power/bluespace_tap/proc/set_power(t_power) + desired_mining_power = max(t_power, 0) + // Round down to nearest MW if above 1 MW + if(desired_mining_power > 1 MW) + desired_mining_power = desired_mining_power - (desired_mining_power % (1 MW)) /obj/machinery/power/bluespace_tap/process() - actual_power_usage = get_power_use(input_level) - if(get_surplus() < actual_power_usage) //not enough power, so turn down a level - input_level-- - update_icon() - return // and no mining gets done - if(actual_power_usage) - consume_direct_power(actual_power_usage) - //2 points per level up to level 10 and 4 points per MW (or 5 when emmaged). - var/points_to_add = min(base_points * 10, base_points * input_level) + actual_power_usage * (conversion_ratio + emagged * 1e-6) - points += points_to_add // point generation, emagging gets you 'free' points at the cost of higher anomaly chance - total_points += points_to_add - // Between levels 15 and 18 get one level of overhead per 5MW of surplus power. Above level 18 get 1 level per 10MW of surplus power. - overhead = input_level >= 18 ? get_surplus() * 1e-7 : get_surplus() * 2e-7 - stabilizer_power = stabilizers && input_level > 15 ? input_level >= 18 ? min(get_surplus() , (input_level - 15) * 1e7) : min(get_surplus() , (input_level - 15) * 0.5e7) : 0 - consume_direct_power(stabilizer_power) - // actual input level changes slowly - // holy shit every proccess this - if(input_level < desired_level && (get_surplus() + get_power_use(input_level) + stabilizer_power >= get_power_use(input_level + 1))) - input_level++ - update_icon() - else if(input_level > desired_level) - input_level-- - update_icon() - // Stabilizers reduce the chance of portals. prob with values less than 0 treat it as 0. - if(prob(input_level - (safe_levels + stabilizers * overhead) + (emagged * 5))) + // Power we could mine with (Watts) + mining_power = get_surplus() + + // Round down to the nearest MW if above a MW + if(mining_power > 1 MW) + mining_power = mining_power - mining_power % (1 MW) + + // Always try to use all available power for mining if emagged + if(emagged) + desired_mining_power = mining_power + + /* + * Stabilizers activate above 15MW of mining power + * Stabilizers consume up to 1MW for each 1MW of mining power, consuming less between 15 and 30MW of mining power + * If stabilizers have priority they will always consume enough power to stabilize the BSH, limiting mining + * Emagging disables stabilizers + */ + if(stabilizer_priority) + // stabilizer power is what we need to stabilize the current mining level, but no more than half the available power. + stabilizer_power = \ + clamp(\ + desired_mining_power - clamp(30 MW - desired_mining_power, 0, 15 MW), \ + 0, \ + mining_power / 2) \ + * (stabilizers && !emagged) + else + // stabilizer power is however much power we have left, but no more than we need to stabilize our desired mining power. + stabilizer_power = \ + clamp(mining_power - desired_mining_power, \ + 0, \ + desired_mining_power - clamp(30 MW - desired_mining_power, 0, 15 MW)) \ + * (stabilizers && !emagged) + + // Actual mining power is what the desired mining power we set, unless we don't have enough power to satisfty that. + mining_power = min(desired_mining_power, mining_power - stabilizer_power) + + consume_direct_power(mining_power + stabilizer_power) + + // 2 points per 50 KW up to 20 and 4 points per MW (or 5 when emmaged). + mined_points = min(BASE_POINTS * (mining_power / (50 KW)) , 20) + mining_power * (POINTS_PER_W + emagged / (1 MW)) + points += mined_points + total_points += mined_points + update_icon() + /* + * Portal chance is 0.1% per cycle per difference of 1MW between the stabilizer and mining power + * This should translate to portals spawning every 33:20 minutes for 1 difference of 1MW + * And about every 3:20 minutes for a 10MW difference + * Emagging guarantees a chance of at least 5% + * Prob treats values less than 0 as 0. + * Emagging garuantees a chance of at least 5%. + * Prob treats values less than 0 as 0. + */ + + if(prob((mining_power - clamp(30 MW - mining_power, 0, 15 MW) - stabilizer_power) / (10 MW)) + (emagged * 5)) var/area/our_area = get_area(src) - if(!length(active_nether_portals)) + if((!spawning || !length(active_nether_portals))) GLOB.major_announcement.Announce("Unexpected power spike during Bluespace Harvester Operation. Extra-dimensional intruder alert. Expected location: [our_area.name]. [emagged ? "DANGER: Emergency shutdown failed! Please proceed with manual shutdown." : auto_shutdown ? "Emergency shutdown initiated." : "Automatic shutdown disabled."]", "Bluespace Harvester Malfunction", 'sound/AI/harvester.ogg') if(!emagged && auto_shutdown) - input_level = 0 //emergency shutdown unless it is disabled - desired_level = 0 - start_nether_portaling(rand(1 , 3) + max((level - 15 - overhead) / 3 , 0)) + desired_mining_power = 0 //emergency shutdown unless it is disabled + // An extra portal for each 30MW above 15 + start_nether_portaling(rand(1 , 3) + round(max((mining_power - 15 MW) / (30 MW) , 0)), TRUE) -/obj/machinery/power/bluespace_tap/proc/start_nether_portaling(amount) +/obj/machinery/power/bluespace_tap/proc/start_nether_portaling(amount, new_incursion = FALSE) + if(new_incursion) + spawning += amount var/turf/location = locate(x + rand(-5, 5), y + rand(-5, 5), z) var/obj/structure/spawner/nether/bluespace_tap/P = new /obj/structure/spawner/nether/bluespace_tap(location) amount-- + spawning-- active_nether_portals += P P.linked_source_object = src - // 1 Extra mob for each 2 levels above 15. - P.max_mobs = 5 + max((input_level - 15) / 2, 0) + // 1 Extra mob for each 20 MW of mining power above 15MW. + P.max_mobs = 5 + max((mining_power - 15 MW) / (20 MW), 0) update_icon() if(amount) addtimer(CALLBACK(src, PROC_REF(start_nether_portaling), amount), rand(3, 5) SECONDS) @@ -431,20 +417,18 @@ /obj/machinery/power/bluespace_tap/ui_data(mob/user) var/list/data = list() - data["desiredLevel"] = desired_level - data["inputLevel"] = input_level + data["desiredMiningPower"] = desired_mining_power + data["miningPower"] = mining_power data["points"] = points data["totalPoints"] = total_points - data["powerUse"] = actual_power_usage + stabilizer_power + data["powerUse"] = mining_power + stabilizer_power data["availablePower"] = get_surplus() - data["maxLevel"] = max_level data["emagged"] = emagged - data["safeLevels"] = safe_levels - data["nextLevelPower"] = get_power_use(input_level + 1) data["autoShutown"] = auto_shutdown - data["overhead"] = overhead data["stabilizers"] = stabilizers data["stabilizerPower"] = stabilizer_power + data["stabilizerPriority"] = stabilizer_priority + data["portaling"] = (length(active_nether_portals) || spawning) /// A list of lists, each inner list equals a datum var/list/listed_items = list() @@ -460,18 +444,12 @@ /obj/machinery/power/bluespace_tap/attack_hand(mob/user) add_fingerprint(user) - if(length(active_nether_portals)) //this would be cool if we made unique TGUI for this - to_chat(user, "UNKNOWN INTERFERENCE ... UNRESPONSIVE") - return ui_interact(user) /obj/machinery/power/bluespace_tap/attack_ghost(mob/user) ui_interact(user) -/obj/machinery/power/bluespace_tap/attack_ai(mob/user) - if(length(active_nether_portals)) //this would be cool if we made unique TGUI for this - to_chat(user, "UNKNOWN INTERFERENCE ... UNRESPONSIVE") - return +/obj/machinery/power/bluespace_tap/attack_ai(mob/user) //this would be cool if we made unique TGUI for this ui_interact(user) /** @@ -499,12 +477,8 @@ return . = TRUE // we want to refresh in all the cases below switch(action) - if("decrease") - decrease_level() - if("increase") - increase_level() if("set") - set_level(text2num(params["set_level"])) + set_power(text2num(params["set_power"])) if("vend")//it's not really vending as producing, but eh var/key = text2num(params["target"]) produce(key) @@ -512,6 +486,8 @@ auto_shutdown = !auto_shutdown if("stabilizers") stabilizers = !stabilizers + if("stabilizer_priority") + stabilizer_priority = !stabilizer_priority /obj/machinery/power/bluespace_tap/ui_state(mob/user) return GLOB.default_state @@ -527,7 +503,6 @@ if(emagged) return emagged = TRUE - desired_level = max_level do_sparks(5, FALSE, src) if(user) user.visible_message("[user] disables the [src]'s safeties'.", "You disable the [src]'s safeties'.") @@ -568,5 +543,6 @@

Device highly experimental. Not for sale. Do not operate near small children or vital NT assets. Do not tamper with machine. In case of existential dread, stop machine immediately. \ Please document any and all extradimensional incursions. In case of imminent death, please leave said documentation in plain sight for clean-up teams to recover.

" -#undef BASE_ENERGY_CONVERSION +#undef POINTS_PER_W #undef BASE_POINTS +ER_W diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index b1ad0956c0b1..d6b2b7f576cd 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -116,8 +116,9 @@ var/static/image/top_layer = null var/ex_power = 3 var/power_used_per_shot = 2000000 //enough to kil standard apc - todo : make this use wires instead and scale explosion power with it - var/last_fire_time = 0 // The time at which the gun was last fired - var/reload_cooldown = 600 // The gun's cooldown + /// The gun's cooldown + var/reload_cooldown_time = 10 MINUTES + COOLDOWN_DECLARE(firing_cooldown) pixel_y = -32 pixel_x = -192 @@ -136,7 +137,7 @@ /obj/machinery/bsa/full/admin power_used_per_shot = 0 - reload_cooldown = 100 + reload_cooldown_time = 100 SECONDS /obj/machinery/bsa/full/admin/east icon_state = "cannon_east" @@ -145,9 +146,9 @@ /obj/machinery/bsa/full/proc/get_front_turf() switch(dir) if(WEST) - return locate(x - 6,y,z) + return locate(x - 7,y,z) if(EAST) - return locate(x + 4,y,z) + return locate(x + 5,y,z) return get_turf(src) /obj/machinery/bsa/full/proc/get_back_turf() @@ -196,6 +197,8 @@ /obj/machinery/bsa/full/proc/fire(mob/user, turf/bullseye, target) + if(!COOLDOWN_FINISHED(src, firing_cooldown)) + return var/turf/point = get_front_turf() for(var/turf/T in get_line(get_step(point,dir),get_target_turf())) T.ex_act(EXPLODE_DEVASTATE) @@ -203,6 +206,7 @@ A.ex_act(EXPLODE_DEVASTATE) point.Beam(get_target_turf(), icon_state = "bsa_beam", time = 50, maxdistance = world.maxx, beam_type = /obj/effect/ebeam/deadly) //ZZZAP + new /obj/effect/temp_visual/bsa_splash(point, dir) playsound(src, 'sound/machines/bsa_fire.ogg', 100, 1) if(istype(target, /obj/item/gps)) var/obj/item/gps/G = target @@ -218,7 +222,7 @@ /obj/machinery/bsa/full/proc/reload() use_power(power_used_per_shot) - last_fire_time = world.time / 10 + COOLDOWN_START(src, firing_cooldown, reload_cooldown_time) /obj/item/circuitboard/machine/bsa/back board_name = "Bluespace Artillery Generator" @@ -295,7 +299,7 @@ icon_state = icon_state_broken else if(stat & NOPOWER) icon_state = icon_state_nopower - else if(cannon && (cannon.last_fire_time + cannon.reload_cooldown) > (world.time / 10)) + else if(cannon && (!COOLDOWN_FINISHED(cannon, firing_cooldown))) icon_state = icon_state_reloading else if(cannon) icon_state = icon_state_active @@ -326,14 +330,8 @@ if(target) data["target"] = get_target_name() if(cannon) - var/reload_cooldown = cannon.reload_cooldown - var/last_fire_time = cannon.last_fire_time - var/time_to_wait = max(0, round(reload_cooldown - ((world.time / 10) - last_fire_time))) - var/minutes = max(0, round(time_to_wait / 60)) - var/seconds = max(0, time_to_wait - (60 * minutes)) - var/seconds2 = (seconds < 10) ? "0[seconds]" : seconds - data["reloadtime_text"] = "[minutes]:[seconds2]" - data["ready"] = minutes == 0 && seconds == 0 + data["reloadtime_text"] = seconds_to_clock(round(COOLDOWN_TIMELEFT(cannon, firing_cooldown) / 10)) + data["ready"] = COOLDOWN_FINISHED(cannon, firing_cooldown) else data["ready"] = FALSE return data diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 6eca59c5e29b..04d85784bd03 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -170,9 +170,7 @@ GLOBAL_LIST_INIT(non_simple_animals, typecacheof(list(/mob/living/carbon/human/m dna_max = G.human_count break - AddComponent(/datum/component/multitile, 2, list( - list(0, 0, 0, 0, 0), - list(0, 0, 0, 0, 0), + AddComponent(/datum/component/multitile, list( list(0, 1, MACH_CENTER, 1, 0), list(0, 1, 0, 1, 0), list(0, 1, 0, 1, 0) diff --git a/code/modules/supply/supply_packs/pack_security.dm b/code/modules/supply/supply_packs/pack_security.dm index f95c3cbc5756..1adad3d58c9e 100644 --- a/code/modules/supply/supply_packs/pack_security.dm +++ b/code/modules/supply/supply_packs/pack_security.dm @@ -278,15 +278,15 @@ /datum/supply_packs/security/armory/tranqammo name = "Tranquilizer Shell Crate" - contains = list(/obj/item/storage/box/tranquilizer, - /obj/item/storage/box/tranquilizer) + contains = list(/obj/item/storage/fancy/shell/tranquilizer, + /obj/item/storage/fancy/shell/tranquilizer) cost = 400 containername = "tranquilizer shell crate" /datum/supply_packs/security/armory/holyammo name = "Holy Water Shell Crate" - contains = list(/obj/item/storage/box/holy, - /obj/item/storage/box/holy) + contains = list(/obj/item/storage/fancy/shell/holy, + /obj/item/storage/fancy/shell/holy) cost = 400 containername = "holy water shell crate" diff --git a/code/modules/surgery/abstract_steps.dm b/code/modules/surgery/abstract_steps.dm index 2632347347c0..144f55e39092 100644 --- a/code/modules/surgery/abstract_steps.dm +++ b/code/modules/surgery/abstract_steps.dm @@ -113,7 +113,7 @@ for(var/allowed in first_step.allowed_tools) if(ispath(allowed) && istype(tool, allowed) || (tool && istype(tool) && tool.tool_behaviour == allowed)) next_surgery = S - if(allowed in starting_tools && !(allowed in overriding_tools)) + if((allowed in starting_tools) && !(allowed in overriding_tools)) CRASH("[src] was provided with multiple branches that start with tool [allowed].") else starting_tools.Add(allowed) diff --git a/code/modules/surgery/bio_chip_removal.dm b/code/modules/surgery/bio_chip_removal.dm index f7c8d88b18bf..5b324bbb714a 100644 --- a/code/modules/surgery/bio_chip_removal.dm +++ b/code/modules/surgery/bio_chip_removal.dm @@ -29,6 +29,7 @@ /datum/surgery_step/extract_bio_chip name = "extract bio-chip" allowed_tools = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 65) + preop_sound = 'sound/surgery/hemostat1.ogg' time = 6.4 SECONDS repeatable = TRUE var/obj/item/bio_chip/I = null diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm index acfcbfcdedd4..d14ddd44c339 100644 --- a/code/modules/surgery/bones.dm +++ b/code/modules/surgery/bones.dm @@ -51,6 +51,13 @@ TOOL_BONEGEL = 100, TOOL_SCREWDRIVER = 90 ) + + preop_sound = list( + TOOL_BONEGEL = 'sound/surgery/organ1.ogg', + /obj/item/screwdriver/power = 'sound/items/drill_hit.ogg', + /obj/item/screwdriver = 'sound/items/screwdriver.ogg' + ) + can_infect = TRUE blood_level = SURGERY_BLOODSPREAD_HANDS @@ -93,6 +100,7 @@ TOOL_WRENCH = 90 ) + preop_sound = 'sound/surgery/hemostat1.ogg' time = 3.2 SECONDS /datum/surgery_step/set_bone/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -164,6 +172,13 @@ TOOL_BONEGEL = 100, TOOL_SCREWDRIVER = 90 ) + + preop_sound = list( + TOOL_BONEGEL = 'sound/surgery/organ1.ogg', + /obj/item/screwdriver/power = 'sound/items/drill_hit.ogg', + /obj/item/screwdriver = 'sound/items/screwdriver.ogg' + ) + can_infect = TRUE blood_level = SURGERY_BLOODSPREAD_HANDS diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index 8baebebdff15..37a0ee5b56f5 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -151,6 +151,12 @@ /obj/item/stack/rods = 60 ) + preop_sound = list( + TOOL_DRILL = 'sound/items/drill_hit.ogg', + /obj/item/screwdriver/power = 'sound/items/drill_hit.ogg', + /obj/item/pen = 'sound/surgery/organ2.ogg', + /obj/item/stack/rods = 'sound/surgery/organ2.ogg' + ) time = 5.4 SECONDS /datum/surgery_step/cavity/make_space/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -183,6 +189,9 @@ TOOL_WELDER = 30 ) + preop_sound = 'sound/surgery/cautery1.ogg' + success_sound = 'sound/surgery/cautery2.ogg' + failure_sound = 'sound/items/welder.ogg' time = 2.4 SECONDS /datum/surgery_step/cavity/close_space/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/core_removal.dm b/code/modules/surgery/core_removal.dm index 65a0ca70a6f5..a57178f97349 100644 --- a/code/modules/surgery/core_removal.dm +++ b/code/modules/surgery/core_removal.dm @@ -19,6 +19,10 @@ /obj/item/kitchen/knife = 65, /obj/item/shard = 45 ) + + preop_sound = 'sound/surgery/scalpel1.ogg' + success_sound = 'sound/surgery/scalpel2.ogg' + failure_sound = 'sound/surgery/organ2.ogg' time = 1.6 SECONDS /datum/surgery_step/slime/cut_flesh/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) @@ -38,6 +42,8 @@ /datum/surgery_step/slime/extract_core name = "extract core" allowed_tools = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 100) + preop_sound = 'sound/surgery/organ1.ogg' + success_sound = 'sound/surgery/organ2.ogg' time = 1.6 SECONDS /datum/surgery_step/slime/extract_core/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm index 13bed7936b04..871f91d8038a 100644 --- a/code/modules/surgery/encased.dm +++ b/code/modules/surgery/encased.dm @@ -16,6 +16,15 @@ TOOL_WIRECUTTER = 35 // Silly goose! ) + preop_sound = list( + TOOL_SAW = 'sound/surgery/saw.ogg', + /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', + /obj/item/chainsaw = 'sound/weapons/chainsaw.ogg', + /obj/item/butcher_chainsaw = 'sound/weapons/chainsaw.ogg', + TOOL_WIRECUTTER = 'sound/surgery/scalpel1.ogg' + ) + + success_sound = 'sound/surgery/organ2.ogg' time = 5.4 SECONDS /datum/surgery_step/open_encased/saw/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -64,6 +73,8 @@ TOOL_CROWBAR = 90 ) + preop_sound = 'sound/surgery/retractor1.ogg' + success_sound = 'sound/surgery/retractor2.ogg' time = 2.4 SECONDS /datum/surgery_step/open_encased/retract/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -113,6 +124,8 @@ TOOL_CROWBAR = 90 ) + preop_sound = 'sound/surgery/retractor1.ogg' + success_sound = 'sound/surgery/retractor2.ogg' time = 2.4 SECONDS /datum/surgery_step/open_encased/close/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -158,6 +171,12 @@ TOOL_SCREWDRIVER = 90 ) + preop_sound = list( + TOOL_BONEGEL = 'sound/surgery/organ1.ogg', + /obj/item/screwdriver/power = 'sound/items/drill_hit.ogg', + /obj/item/screwdriver = 'sound/items/screwdriver.ogg' + ) + time = 2.4 SECONDS /datum/surgery_step/open_encased/mend/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index dc6c98957377..b0fa71e9de33 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -23,6 +23,9 @@ /obj/item/butcher_chainsaw = 1 ) + preop_sound = 'sound/surgery/scalpel1.ogg' + success_sound = 'sound/surgery/scalpel2.ogg' + failure_sound = 'sound/surgery/organ2.ogg' time = 1.6 SECONDS /datum/surgery_step/generic/cut_open/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -67,6 +70,7 @@ /obj/item/assembly/mousetrap = 25 ) + preop_sound = 'sound/surgery/hemostat1.ogg' time = 2.4 SECONDS @@ -111,6 +115,9 @@ /obj/item/kitchen/utensil/fork = 60 ) + preop_sound = 'sound/surgery/retractor1.ogg' + success_sound = 'sound/surgery/retractor2.ogg' + failure_sound = 'sound/surgery/organ2.ogg' time = 2.4 SECONDS /datum/surgery_step/generic/retract_skin/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -168,6 +175,9 @@ /obj/item/flamethrower = 1 // You make do with what ya got... ) + preop_sound = 'sound/surgery/cautery1.ogg' + success_sound = 'sound/surgery/cautery2.ogg' + failure_sound = 'sound/items/welder.ogg' time = 2.4 SECONDS /datum/surgery_step/generic/cauterize/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -226,6 +236,15 @@ /obj/item/mecha_parts/mecha_equipment/drill = 60, /obj/item/screwdriver = 20 ) + + preop_sound = list( + TOOL_DRILL = 'sound/items/drill_hit.ogg', + /obj/item/screwdriver/power = 'sound/items/drill_hit.ogg', + /obj/item/pickaxe/drill = 'sound/weapons/drill.ogg', + /obj/item/mecha_parts/mecha_equipment/drill = 'sound/weapons/drill.ogg', + /obj/item/screwdriver = 'sound/items/screwdriver.ogg' + ) + time = 3 SECONDS /datum/surgery_step/generic/drill/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -264,6 +283,13 @@ /obj/item/melee/energy = 75 ) + preop_sound = list( + TOOL_SAW = 'sound/surgery/saw.ogg', + /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', + /obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg' + ) + + success_sound = 'sound/surgery/organ2.ogg' time = 10 SECONDS /datum/surgery_step/generic/amputate/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 1edd427daad6..b08a0021cd06 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -3,7 +3,7 @@ desc = "You shouldn't see this! Adminhelp and report this as an issue on github!" parent_organ = "r_arm" slot = "r_arm_device" - icon_state = "implant-toolkit" + icon_state = "toolkit_generic" w_class = WEIGHT_CLASS_NORMAL actions_types = list(/datum/action/item_action/organ_action/toggle) @@ -223,6 +223,7 @@ /obj/item/organ/internal/cyberimp/arm/toolset name = "integrated toolset implant" desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm. Contains all neccessary tools." + icon_state = "toolkit_engineering" origin_tech = "materials=3;engineering=4;biotech=3;powerstorage=4" contents = newlist(/obj/item/screwdriver/cyborg, /obj/item/wrench/cyborg, /obj/item/weldingtool/largetank/cyborg, /obj/item/crowbar/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/cyborg) @@ -242,6 +243,7 @@ /obj/item/organ/internal/cyberimp/arm/toolset_abductor name = "alien toolset implant" desc = "An alien toolset, designed to be installed on subject's arm." + icon_state = "toolkit_engineering" origin_tech = "materials=5;engineering=5;plasmatech=5;powerstorage=4;abductor=3" contents = newlist(/obj/item/screwdriver/abductor, /obj/item/wirecutters/abductor, /obj/item/crowbar/abductor, /obj/item/wrench/abductor, /obj/item/weldingtool/abductor, /obj/item/multitool/abductor) action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/abductor.dmi') @@ -253,6 +255,7 @@ /obj/item/organ/internal/cyberimp/arm/janitorial_abductor name = "alien janitorial toolset implant" desc = "A set of alien janitorial tools, designed to be installed on subject's arm." + icon_state = "toolkit_janitor" origin_tech = "materials=5;engineering=5;biotech=5;powerstorage=4;abductor=2" contents = newlist(/obj/item/mop/advanced/abductor, /obj/item/soap/syndie/abductor, /obj/item/lightreplacer/bluespace/abductor, /obj/item/holosign_creator/janitor, /obj/item/melee/flyswatter/abductor, /obj/item/reagent_containers/spray/cleaner/safety/abductor) action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/abductor.dmi') @@ -264,6 +267,7 @@ /obj/item/organ/internal/cyberimp/arm/surgical_abductor name = "alien surgical toolset implant" desc = "An alien surgical toolset, designed to be installed on the subject's arm." + icon_state = "toolkit_surgical" origin_tech = "materials=5;engineering=5;plasmatech=5;powerstorage=4;abductor=2" contents = newlist(/obj/item/retractor/alien, /obj/item/hemostat/alien, /obj/item/cautery/alien, /obj/item/bonesetter/alien, /obj/item/scalpel/alien, /obj/item/circular_saw/alien, /obj/item/bonegel/alien, /obj/item/FixOVein/alien, /obj/item/surgicaldrill/alien) action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/abductor.dmi') @@ -330,6 +334,7 @@ /obj/item/organ/internal/cyberimp/arm/surgery name = "surgical toolset implant" desc = "A set of surgical tools hidden behind a concealed panel on the user's arm" + icon_state = "toolkit_surgical" contents = newlist(/obj/item/retractor/augment, /obj/item/hemostat/augment, /obj/item/cautery/augment, /obj/item/bonesetter/augment, /obj/item/scalpel/augment, /obj/item/circular_saw/augment, /obj/item/bonegel/augment, /obj/item/FixOVein/augment, /obj/item/surgicaldrill/augment) origin_tech = "materials=3;engineering=3;biotech=3;programming=2;magnets=3" action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/storage.dmi') @@ -342,6 +347,7 @@ /obj/item/organ/internal/cyberimp/arm/janitorial name = "janitorial toolset implant" desc = "A set of janitorial tools hidden behind a concealed panel on the user's arm" + icon_state = "toolkit_janitor" contents = newlist(/obj/item/mop/advanced, /obj/item/soap, /obj/item/lightreplacer, /obj/item/holosign_creator/janitor, /obj/item/melee/flyswatter, /obj/item/reagent_containers/spray/cleaner/safety) origin_tech = "materials=3;engineering=4;biotech=3" action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/clothing/belts.dmi') @@ -369,6 +375,7 @@ /obj/item/organ/internal/cyberimp/arm/botanical name = "botanical toolset implant" desc = "A set of botanical tools hidden behind a concealed panel on the user's arm" + icon_state = "toolkit_hydro" contents = newlist(/obj/item/plant_analyzer, /obj/item/cultivator, /obj/item/hatchet, /obj/item/shovel/spade, /obj/item/reagent_containers/spray/weedspray, /obj/item/reagent_containers/spray/pestspray) origin_tech = "materials=3;engineering=4;biotech=3" action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/clothing/belts.dmi') @@ -382,6 +389,7 @@ /obj/item/organ/internal/cyberimp/arm/power_cord name = "APC-compatible power adapter implant" desc = "An implant commonly installed inside IPCs in order to allow them to easily collect energy from their environment" + icon_state = "toolkit_ipc" origin_tech = "materials=3;biotech=2;powerstorage=3" contents = newlist(/obj/item/apc_powercord) requires_robotic_bodypart = TRUE @@ -417,12 +425,8 @@ user.changeNext_move(CLICK_CD_MELEE) var/obj/machinery/power/apc/A = target var/mob/living/carbon/human/H = user - if(H.get_int_organ(/obj/item/organ/internal/cell) || H.get_int_organ(/obj/item/organ/internal/heart)) - var/obj/item/organ/internal/heart/robotic = H.get_int_organ(/obj/item/organ/internal/heart) - if(robotic) - if(!(robotic.status & ORGAN_ROBOT) && !H.get_int_organ(/obj/item/organ/internal/heart/demon/pulse)) - to_chat(user, "You lack a cell in which to store charge!") - return + var/datum/organ/battery/power_source = H.get_int_organ_datum(ORGAN_DATUM_BATTERY) + if(istype(power_source)) if(A.emagged || A.stat & BROKEN) do_sparks(3, 1, A) to_chat(H, "The APC power currents surge erratically, damaging your chassis!") @@ -435,7 +439,7 @@ else to_chat(user, "There is no charge to draw from that APC.") else - to_chat(user, "You lack a cell in which to store charge!") + to_chat(user, "You lack a power source in which to store charge!") /obj/item/apc_powercord/proc/powerdraw_loop(obj/machinery/power/apc/A, mob/living/carbon/human/H) H.visible_message("[H] inserts a power connector into \the [A].", "You begin to draw power from \the [A].") diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm index cfadb5fef4de..a26301260540 100644 --- a/code/modules/surgery/organs/augments_eyes.dm +++ b/code/modules/surgery/organs/augments_eyes.dm @@ -2,7 +2,6 @@ name = "cybernetic eyes" desc = "artificial photoreceptors with specialized functionality." icon_state = "eye_implant" - implant_overlay = "eye_implant_overlay" slot = "eye_sight" parent_organ = "eyes" w_class = WEIGHT_CLASS_TINY @@ -39,7 +38,7 @@ /obj/item/organ/internal/cyberimp/eyes/hud/medical name = "Medical HUD implant" desc = "These cybernetic eye implants will display a medical HUD over everything you see." - implant_color = "#00FFFF" + icon_state = "eye_implant_medical" origin_tech = "materials=4;programming=4;biotech=4" aug_message = "You suddenly see health bars floating above people's heads..." HUD_type = DATA_HUD_MEDICAL_ADVANCED @@ -48,7 +47,7 @@ /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic name = "Diagnostic HUD implant" desc = "These cybernetic eye implants will display a diagnostic HUD over everything you see." - implant_color = "#ff9000" + icon_state = "eye_implant_diagnostic" origin_tech = "materials=4;engineering=4;biotech=4" aug_message = "You see the diagnostic information of the synthetics around you..." HUD_type = DATA_HUD_DIAGNOSTIC_ADVANCED @@ -56,7 +55,7 @@ /obj/item/organ/internal/cyberimp/eyes/hud/security name = "Security HUD implant" desc = "These cybernetic eye implants will display a security HUD over everything you see." - implant_color = "#CC0000" + icon_state = "eye_implant_security" origin_tech = "materials=4;programming=4;biotech=3;combat=3" aug_message = "Job indicator icons pop up in your vision. That is not a certified surgeon..." HUD_type = DATA_HUD_SECURITY_ADVANCED @@ -65,7 +64,7 @@ /obj/item/organ/internal/cyberimp/eyes/hud/jani name = "Janitor HUD implant" desc = "These cybernetic eye implants will display a filth HUD over everything you see." - implant_color = "#DFBE00" + icon_state = "eye_implant_janitor" origin_tech = "materials=4;engineering=4;biotech=4" aug_message = "You scan for filth spots around you..." HUD_type = DATA_HUD_JANITOR @@ -73,7 +72,7 @@ /obj/item/organ/internal/cyberimp/eyes/hud/hydroponic name = "Hydroponic HUD implant" desc = "These cybernetic eye implants will display a botanical HUD over everything you see." - implant_color = "#4850D5" + icon_state = "eye_implant_hydro" origin_tech = "materials=4;magnets=4;biotech=4" aug_message = "You scan for non-plastic plants around you..." HUD_type = DATA_HUD_HYDROPONIC diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 895419b3f67b..a1807372bcfe 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -42,12 +42,13 @@ /obj/item/organ/internal/cyberimp/brain/anti_drop name = "Anti-drop implant" desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle." + icon_state = "brain_implant_antidrop" var/active = FALSE var/l_hand_ignore = FALSE var/r_hand_ignore = FALSE var/obj/item/l_hand_obj = null var/obj/item/r_hand_obj = null - implant_color = "#DE7E00" + implant_overlay = null slot = "brain_antidrop" origin_tech = "materials=4;programming=5;biotech=4" actions_types = list(/datum/action/item_action/organ_action/toggle) @@ -133,7 +134,7 @@ /obj/item/organ/internal/cyberimp/brain/anti_stam name = "CNS Rebooter implant" desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when fatigued. Incompatible with the Neural Jumpstarter." - implant_color = "#FFFF00" + icon_state = "brain_implant_rebooter" slot = "brain_antistun" origin_tech = "materials=5;programming=4;biotech=5" /// How much we multiply the owners stamina regen block modifier by. @@ -594,7 +595,8 @@ /obj/item/organ/internal/cyberimp/chest/nutriment name = "Nutriment pump implant" desc = "This implant will synthesize a small amount of nutriment and pumps it directly into your bloodstream when you are starving." - implant_color = "#00AA00" + icon_state = "nutriment_implant" + implant_overlay = null var/hunger_threshold = NUTRITION_LEVEL_STARVING var/synthesizing = 0 var/poison_amount = 5 @@ -643,7 +645,7 @@ /obj/item/organ/internal/cyberimp/chest/nutriment/plus name = "Nutriment pump implant PLUS" desc = "This implant will synthesize a small amount of nutriment and pumps it directly into your bloodstream when you are hungry." - implant_color = "#006607" + icon_state = "adv_nutriment_implant" hunger_threshold = NUTRITION_LEVEL_HUNGRY poison_amount = 10 origin_tech = "materials=4;powerstorage=3;biotech=3" @@ -659,7 +661,8 @@ /obj/item/organ/internal/cyberimp/chest/reviver name = "Reviver implant" desc = "This implant will attempt to heal you out of critical condition. For the faint of heart!" - implant_color = "#AD0000" + icon_state = "reviver_implant" + implant_overlay = null origin_tech = "materials=5;programming=4;biotech=4" slot = "heartdrive" var/revive_cost = 0 diff --git a/code/modules/surgery/organs/brain.dm b/code/modules/surgery/organs/brain.dm index cd29e5c36ae6..4da4a401d6ed 100644 --- a/code/modules/surgery/organs/brain.dm +++ b/code/modules/surgery/organs/brain.dm @@ -141,7 +141,7 @@ to_chat(owner, "Your head feels foggy.") else if(prob(4)) owner.vomit() - to_chat(owner, "'You feel nauseous.") + to_chat(owner, "You feel nauseous.") /obj/item/organ/internal/brain/proc/handle_moderate_brain_damage() if(prob(4)) diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 3d85aa0d47aa..805a75efaadb 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -126,6 +126,7 @@ /obj/item/organ/internal/eyes/cybernetic/meson name = "meson eyes" desc = "These cybernetic eyes will allow you to see the structural layout of the station, and, well, everything else." + icon_state = "eyes-c-meson" eye_color = "#199900" lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE origin_tech = "materials=4;engineering=4;biotech=4;magnets=4" @@ -141,6 +142,7 @@ /obj/item/organ/internal/eyes/cybernetic/xray name = "\improper X-ray eyes" desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." + icon_state = "eyes-c-xray" see_in_dark = 8 vision_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS origin_tech = "materials=4;programming=4;biotech=7;magnets=4" @@ -148,13 +150,15 @@ /obj/item/organ/internal/eyes/cybernetic/xray/hardened name = "hardened X-ray eyes" desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile. This pair has been hardened for special operations personnel." + eye_color = "#FFCC00" emp_proof = TRUE origin_tech = "materials=6;programming=5;biotech=7;magnets=6;syndicate=3" /obj/item/organ/internal/eyes/cybernetic/thermals name = "thermal eyes" desc = "These cybernetic eye implants will give you thermal vision. Vertical slit pupil included." - eye_color = "#FFCC00" + icon_state = "eyes-c-thermal" + eye_color = "#E12224" vision_flags = SEE_MOBS lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE flash_protect = FLASH_PROTECTION_SENSITIVE @@ -170,6 +174,7 @@ /obj/item/organ/internal/eyes/cybernetic/scope name = "\improper Kaleido Optics eyes" desc = "These cybernetic eye implants will let you zoom in on far away objects. Many users find it disorienting, and find it hard to interact with things near them when active." + icon_state = "eyes-c-kaleido" eye_color = "#6f00ff" flash_protect = FLASH_PROTECTION_EXTRA_SENSITIVE origin_tech = "materials=5;programming=4;biotech=4;magnets=4" diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 9dac53823a47..0b3e52c5578b 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -36,6 +36,7 @@ base_icon_state = "cursedheart" origin_tech = "biotech=6" actions_types = list(/datum/action/item_action/organ_action/cursed_heart) + organ_datums = list(/datum/organ/heart, /datum/organ/battery) // This doesn't actually work for IPCs but it also doesn't kill you, and it's funny var/last_pump = 0 var/pump_delay = 30 //you can pump 1 second early, for lag, but no more (otherwise you could spam heal) var/blood_loss = 100 //600 blood is human default, so 5 failures (below 122 blood is where humans die because reasons?) @@ -191,6 +192,7 @@ base_icon_state = "heart-c" dead_icon = "heart-c-off" status = ORGAN_ROBOT + organ_datums = list(/datum/organ/heart, /datum/organ/battery) /obj/item/organ/internal/heart/cybernetic/upgraded name = "upgraded cybernetic heart" diff --git a/code/modules/surgery/organs/organ_datums/battery_datum.dm b/code/modules/surgery/organs/organ_datums/battery_datum.dm new file mode 100644 index 000000000000..28b3b35d4aca --- /dev/null +++ b/code/modules/surgery/organs/organ_datums/battery_datum.dm @@ -0,0 +1,5 @@ +/* + For any species that doesn't have a heart datum but does have heart-like organs, so just IPCs right now. Microbatteries currently have no behavior. +*/ +/datum/organ/battery + organ_tag = ORGAN_DATUM_BATTERY diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 506747dde5c9..c01ab721347b 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -927,7 +927,7 @@ Note that amputating the affected organ does in fact remove the infection from t "\The [victim]'s [name] explodes violently!",\ "Your [name] explodes!",\ "You hear an explosion!") - explosion(get_turf(owner),-1,-1,2,3) + explosion(get_turf(victim), -1, -1, 2, 3) do_sparks(5, 0, victim) qdel(src) diff --git a/code/modules/surgery/organs/organ_extractor.dm b/code/modules/surgery/organs/organ_extractor.dm index efa581b8bc3e..16ee7fe6f11b 100644 --- a/code/modules/surgery/organs/organ_extractor.dm +++ b/code/modules/surgery/organs/organ_extractor.dm @@ -129,7 +129,7 @@ C.apply_damage(5, BRUTE, drilled_organ) playsound(get_turf(C), 'sound/weapons/circsawhit.ogg', 50, TRUE) - if(!do_after_once(C, (user_is_target ? self_insert_time : insert_time), target = C)) + if(!do_after_once(user, (user_is_target ? self_insert_time : insert_time), target = C)) to_chat(user, "ERROR: Process interrupted!") in_use = FALSE return diff --git a/code/modules/surgery/organs/organ_helpers.dm b/code/modules/surgery/organs/organ_helpers.dm index 6ec762dee736..e27293dedc4f 100644 --- a/code/modules/surgery/organs/organ_helpers.dm +++ b/code/modules/surgery/organs/organ_helpers.dm @@ -85,8 +85,13 @@ .++ if(affecting.body_part == LEG_LEFT) .++ -///Returns true if all the mob's vital organs are functional, otherwise returns false -/mob/living/carbon/human/proc/check_vital_organs() +/* Returns true if all the mob's vital organs are functional, otherwise returns false. +* This proc is only used for checking if IPCs can revive from death, so calling it on a non IPC will always return false (right now) +*/ +/mob/living/carbon/human/proc/ipc_vital_organ_check() + var/has_battery = get_int_organ_datum(ORGAN_DATUM_BATTERY) + if(!has_battery) + return FALSE for(var/obj/item/organ/internal/organ in internal_organs) if(organ.vital && (organ.damage >= organ.max_damage)) return FALSE diff --git a/code/modules/surgery/organs/subtypes/machine_organs.dm b/code/modules/surgery/organs/subtypes/machine_organs.dm index 7acdb7a461ca..c5b60e33263b 100644 --- a/code/modules/surgery/organs/subtypes/machine_organs.dm +++ b/code/modules/surgery/organs/subtypes/machine_organs.dm @@ -104,21 +104,21 @@ /obj/item/organ/internal/cell name = "microbattery" desc = "A small, powerful cell for use in fully prosthetic bodies." - icon = 'icons/obj/power.dmi' - icon_state = "scell" + icon_state = "cell" organ_tag = "heart" parent_organ = "chest" + dead_icon = "cell_bork" slot = "heart" vital = TRUE status = ORGAN_ROBOT requires_robotic_bodypart = TRUE + organ_datums = list(/datum/organ/battery) /obj/item/organ/internal/eyes/optical_sensor name = "optical sensor" icon = 'icons/obj/robot_component.dmi' icon_state = "camera" status = ORGAN_ROBOT -// dead_icon = "camera_broken" weld_proof = TRUE requires_robotic_bodypart = TRUE @@ -150,8 +150,7 @@ /obj/item/organ/internal/ears/microphone name = "microphone" - icon = 'icons/obj/device.dmi' - icon_state = "taperecorder_idle" + icon_state = "voicebox" status = ORGAN_ROBOT dead_icon = "taperecorder_empty" requires_robotic_bodypart = TRUE diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 1f2a0d1603c7..3febb3448849 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -433,7 +433,7 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby")) for(var/V in listeners) var/mob/living/L = V if(L.buckled && istype(L.buckled, /obj/structure/chair)) - L.buckled.unbuckle_mob(L) + L.unbuckle() next_command = world.time + cooldown_meme //DANCE diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index b850e789f921..80fcef082bb8 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -182,6 +182,8 @@ /obj/item/stack/nanopaste = 100 ) + preop_sound = 'sound/surgery/organ1.ogg' + /datum/surgery_step/internal/manipulate_organs/mend/proc/get_tool_name(obj/item/tool) var/tool_name = "[tool]" if(istype(tool, /obj/item/stack/medical/bruise_pack)) @@ -292,11 +294,12 @@ name = "extract organ" allowed_tools = list( TOOL_HEMOSTAT = 100, - /obj/item/stack/sheet/sinew = 70, - /obj/item/stack/cable_coil = 70, + /obj/item/wirecutters = 70, /obj/item/kitchen/utensil/fork = 70 ) + preop_sound = 'sound/surgery/organ1.ogg' + success_sound = 'sound/surgery/organ2.ogg' var/obj/item/organ/internal/extracting = null /datum/surgery_step/internal/manipulate_organs/extract/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -391,6 +394,9 @@ /obj/item/food/organ = 0 // there for the flavor text ) + preop_sound = 'sound/surgery/organ2.ogg' + success_sound = 'sound/surgery/organ1.ogg' + /datum/surgery_step/internal/manipulate_organs/implant/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) if(istype(tool, /obj/item/food/organ)) to_chat(user, "[tool] was bitten by someone! It's too damaged to use!") @@ -644,6 +650,9 @@ TOOL_CROWBAR = 90 ) + preop_sound = 'sound/surgery/retractor1.ogg' + success_sound = 'sound/surgery/retractor2.ogg' + /datum/surgery_step/internal/manipulate_organs/finish/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/mob/living/carbon/human/H = target var/obj/item/organ/external/affected = target.get_organ(target_zone) @@ -708,6 +717,15 @@ TOOL_WIRECUTTER = 35 ) + preop_sound = list( + TOOL_SAW = 'sound/surgery/saw.ogg', + /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', + /obj/item/chainsaw = 'sound/weapons/chainsaw.ogg', + /obj/item/butcher_chainsaw = 'sound/weapons/chainsaw.ogg', + TOOL_WIRECUTTER = 'sound/surgery/scalpel1.ogg' + ) + + success_sound = 'sound/surgery/organ2.ogg' time = 5.4 SECONDS @@ -751,6 +769,9 @@ /obj/item/butcher_chainsaw = 1 ) + preop_sound = 'sound/surgery/scalpel1.ogg' + success_sound = 'sound/surgery/scalpel2.ogg' + failure_sound = 'sound/surgery/organ2.ogg' time = 1.6 SECONDS /datum/surgery_step/cut_carapace/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -788,6 +809,8 @@ /obj/item/kitchen/utensil/fork = 60 ) + preop_sound = 'sound/surgery/retractor1.ogg' + success_sound = 'sound/surgery/retractor2.ogg' time = 2.4 SECONDS /datum/surgery_step/retract_carapace/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -839,6 +862,9 @@ /obj/item/flamethrower = 1 ) + preop_sound = 'sound/surgery/cautery1.ogg' + success_sound = 'sound/surgery/cautery2.ogg' + failure_sound = 'sound/items/welder.ogg' time = 2.4 SECONDS /datum/surgery_step/generic/seal_carapace/proc/zone_name(target_zone) diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 26a174caa348..09ba772bae4c 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -81,6 +81,7 @@ can_infect = TRUE blood_level = SURGERY_BLOODSPREAD_HANDS + preop_sound = 'sound/surgery/organ1.ogg' time = 3.2 SECONDS /datum/surgery_step/fix_vein/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -133,6 +134,7 @@ can_infect = TRUE blood_level = SURGERY_BLOODSPREAD_HANDS + preop_sound = 'sound/surgery/organ1.ogg' time = 3.2 SECONDS /datum/surgery_step/treat_burns/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -190,6 +192,9 @@ /obj/item/shard = 60 ) + preop_sound = 'sound/surgery/scalpel1.ogg' + success_sound = 'sound/surgery/retractor2.ogg' + failure_sound = 'sound/surgery/organ1.ogg' can_infect = TRUE blood_level = SURGERY_BLOODSPREAD_HANDS diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm index 3a2050d8664e..a4941cb7bdaf 100644 --- a/code/modules/surgery/plastic_surgery.dm +++ b/code/modules/surgery/plastic_surgery.dm @@ -15,6 +15,10 @@ allowed_tools = list(TOOL_SCALPEL = 100, /obj/item/kitchen/knife = 50, /obj/item/wirecutters = 35) time = 6.4 SECONDS + preop_sound = 'sound/surgery/scalpel1.ogg' + success_sound = 'sound/surgery/scalpel2.ogg' + failure_sound = 'sound/surgery/organ2.ogg' + /datum/surgery_step/reshape_face/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message( "[user] begins to alter [target]'s appearance.", diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 5c7f42e33cd0..cd4a2d383d77 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -399,6 +399,7 @@ ) I.damage = 0 I.surgeryize() + target.update_stat("internal organs repaired") return ..() /datum/surgery_step/robotics/manipulate_robotic_organs/mend/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 3e5bfdf98eac..4ea5674385da 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -197,6 +197,12 @@ var/silicons_ignore_prob = FALSE /// How many times this step has been automatically repeated. var/times_repeated = 0 + /// Sound played when the step is started. Lists or single value can be used for this var as well as tool defines + var/preop_sound + /// Sound played if the step succeeded. Single value only + var/success_sound + /// Sound played if the step fails. Single value only + var/failure_sound // evil infection stuff that will make everyone hate me @@ -331,6 +337,8 @@ surgery.step_in_progress = FALSE return SURGERY_INITIATE_SUCCESS + play_preop_sound(user, target, target_zone, tool, surgery) + if(tool) speed_mod = tool.toolspeed @@ -386,8 +394,10 @@ surgery.step_in_progress = FALSE if(advance) + play_success_sound(user, target, target_zone, tool, surgery) return SURGERY_INITIATE_SUCCESS else + play_failure_sound(user, target, target_zone, tool, surgery) return SURGERY_INITIATE_FAILURE /** @@ -553,3 +563,26 @@ for(var/reagent in chems_needed) if(target.reagents.has_reagent(reagent)) return TRUE + +/datum/surgery_step/proc/play_preop_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(!preop_sound || (islist(preop_sound) && !length(preop_sound)) || ismachineperson(target)) + return + var/sound_file_use + if(islist(preop_sound)) + for(var/typepath in preop_sound) + if((ispath(typepath) && istype(tool, typepath)) || ((typepath in GLOB.surgery_tool_behaviors) && istype(tool) && tool.tool_behaviour == typepath)) + sound_file_use = preop_sound[typepath] + break + else + sound_file_use = preop_sound + playsound(get_turf(target), sound_file_use, 75, TRUE, falloff_exponent = 12, falloff_distance = 1, channel = CHANNEL_SURGERY_SOUNDS) + +/datum/surgery_step/proc/play_success_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(!success_sound || ismachineperson(target)) + return + playsound(get_turf(target), success_sound, 75, TRUE, falloff_exponent = 12, falloff_distance = 1, channel = CHANNEL_SURGERY_SOUNDS) + +/datum/surgery_step/proc/play_failure_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(!failure_sound || ismachineperson(target)) + return + playsound(get_turf(target), failure_sound, 75, TRUE, falloff_exponent = 12, falloff_distance = 1, channel = CHANNEL_SURGERY_SOUNDS) diff --git a/code/modules/tgui/modules/atmos_control.dm b/code/modules/tgui/modules/atmos_control.dm index 25fdb0e12bb5..e397eefc9626 100644 --- a/code/modules/tgui/modules/atmos_control.dm +++ b/code/modules/tgui/modules/atmos_control.dm @@ -1,5 +1,7 @@ /datum/ui_module/atmos_control name = "Atmospherics Control" + var/parent_area_type + var/z_level /datum/ui_module/atmos_control/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) if(..()) @@ -28,7 +30,15 @@ ) /datum/ui_module/atmos_control/ui_data(mob/user) + var/list/alarms_on_net = GLOB.air_alarms + // default value means main station atmos control + if(parent_area_type) + alarms_on_net = list() + for(var/obj/machinery/alarm/air_alarm in GLOB.air_alarms) + if(air_alarm.alarm_area.type in typesof(parent_area_type)) + alarms_on_net |= air_alarm + var/list/data = list() - data["alarms"] = GLOB.air_alarm_repository.air_alarm_data(GLOB.air_alarms, target_z=level_name_to_num(MAIN_STATION)) + data["alarms"] = GLOB.air_alarm_repository.air_alarm_data(alarms_on_net, target_z = z_level) return data diff --git a/code/modules/tgui/tgui_input/list_input.dm b/code/modules/tgui/tgui_input/list_input.dm index f43ceffdaafa..e037b595fac6 100644 --- a/code/modules/tgui/tgui_input/list_input.dm +++ b/code/modules/tgui/tgui_input/list_input.dm @@ -73,6 +73,8 @@ var/datum/ui_state/state /// Whether the tgui list input is invalid or not (i.e. due to all list entries being null) var/invalid = FALSE + /// The TGUI modal to use for this popup + var/modal_type = "ListInputModal" /datum/tgui_list_input/New(mob/user, message, title, list/items, default, timeout, ui_state) src.title = title @@ -122,7 +124,7 @@ /datum/tgui_list_input/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "ListInputModal") + ui = new(user, src, modal_type) ui.set_autoupdate(FALSE) ui.open() @@ -152,9 +154,8 @@ switch(action) if("submit") - if(!(params["entry"] in items)) + if(!handle_submit_action(params)) return - set_choice(items_map[params["entry"]]) closed = TRUE SStgui.close_uis(src) return TRUE @@ -163,5 +164,12 @@ SStgui.close_uis(src) return TRUE + +/datum/tgui_list_input/proc/handle_submit_action(params) + if(!(params["entry"] in items)) + return FALSE + set_choice(items_map[params["entry"]]) + return TRUE + /datum/tgui_list_input/proc/set_choice(choice) src.choice = choice diff --git a/code/modules/tgui/tgui_input/ranked_list_input.dm b/code/modules/tgui/tgui_input/ranked_list_input.dm new file mode 100644 index 000000000000..80631d568236 --- /dev/null +++ b/code/modules/tgui/tgui_input/ranked_list_input.dm @@ -0,0 +1,56 @@ +/** + * Creates a TGUI input list window and returns the user's response. + * + * This proc should be used to create alerts that the caller will wait for a response from. + * Arguments: + * * user - The user to show the input box to. + * * message - The content of the input box, shown in the body of the TGUI window. + * * title - The title of the input box, shown on the top of the TGUI window. + * * items - The options that can be chosen by the user, each string is assigned a button on the UI. + * * default - If an option is already preselected on the UI. Current values, etc. + * * timeout - The timeout of the input box, after which the menu will close and qdel itself. Set to zero for no timeout. + */ +/proc/tgui_input_ranked_list(mob/user, message, title = "Select", list/items, default, timeout = 0, ui_state = GLOB.always_state) + if(!user) + user = usr + + if(!length(items)) + CRASH("[user] tried to open an empty TGUI Input List. Contents are: [items]") + + if(!istype(user)) + if(!isclient(user)) + CRASH("We passed something that wasn't a user/client in a TGUI Input List! The passed user was [user]!") + var/client/client = user + user = client.mob + + if(isnull(user.client)) + return + + // We don't support disabled TGUI input (PREFTOGGLE_2_DISABLE_TGUI_INPUT), get with the times old man + + var/datum/tgui_list_input/ranked/input = new(user, message, title, items, default, timeout, ui_state) + + if(input.invalid) + qdel(input) + return + + input.ui_interact(user) + input.wait() + if(input) + . = input.choice + qdel(input) + +/** + * # tgui_list_input/ranked + * + * Datum used for allowing a user to sort a TGUI-controlled list input that prompts the user with + * a message and shows a list of rankable options + */ +/datum/tgui_list_input/ranked + modal_type = "RankedListInputModal" + +/datum/tgui_list_input/ranked/handle_submit_action(params) + if(!lists_equal_unordered(params["entry"], items)) + return FALSE + set_choice(params["entry"]) + return TRUE diff --git a/code/modules/tgui/tgui_panel/tgui_panel.dm b/code/modules/tgui/tgui_panel/tgui_panel.dm index 9229de1da493..8478c219c9cf 100644 --- a/code/modules/tgui/tgui_panel/tgui_panel.dm +++ b/code/modules/tgui/tgui_panel/tgui_panel.dm @@ -68,7 +68,7 @@ */ /datum/tgui_panel/proc/on_initialize_timed_out() // Currently does nothing but sending a message to old chat. - SEND_TEXT(client, "Failed to load fancy chat, click HERE to attempt to reload it.") + SEND_TEXT(client, "Failed to load fancy chat, click HERE to attempt to reload it.") /** * private diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 400eae48171e..8f7f9c7d318d 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -24,6 +24,7 @@ #include "spawn_humans.dm" #include "spell_targeting_test.dm" #include "sql.dm" +#include "status_effect_ids.dm" #include "subsystem_init.dm" #include "subsystem_metric_sanity.dm" #include "test_runner.dm" diff --git a/code/modules/unit_tests/status_effect_ids.dm b/code/modules/unit_tests/status_effect_ids.dm new file mode 100644 index 000000000000..febe085e1c7b --- /dev/null +++ b/code/modules/unit_tests/status_effect_ids.dm @@ -0,0 +1,8 @@ +/datum/unit_test/status_effect_ids/Run() + var/list/bad_statuses = list() + for(var/datum/status_effect/effect as anything in subtypesof(/datum/status_effect)) + if(initial(effect.id) == null) + bad_statuses += effect + + if(length(bad_statuses)) + Fail("STatus effects found without an unique ID: [bad_statuses.Join(", ")]") diff --git a/config/example/config.toml b/config/example/config.toml index d3f666725390..47422b062196 100644 --- a/config/example/config.toml +++ b/config/example/config.toml @@ -185,7 +185,7 @@ ipc_screens = [ # Enable/disable the database on a whole sql_enabled = false # SQL version. If this is a mismatch, round start will be delayed -sql_version = 592207 +sql_version = 602207 # SQL server address. Can be an IP or DNS name sql_address = "127.0.0.1" # SQL server port diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md index 4084cf286e70..af8bc67a6938 100644 --- a/docs/CODE_OF_CONDUCT.md +++ b/docs/CODE_OF_CONDUCT.md @@ -42,8 +42,7 @@ merged. After a twenty four hour minimum waiting period, Pull Requests can be merged once they receive approval from the relevant team. An exception is made for -refactors and fixes, which may be merged by any member with commit access' -discretion with no waiting period. +refactors and fixes, which may be merged by any maintainer with no waiting period. While normally provided, voting team members are not obligated to publicly state their objections to a Pull Request. Attacking or berating a voting team member diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index b3b15a1ad335..db5fd2d0c0f5 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -123,8 +123,9 @@ Status of your pull request will be communicated via PR labels. This includes: should never have this label - `Status: Awaiting review` - This will be displayed when your PR has passed the design vote and is now waiting for someone in the review team to approve it -- `Status: Awaiting merge` - Your PR is done and is waiting for someone with - commit access to merge it. **Note: Your PR may be delayed if it is pending +- `Status: Awaiting merge` - Your PR is done and is waiting for a maintainer to merge it + + **Note: Your PR may be delayed if it is pending testmerge or in the mapping queue** ### Mapping Standards @@ -132,26 +133,35 @@ Status of your pull request will be communicated via PR labels. This includes: All PRs which modify maps are expected to follow all of our [mapping requirements](./mapping/requirements.md). -## Modifying MILLA +## Modifying Rust Code + +Some parts of Paradise are written in [Rust][] for performance or reliability +reasons: -Our atmos engine, MILLA, is in the `milla/` directory. It's written in Rust for -performance reasons, which means it's not compiled the same way as the rest of -the code. If you're on Windows, you get a pre-built copy by default. If you're -on Linux, you built one already to run the server. +- Our atmos engine, MILLA, is in the `rust/src/milla/` directory. +- The `mapmanip` library, an Aurora Station module used for automating DMM + modification, is in the `rust/src/mapmanip` library. -If you make changes to MILLA, you'll want to rebuild. This will be very similar -to RUSTG: https://github.com/ParadiseSS13/rust-g The only difference is that you -run `cargo` from the `milla/` directory, and don't need to specify -`--all-features` (though it doesn't hurt). +The Rust parts of our codebase are compiled into a single library, +separate from the rest of the code. If you're on Windows, you get a pre-built +copy by default. If you're on Linux, you built one already to run the server. + +If you make changes to the Rust library, you'll want to rebuild. This will be +very similar to [rust-g][]. The only difference is that you run `cargo` from the +`rust/` directory, and don't need to specify `--all-features` (though it doesn't +hurt). The server will automatically detect that you have a local build, and use that over the default Windows one. -When you're ready to make a PR, please DO NOT modify `milla.dll` or -`tools/ci/libmilla_ci.so`. Leave "Allow edits and access to secrets by -maintainers" enabled, and post a comment on your PR saying `!build_milla`. A bot +When you're ready to make a PR, please DO NOT modify `rustlibs.dll` or +`tools/ci/librustlibs_ci.so`. Leave "Allow edits and access to secrets by +maintainers" enabled, and post a comment on your PR saying `!build_rust`. A bot will automatically build them for you and update your branch. +[Rust]: https://www.rust-lang.org/ +[rust-g]: https://github.com/ParadiseSS13/rust-g + ## Other Notes - Bloated code may be necessary to add a certain feature, which means there has @@ -180,11 +190,11 @@ will automatically build them for you and update your branch. There are three roles on the GitHub: - Headcoder -- Commit Access +- Maintainer - Review Team -Each role inherits the lower role's responsibilities (IE: Headcoders also have -commit access, and members of commit access are also part of the review team) +Each role inherits the lower role's responsibilities +(IE: Headcoders are also maintainers, and maintainers are also part of the review team) `Headcoders` are the overarching "administrators" of the repository. People included in this role are: @@ -195,7 +205,7 @@ included in this role are: --- -`Commit Access` members have write access to the repository and can merge your +`Maintainers` have write access to the repository and can merge your PRs. People included in this role are: - [AffectedArc07](https://github.com/AffectedArc07) @@ -219,6 +229,7 @@ affect mergeability status. People included in this role are: - [lewcc](https://github.com/lewcc) - [Sirryan2002](https://github.com/Sirryan2002) - [Warriorstar](https://github.com/warriorstar-orion) +- [Wilkson](https://github.com/BiancaWilkson) --- diff --git a/docs/contributing/reviewer.md b/docs/contributing/reviewer.md index 96dede831cd0..c96d644de0a8 100644 --- a/docs/contributing/reviewer.md +++ b/docs/contributing/reviewer.md @@ -1,17 +1,17 @@ # Reviewer Crash Course -by *Sirryan* +by _Sirryan_ Hey everyone, I noticed some people were not sure how to approach reviewing PRs so I figured I would write up a small guide on PR reviewing and how people like -our Headcoders, commit access, Lewcc, S34N, and I all do our jobs. In addition +our Headcoders, maintainers, Lewcc, S34N, and I all do our jobs. In addition to some guidance and pointers on PR reviewing, I will also go over a few code examples and point out code standard corrections and basic errors that prospective reviewers can begin to start on. ## What is code review? -> Code reviews act as quality assurance of the code base.... *and* can also act +> Code reviews act as quality assurance of the code base.... _and_ can also act > as a second step in identifying bugs, logic problems, or uncovered edge cases. > [(source)](https://about.gitlab.com/topics/version-control/what-is-code-review/) @@ -54,7 +54,7 @@ their own code and help you understand their intention and goals. Please note: ITS IMPORTANT TO READ PR DESCRIPTIONS, you should not be reviewing a PR until you know what it's actually attempting to do. -**But Sirryan, that's not the *kind* of code review I'm interested in learning +**But Sirryan, that's not the _kind_ of code review I'm interested in learning about**. Yes, yes, I know, I'm getting there. While its important to understand the conversation (and relationship-building) parts of code review, there's also important technical parts to review that keep our codebase moving. Before @@ -62,6 +62,7 @@ getting into HOW to code review, we will take a look at the two types of technical code reviews. ## Comments + Basic comments are when a reviewer leaves a message, question, or directive for the PR author at a certain code line or chunk. For example, SteelSlayer has left a comment on Line 12 of `objective.dm` inquiring about a certain variable. The @@ -73,6 +74,7 @@ issues to be addressed quickly and efficiently. ![image](./images/reviewer_pr_conversation.png) ## Suggestions + Suggestions are when a reviewer suggests/requests a change to a certain line or chunk of code. This leaves less agency for the PR author (especially when suggested by a development team member or experienced reviewer) but allows for @@ -85,6 +87,7 @@ most critical for enforcing code standards and making 1-5 line corrections. ![image](./images/reviewer_pr_suggestions.png) ## Leaving PR Reviews + The way you leave any form of comment or suggestion directly on a line or chunk of code is under the "Files Changed" tab of the pull request. All you need to do now is scroll down to a line of code that you want to comment on and hover over @@ -111,6 +114,7 @@ reviews, you can submit them together in the top right of the files changes tab once done. ## What can I start reviewing? + So you know what reviewing is, you know how to review, and you're ready to review.... but what do you review? Knowledge of code and willingness to understand our currently implemented systems is critically important to being @@ -119,6 +123,7 @@ look out for on PR's to get familiarized with the code review process and get a few reviews under your belt. ### Problematic Code Examples + Lets say a contributor has opened a pull request adding a brand-new item to the game. This item has a few special functions and procs that you need to look over. I will go through each part of this code that I would leave comments or @@ -281,8 +286,8 @@ suggest to fix them as a PR reviewer.** ## The Art of Code > ... I like it because I could make the computer do what I wanted and every -> time I did that, I got this little thrill and this rush and throughout *my -> entire career*. That thrill for me has never gone away [[The Art of Code - Dylan Beattie](https://www.youtube.com/watch?v=6avJHaC3C2U)] +> time I did that, I got this little thrill and this rush and throughout _my +> entire career_. That thrill for me has never gone away [[The Art of Code - Dylan Beattie](https://www.youtube.com/watch?v=6avJHaC3C2U)] This segment might be a bit corny but I figured it would be important to include because I felt like it was an important aspect of reviewing that I've always had diff --git a/docs/mapping/images/mapmanip_contents.png b/docs/mapping/images/mapmanip_contents.png new file mode 100644 index 000000000000..1db7e6b998a9 Binary files /dev/null and b/docs/mapping/images/mapmanip_contents.png differ diff --git a/docs/mapping/images/mapmanip_error.png b/docs/mapping/images/mapmanip_error.png new file mode 100644 index 000000000000..7b7a7608f4ca Binary files /dev/null and b/docs/mapping/images/mapmanip_error.png differ diff --git a/docs/mapping/images/mapmanip_inplace.png b/docs/mapping/images/mapmanip_inplace.png new file mode 100644 index 000000000000..bdc7eb4d5e5c Binary files /dev/null and b/docs/mapping/images/mapmanip_inplace.png differ diff --git a/docs/mapping/images/mapmanip_markers.png b/docs/mapping/images/mapmanip_markers.png new file mode 100644 index 000000000000..d1d732b219cc Binary files /dev/null and b/docs/mapping/images/mapmanip_markers.png differ diff --git a/docs/mapping/images/mapmanip_noops1.png b/docs/mapping/images/mapmanip_noops1.png new file mode 100644 index 000000000000..229c744fed93 Binary files /dev/null and b/docs/mapping/images/mapmanip_noops1.png differ diff --git a/docs/mapping/images/mapmanip_noops2.png b/docs/mapping/images/mapmanip_noops2.png new file mode 100644 index 000000000000..73dfe22290fd Binary files /dev/null and b/docs/mapping/images/mapmanip_noops2.png differ diff --git a/docs/mapping/images/mapmanip_noops3.png b/docs/mapping/images/mapmanip_noops3.png new file mode 100644 index 000000000000..f858899c8795 Binary files /dev/null and b/docs/mapping/images/mapmanip_noops3.png differ diff --git a/docs/mapping/images/mapmanip_noops4.png b/docs/mapping/images/mapmanip_noops4.png new file mode 100644 index 000000000000..7556a52eeb7a Binary files /dev/null and b/docs/mapping/images/mapmanip_noops4.png differ diff --git a/docs/mapping/images/mapmanip_results.png b/docs/mapping/images/mapmanip_results.png new file mode 100644 index 000000000000..8279a034da6e Binary files /dev/null and b/docs/mapping/images/mapmanip_results.png differ diff --git a/docs/mapping/submaps.md b/docs/mapping/submaps.md new file mode 100644 index 000000000000..97168a1b0d86 --- /dev/null +++ b/docs/mapping/submaps.md @@ -0,0 +1,181 @@ +# Guide to Submaps + +> [!NOTE] +> +> This guide was originally written by developer Dreamix for Aurora Station, the +> original codebase the `mapmanip` library was written in. Despite the difference +> in appearance of the screenshots, the guide is still applicable. + +Submaps are a mechanism to allow copy-pasting parts of maps (submaps) into other +maps, implemented with the `mapmanip` library. `mapmanip` is a library for map +manipulation, and happens before the map is actually loaded by the server. This +is implemented using Rust, instead of DM code. Map manipulations are configured +and defined by adding a `.jsonc` file corresponding to a `.dmm` map. Currently, +the only available map manipulation is submap extraction/insertion. + +## But Why + +This allows for adding variations to maps, beyond just using `/obj/random/...` +items. Variations of bigger parts of maps, like, for example, whole rooms. Or +even whole layouts, making it so a map looks different every time it is visited. + +## How To Do It + +1. Firstly, define two markers for each submap. The types need to be unique, and + the types are used later to define where to extract the submap from, and where + to insert it. Here, we want to add some variation to the small warehouse storage + room. + + ```dm + /obj/effect/map_effect/marker/mapmanip/submap/extract/station/boxstation/warehouse_small_storage + name = "Boxstation, Cargo Warehouse Small Storage" + + /obj/effect/map_effect/marker/mapmanip/submap/insert/station/boxstation/warehouse_small_storage + name = "Boxstation, Cargo Warehouse Small Storage" + ``` + +2. Figure out the area that the submap will be inserted into on the map, and add + the insert marker there. In this case the map is + `maps/stations/boxstation.dmm`, and the size of that area is 3x5 + tiles, being the little side warehouse. Here, we want the submaps to only be the + "cargo" or "contents" of the warehouse. So this room is already fully + functional, with lights, cameras, pipes, etc. Do note that the "submap edge" + helper markers are just visual helpers, and they have no function. + + ![](./images/mapmanip_inplace.png) + +3. Create a new map file that will contain the submap variants to extract from. + In this case it is `maps/stations/submaps/warehouse_small_storage.dmm`. + Add all the possible variants here, each having the same extract marker. They + must all be the chosen size, in this case being 3x5 tiles. We want the submaps + to only contain "cargo" or "contents" of the warehouse, so both the turf and + area are set to "noop". How are "noop" areas and turfs handled, see the next + part of this guide. + + ![](./images/mapmanip_contents.png) + +4. Create the mapmanip configuration file, that will actually define the map + manipulation, and make it happen. In this case it is + `maps/stations/boxstation.jsonc`. Do notice how the path and + name of this config file is exactly the same as of the map + `.../boxstation.dmm`, just with a different extension. Each + submap manipulation has these vars defined: + + - `type` - Map manipulation type. For submap manipulations it is "SubmapExtractInsert". + - `submap_size_...` - Size of the submap, width and height. + - `submaps_dmm` - This is the relative path to the DMM file containing the + submaps. Relative, meaning to the `.dmm` that is being loaded. In this + case, it is put in a separate folder for better organization, but it could + be in the same folder as the `.dmm` file that is being manipulated. + - `marker_...` - Typepaths to the insert and extract markers, as defined in + the first step of this guide, and as added into the maps in step two and + three. + - `submaps_can_repeat` - Decides whether submaps can repeat when inserting + them into different places on the map. If there are more extract markers + than insert markers, it is safe to set it to `true`. Otherwise it should + be `false`, or else there may not be enough submaps to insert, and map + manipulation will fail. + + ```json + [ + { + // Boxstation warehouse, intended for randomized items + "type": "SubmapExtractInsert", + "submap_size_x": 3, + "submap_size_y": 5, + "submaps_dmm": "stations/submaps/warehouse_small_storage.dmm", + "marker_extract": "/obj/effect/map_effect/marker/mapmanip/submap/extract/station/boxstation/warehouse_small_storage", + "marker_insert": "/obj/effect/map_effect/marker/mapmanip/submap/insert/station/boxstation/warehouse_small_storage", + "submaps_can_repeat": true // doesn't matter, as there's only one insert marker + } + ] + ``` + +5. Run the server locally and observe the results. + + ![](./images/mapmanip_results.png) + +## Areas and Turfs + +Areas and turfs, and specifically their "noop" types, have special meaning in +submap manipulation. They determine whether the submap manipulation is more like +"replacing" or "appending". The "noop" (short for "no-operation") types for +turfs is `/turf/template_noop`, and for areas it is `/area/template_noop`. + +If neither area nor turf are noop: submap tile atoms replace map tile atoms +entirely, including turf and area. This could be used for submaps that are fully +functional rooms, like a medbay submap and a brig submap, with their own areas +defined in their submaps. + +![](./images/mapmanip_noops1.png) + +If both area and turf are noop: All atoms on a submap tile are inserted/appended +into the map tile, with the exception for area and turf. This can be used for +places like a warehouse, where only the actual cargo is in submaps, and on the +map the warehouse is fully functional and implemented (just empty). + +![](./images/mapmanip_noops2.png) + +If only turf is noop, while area is non-noop: All atoms are inserted/appended +into the map tile, but the resulting area used is of the submap tile. +Admittedly, I cannot think of a good use case for this specific feature, but I +am including it here for completeness. + +![](./images/mapmanip_noops3.png) + +If only area is noop, while turf is non-noop: Submap tile atoms replace map tile +atoms entirely, with the exception of area - resulting area is of the map, not +the submap. This could be used to have different warehouses that use the same +submaps, in different parts of a station or outpost, and so using different +areas. + +![](./images/mapmanip_noops4.png) + +## Errors and Debugging + +If a map manipulation fails, it should do both these things: + +- Return `null`, and in that case the map is loaded without any map + manipulations, as a fallback. +- Generate a stack trace, that can be caught. To do so, must run with debugging, + and have breakpoints on runtime errors. It should show a stack trace like + below, with information about what happened. + + ![](./images/mapmanip_error.png) + +## Other Notes + +- The `.jsonc` config file is using the JSONC format, which is a bit strict to + how it should look, and especially cares about commas. JSONC is "JSON with + comments". Exactly the same as JSON, with the only difference being that it + allows `// comments`. + +- There may be multiple different submap insert/extract manipulations defined + for one map. Every submap manipulation is going to require its own set of + markers. In that case the `.jsonc` would look roughly like this. + + ![](./images/mapmanip_markers.png) + +- If a map has multiple submap operations defined, they can be all in the same + submap dmm file, or can be in different ones. They can also be in the same + folder as the main map, or in some subfolder. Use whatever is best for + organization. + +- Submaps can be "recursive", where a submap may contain a insert marker for + another submap. The contained submaps won't be automatically inserted, + however, and they still require their own manipulations in the config. + +## Possible Uses + +- Warehouse with different cargo every round. One round it could be empty, + another it could have a few crates with guns and armor, another time it could + be full of building materials. +- Armory with a few different possible loadouts. One with lots of weak SMGs and + strong armor, another variant with just a few strong rifles and weak armor. +- Big crew quarters with 20 rooms, but randomly filled with submaps with only 5 variants. +- Hallway on a planetary outpost with one variant where it is fine and "normal", + and another variant where it is blocked by some rocks, forcing people to find + another way through. +- Alternative possible layouts for the whole map, where rooms and departments + are in different places every round. +- The sky is the limit, literally. diff --git a/docs/references/feedback_data.md b/docs/references/feedback_data.md index 4c94ce915371..c129a9397658 100644 --- a/docs/references/feedback_data.md +++ b/docs/references/feedback_data.md @@ -25,12 +25,12 @@ Examples of bad things to record: base game design around" Also note that feedback data **must** be anonymous. The only exception here is -for data *anyone* on the server can see, such as round end antagonist reports. +for data _anyone_ on the server can see, such as round end antagonist reports. ## Feedback Data Recording -Feedback data can be recorded in 5 formats. `amount`, `associative`, `nested -tally`, `tally` and `text`. +Feedback data can be recorded in 7 formats. `amount`, `associative`, +`nested tally`, `tally` `text`, `ledger`, and `nested ledger`. ### Amount @@ -76,18 +76,18 @@ Will produce the following JSON: ```json { - "data": { - "1": { - "text": "example", - "path": "/obj/item", - "number": "4" - }, - "2": { - "number": "7", - "text": "example", - "other text": "sample" - } - } + "data": { + "1": { + "text": "example", + "path": "/obj/item", + "number": "4" + }, + "2": { + "number": "7", + "text": "example", + "other text": "sample" + } + } } ``` @@ -122,29 +122,29 @@ Will produce the following JSON: ```json { - "data":{ - "fruit":{ - "orange":{ - "apricot":4, - "orange":2 - }, - "red":{ - "apple":10 - } - }, - "vegetable":{ - "orange":{ - "carrot":1 - } - } - } + "data": { + "fruit": { + "orange": { + "apricot": 4, + "orange": 2 + }, + "red": { + "apple": 10 + } + }, + "vegetable": { + "orange": { + "carrot": 1 + } + } + } } ``` -#### NOTE +!!! note -Tracking values associated with a number can't merge with a nesting value, -trying to do so will append the list + Tracking values associated with a number can't merge with a nesting value, + trying to do so will append to the list. ```dm SSblackbox.record_feedback("nested tally", "example", 3, list("fruit", "orange")) @@ -154,23 +154,23 @@ Will produce the following JSON: ```json { - "data":{ - "fruit":{ - "orange":{ - "apricot":4, - "orange":2 - }, - "red":{ - "apple":10 - }, - "orange":3 - }, - "vegetable":{ - "orange":{ - "carrot":1 - } - } - } + "data": { + "fruit": { + "orange": { + "apricot": 4, + "orange": 2 + }, + "red": { + "apple": 10 + }, + "orange": 3 + }, + "vegetable": { + "orange": { + "carrot": 1 + } + } + } } ``` @@ -194,10 +194,10 @@ Will produce the following JSON: ```json { - "data":{ - "sample data":5, - "other data":2 - } + "data": { + "sample data": 5, + "other data": 2 + } } ``` @@ -218,10 +218,7 @@ Will produce the following JSON: ```json { - "data":[ - "sample text", - "other text" - ] + "data": ["sample text", "other text"] } ``` @@ -230,6 +227,131 @@ instead of a list with duplicates. Also take note how the `increment` parameter is not used here. It does nothing to the data, and `1` is used just as the value for consistency. +### Ledger + +!!! warning + + The `ledger` and `nested ledger` feedback types should only be used as a + last resort. The primary intent of the blackbox system is to track the + number of times something has happened. It is extremely rare that one should + require the granularity provided by these feedback types accumulating + multiple discrete statistics on a single row. They are provided as an escape + hatch for unusual situations, and to avoid unnecessary repetition of text in + the JSON. + +`ledger` is used for appending entries to a record. It is effectively the same +as `tally`, except instead of adding the value to the existing one, it stores +the value of each call in a list. This is useful for situations where you have a +specific key for which you'd like to store a unique value for each time the key +is used in feedback. For example, if the clown puts on multiple comedy shows and +you want to record the attendance for each one: + +```dm +SSblackbox.record_feedback("ledger", "tickets_sold_per_show", 15, "general_admission") +SSblackbox.record_feedback("ledger", "tickets_sold_per_show", 5, "front_row") +SSblackbox.record_feedback("ledger", "tickets_sold_per_show", 20, "general_admission") +SSblackbox.record_feedback("ledger", "tickets_sold_per_show", 2, "front_row") +``` + +Will produce the following JSON: + +```json +{ + "data": { + "tickets_sold_per_show": { + "general_admission": [15, 20], + "front_row": [5, 2] + } + } +} +``` + +Note that items here may be text. Unlike the `text` feedback type, items are added in order and duplicates are permitted. + +```dm +SSblackbox.record_feedback("ledger", "menu_items", "fried eggs", "breakfast") +SSblackbox.record_feedback("ledger", "menu_items", "coffee", "breakfast") +SSblackbox.record_feedback("ledger", "menu_items", "hamburgers", "lunch") +SSblackbox.record_feedback("ledger", "menu_items", "french fries", "lunch") +``` + +Will produce the following JSON: + +```json +{ + "data": { + "breakfast": ["fried eggs", "coffee"], + "lunch": ["hamburgers", "french fries"] + } +} +``` + +### Nested Ledger + +`nested ledger` uses the logic of `nested tally`, except instead of adding the value to the last element, it uses the last element as the tracking key for a list of items, appending each one. For example, if you wanted to store individual crew ratings for meals made by different chefs: + +```dm +SSblackbox.record_feedback("nested ledger", "meal_ratings", 5, list("Chef Marceau", "hamburger")) +SSblackbox.record_feedback("nested ledger", "meal_ratings", 2, list("Chef Marceau", "hamburger")) +SSblackbox.record_feedback("nested ledger", "meal_ratings", 1, list("Chef Poincare", "hamburger")) +SSblackbox.record_feedback("nested ledger", "meal_ratings", 3, list("Chef Poincare", "hamburger")) +``` + +Will produce the following JSON: + +```json +{ + "data": { + "Chef Marceau": { "hamburger": [5, 2] }, + "Chef Poincare": { "hamburger": [1, 3] } + } +} +``` + +As with `ledger`, text values may be accumulated in this manner. + +### Appropriate use of `ledger` + +If one were tracking the individual center coordinates of each ruin placed, and +the same ruin may be placed more thanonce, use of the `associative` feedback +type may result in this implementation: + +```dm +var/coord_string = "[central_turf.x],[central_turf.y],[central_turf.z]" +SSblackbox.record_feedback("associative", "ruin_placement", 1, list( + "map" = map_filename, + "coords" = coord_string +)) +``` + +returning the following JSON: + +```json +{ + "data": { + "1": { "map": "listeningpost.dmm", "coords": "127,169,5" }, + "2": { "map": "listeningpost.dmm", "coords": "64,134,4" } + } +} +``` + +This creates unnecessary repetition of the map name, as well as the `"map"` and `"coords"` keys. As well, the numeric keys associated with each row are meaningless. Using `ledger` may transform this into: + +```dm +var/coord_string = "[central_turf.x],[central_turf.y],[central_turf.z]" +SSblackbox.record_feedback("ledger", "ruin_placement", coord_string, map_filename) +``` + +returning the following JSON: + +```json +{ + "data": { + "listeningpost.dmm": ["127,169,5", "64,134,4"] + } +} +``` + ## Feedback Versioning If the logging content (i.e.: What data is logged) for a variable is ever diff --git a/icons/_nanomaps/Cyberiad220_nanomap_z1.png b/icons/_nanomaps/Cyberiad220_nanomap_z1.png index 329a9f41ad84..be7faca085e1 100644 Binary files a/icons/_nanomaps/Cyberiad220_nanomap_z1.png and b/icons/_nanomaps/Cyberiad220_nanomap_z1.png differ diff --git a/icons/_nanomaps/Cyberiad_nanomap_z1.png b/icons/_nanomaps/Cyberiad_nanomap_z1.png index 0dfa15c98903..72984d0eff04 100644 Binary files a/icons/_nanomaps/Cyberiad_nanomap_z1.png and b/icons/_nanomaps/Cyberiad_nanomap_z1.png differ diff --git a/icons/_nanomaps/Delta220_nanomap_z1.png b/icons/_nanomaps/Delta220_nanomap_z1.png index d46650bb65ba..ff6afa9746bf 100644 Binary files a/icons/_nanomaps/Delta220_nanomap_z1.png and b/icons/_nanomaps/Delta220_nanomap_z1.png differ diff --git a/icons/_nanomaps/Delta_nanomap_z1.png b/icons/_nanomaps/Delta_nanomap_z1.png index 4a7639246ba0..b7089bf344e0 100644 Binary files a/icons/_nanomaps/Delta_nanomap_z1.png and b/icons/_nanomaps/Delta_nanomap_z1.png differ diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 71eb30617c32..7bd1e5397130 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/beam_splash.dmi b/icons/effects/beam_splash.dmi new file mode 100644 index 000000000000..d7deb3e9275c Binary files /dev/null and b/icons/effects/beam_splash.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 59f096c94316..54528f607ee9 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/exposures.dmi b/icons/effects/exposures.dmi index 13f976ceb9d6..1560835049e5 100644 Binary files a/icons/effects/exposures.dmi and b/icons/effects/exposures.dmi differ diff --git a/icons/effects/map_effects_96x96.dmi b/icons/effects/map_effects_96x96.dmi new file mode 100644 index 000000000000..fa0c418f3740 Binary files /dev/null and b/icons/effects/map_effects_96x96.dmi differ diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi index d22a0eb914c3..4fcf4dbf0a8e 100644 Binary files a/icons/effects/mapping_helpers.dmi and b/icons/effects/mapping_helpers.dmi differ diff --git a/icons/effects/random_spawners.dmi b/icons/effects/random_spawners.dmi index 325fb1ae5e09..993e5aa9a249 100644 Binary files a/icons/effects/random_spawners.dmi and b/icons/effects/random_spawners.dmi differ diff --git a/icons/effects/spawner_icons.dmi b/icons/effects/spawner_icons.dmi index 1b9730e53796..0417843bf621 100644 Binary files a/icons/effects/spawner_icons.dmi and b/icons/effects/spawner_icons.dmi differ diff --git a/icons/goonstation/objects/pda_overlay.dmi b/icons/goonstation/objects/pda_overlay.dmi index 7c4fa677eb5a..3b5068e1303a 100644 Binary files a/icons/goonstation/objects/pda_overlay.dmi and b/icons/goonstation/objects/pda_overlay.dmi differ diff --git a/icons/mecha/mech_construct.dmi b/icons/mecha/mech_construct.dmi index fe81a8e2b96c..3ac2bc928f82 100644 Binary files a/icons/mecha/mech_construct.dmi and b/icons/mecha/mech_construct.dmi differ diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi index e89db4ff9adb..f00b27e101c1 100644 Binary files a/icons/mecha/mech_construction.dmi and b/icons/mecha/mech_construction.dmi differ diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi index 28b04958109b..ea0d7391cc65 100644 Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi index 50c0338d8315..f26012f32596 100644 Binary files a/icons/mecha/mecha_equipment.dmi and b/icons/mecha/mecha_equipment.dmi differ diff --git a/icons/mob/actions/actions_mod.dmi b/icons/mob/actions/actions_mod.dmi index faef21cd4c72..f4217c872874 100644 Binary files a/icons/mob/actions/actions_mod.dmi and b/icons/mob/actions/actions_mod.dmi differ diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi index abbbc2b7d2a9..6f74879c7a95 100644 Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi index 0d669c5831cd..e72a728175b8 100644 Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 1ad1058c2600..5ca919a9b329 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/modsuit/species/vox_modsuits.dmi b/icons/mob/clothing/modsuit/species/vox_modsuits.dmi index 51062b33f4b5..0897e30a17e8 100644 Binary files a/icons/mob/clothing/modsuit/species/vox_modsuits.dmi and b/icons/mob/clothing/modsuit/species/vox_modsuits.dmi differ diff --git a/icons/mob/clothing/species/drask/under/color.dmi b/icons/mob/clothing/species/drask/under/color.dmi index 50da6be897ff..c91b1131eae7 100644 Binary files a/icons/mob/clothing/species/drask/under/color.dmi and b/icons/mob/clothing/species/drask/under/color.dmi differ diff --git a/icons/mob/clothing/species/drask/under/misc.dmi b/icons/mob/clothing/species/drask/under/misc.dmi index f0ccad809bf6..cb74beea95b1 100644 Binary files a/icons/mob/clothing/species/drask/under/misc.dmi and b/icons/mob/clothing/species/drask/under/misc.dmi differ diff --git a/icons/mob/clothing/species/grey/under/color.dmi b/icons/mob/clothing/species/grey/under/color.dmi index 4e3ae9b67339..e286752d6599 100644 Binary files a/icons/mob/clothing/species/grey/under/color.dmi and b/icons/mob/clothing/species/grey/under/color.dmi differ diff --git a/icons/mob/clothing/species/grey/underwear.dmi b/icons/mob/clothing/species/grey/underwear.dmi index 217c7fdfb3b3..372137a3c69c 100644 Binary files a/icons/mob/clothing/species/grey/underwear.dmi and b/icons/mob/clothing/species/grey/underwear.dmi differ diff --git a/icons/mob/clothing/species/kidan/gloves.dmi b/icons/mob/clothing/species/kidan/gloves.dmi index 61c77fe0e7f5..a6fe5c50b1b8 100644 Binary files a/icons/mob/clothing/species/kidan/gloves.dmi and b/icons/mob/clothing/species/kidan/gloves.dmi differ diff --git a/icons/mob/clothing/species/kidan/under/color.dmi b/icons/mob/clothing/species/kidan/under/color.dmi index babe2b8fcf1c..b9548a7d3d9f 100644 Binary files a/icons/mob/clothing/species/kidan/under/color.dmi and b/icons/mob/clothing/species/kidan/under/color.dmi differ diff --git a/icons/mob/clothing/species/kidan/underwear.dmi b/icons/mob/clothing/species/kidan/underwear.dmi index 9bf4c06c22af..89b9c68c3749 100644 Binary files a/icons/mob/clothing/species/kidan/underwear.dmi and b/icons/mob/clothing/species/kidan/underwear.dmi differ diff --git a/icons/mob/clothing/species/vox/under/color.dmi b/icons/mob/clothing/species/vox/under/color.dmi index 99c31857f3ee..82303ac4d400 100644 Binary files a/icons/mob/clothing/species/vox/under/color.dmi and b/icons/mob/clothing/species/vox/under/color.dmi differ diff --git a/icons/mob/clothing/species/vox/underwear.dmi b/icons/mob/clothing/species/vox/underwear.dmi index 1d8a7873d376..72da557c997c 100644 Binary files a/icons/mob/clothing/species/vox/underwear.dmi and b/icons/mob/clothing/species/vox/underwear.dmi differ diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index b72165ac3c74..fcbd77823588 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/mob/clothing/under/color.dmi b/icons/mob/clothing/under/color.dmi index 9ed1fc55cc59..633488f11cc1 100644 Binary files a/icons/mob/clothing/under/color.dmi and b/icons/mob/clothing/under/color.dmi differ diff --git a/icons/mob/clothing/under/misc.dmi b/icons/mob/clothing/under/misc.dmi index d6c57b179932..b090f2cd3cf1 100644 Binary files a/icons/mob/clothing/under/misc.dmi and b/icons/mob/clothing/under/misc.dmi differ diff --git a/icons/mob/clothing/underwear.dmi b/icons/mob/clothing/underwear.dmi index d3223ee75a31..e16e5bb4d5f7 100644 Binary files a/icons/mob/clothing/underwear.dmi and b/icons/mob/clothing/underwear.dmi differ diff --git a/icons/mob/inhands/religion_lefthand.dmi b/icons/mob/inhands/religion_lefthand.dmi index c4338544e5d4..d866505d0753 100644 Binary files a/icons/mob/inhands/religion_lefthand.dmi and b/icons/mob/inhands/religion_lefthand.dmi differ diff --git a/icons/mob/inhands/religion_righthand.dmi b/icons/mob/inhands/religion_righthand.dmi index 4603a803fdd0..b60de5043166 100644 Binary files a/icons/mob/inhands/religion_righthand.dmi and b/icons/mob/inhands/religion_righthand.dmi differ diff --git a/icons/mob/screen_ai.dmi b/icons/mob/screen_ai.dmi index a85564d85965..989f62e68d05 100644 Binary files a/icons/mob/screen_ai.dmi and b/icons/mob/screen_ai.dmi differ diff --git a/icons/mob/screen_midnight.dmi b/icons/mob/screen_midnight.dmi index f1a82e36245d..ad82f1280802 100644 Binary files a/icons/mob/screen_midnight.dmi and b/icons/mob/screen_midnight.dmi differ diff --git a/icons/mob/screen_operative.dmi b/icons/mob/screen_operative.dmi index 3645c91aea5b..e0ace87e5d1a 100644 Binary files a/icons/mob/screen_operative.dmi and b/icons/mob/screen_operative.dmi differ diff --git a/icons/mob/screen_plasmafire.dmi b/icons/mob/screen_plasmafire.dmi index 3e22531ad769..da228456ee45 100644 Binary files a/icons/mob/screen_plasmafire.dmi and b/icons/mob/screen_plasmafire.dmi differ diff --git a/icons/mob/screen_retro.dmi b/icons/mob/screen_retro.dmi index a7ffcad04fa2..3fa0025ab7bc 100644 Binary files a/icons/mob/screen_retro.dmi and b/icons/mob/screen_retro.dmi differ diff --git a/icons/mob/screen_slimecore.dmi b/icons/mob/screen_slimecore.dmi index 42f79c6dde7c..2e261c40cf3e 100644 Binary files a/icons/mob/screen_slimecore.dmi and b/icons/mob/screen_slimecore.dmi differ diff --git a/icons/mob/screen_white.dmi b/icons/mob/screen_white.dmi index 82854f531846..8b444e12e2a8 100644 Binary files a/icons/mob/screen_white.dmi and b/icons/mob/screen_white.dmi differ diff --git a/icons/mob/simple_human.dmi b/icons/mob/simple_human.dmi index f9d20142d74f..93e03c30a40c 100644 Binary files a/icons/mob/simple_human.dmi and b/icons/mob/simple_human.dmi differ diff --git a/icons/obj/bodybag.dmi b/icons/obj/bodybag.dmi index 23ee9f7fe0e2..ed3b0f79b167 100644 Binary files a/icons/obj/bodybag.dmi and b/icons/obj/bodybag.dmi differ diff --git a/icons/obj/boxes.dmi b/icons/obj/boxes.dmi index a9f0326fc752..e0c018cb6d63 100644 Binary files a/icons/obj/boxes.dmi and b/icons/obj/boxes.dmi differ diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index 7ee905462de2..632bde3b53aa 100644 Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 7b15e3ba1f9d..f8361b867980 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/under/color.dmi b/icons/obj/clothing/under/color.dmi index 2c51ac4a39f9..8b375da0e675 100644 Binary files a/icons/obj/clothing/under/color.dmi and b/icons/obj/clothing/under/color.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index 8c0188175caf..c11cef0cef1e 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index e54f4c4cca28..9d78a9877d0b 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/food/bakedgoods.dmi b/icons/obj/food/bakedgoods.dmi index 967d54ae9689..4f738921fa5f 100644 Binary files a/icons/obj/food/bakedgoods.dmi and b/icons/obj/food/bakedgoods.dmi differ diff --git a/icons/obj/food/breakfast.dmi b/icons/obj/food/breakfast.dmi index 0d8cbc9bcbd3..ae5aff5037e6 100644 Binary files a/icons/obj/food/breakfast.dmi and b/icons/obj/food/breakfast.dmi differ diff --git a/icons/obj/food/candy.dmi b/icons/obj/food/candy.dmi index a58abc2e9d04..dd7acd3200bc 100644 Binary files a/icons/obj/food/candy.dmi and b/icons/obj/food/candy.dmi differ diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi index 224c8bfb9bf4..4ddb808bcd3f 100644 Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index f5388ee43454..d5a6a5c1f098 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/food/soupsalad.dmi b/icons/obj/food/soupsalad.dmi index c92df9de7682..5a16fcbaee27 100644 Binary files a/icons/obj/food/soupsalad.dmi and b/icons/obj/food/soupsalad.dmi differ diff --git a/icons/obj/guncabinet.dmi b/icons/obj/guncabinet.dmi index bf5128e74161..ee54b131fbef 100644 Binary files a/icons/obj/guncabinet.dmi and b/icons/obj/guncabinet.dmi differ diff --git a/icons/obj/hydroponics/growing_fruits.dmi b/icons/obj/hydroponics/growing_fruits.dmi index 8d77be19157d..f01bec11fce3 100644 Binary files a/icons/obj/hydroponics/growing_fruits.dmi and b/icons/obj/hydroponics/growing_fruits.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index 0a0965085415..ded1705672d1 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 a303e76a4db6..db4b781941c9 100644 Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ diff --git a/icons/obj/lamps.dmi b/icons/obj/lamps.dmi index e3f9fabb8454..29d8e21bc401 100644 Binary files a/icons/obj/lamps.dmi and b/icons/obj/lamps.dmi differ diff --git a/icons/obj/legacy_closet.dmi b/icons/obj/legacy_closet.dmi new file mode 100644 index 000000000000..79af106cc8fd Binary files /dev/null and b/icons/obj/legacy_closet.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index a934d0a1df01..6d887c8114d5 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi index 882a166680f1..1a772a813e47 100644 Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 6b1120c01923..fb0edc51ba4f 100644 Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi index c46385244658..ef5c8a97767c 100644 Binary files a/icons/obj/radio.dmi and b/icons/obj/radio.dmi differ diff --git a/icons/obj/shell_boxes.dmi b/icons/obj/shell_boxes.dmi new file mode 100644 index 000000000000..615e189a9191 Binary files /dev/null and b/icons/obj/shell_boxes.dmi differ diff --git a/icons/obj/species_organs/vox.dmi b/icons/obj/species_organs/vox.dmi index e7af999d3e52..1f5cbc26f2a7 100644 Binary files a/icons/obj/species_organs/vox.dmi and b/icons/obj/species_organs/vox.dmi differ diff --git a/icons/obj/statue.dmi b/icons/obj/statue.dmi index 1567097b3c62..de14c4fb7767 100644 Binary files a/icons/obj/statue.dmi and b/icons/obj/statue.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 56837b40a89c..8a21b505ce4e 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/structures/shelves.dmi b/icons/obj/structures/shelves.dmi new file mode 100644 index 000000000000..fd3991998c4f Binary files /dev/null and b/icons/obj/structures/shelves.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 7b660f0615f3..7b9baa407237 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index 67375dfa6abf..ada0ef227e20 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/obj/weapons/magical_weapons.dmi b/icons/obj/weapons/magical_weapons.dmi index 78224676efe5..f8be67a8c08c 100644 Binary files a/icons/obj/weapons/magical_weapons.dmi and b/icons/obj/weapons/magical_weapons.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 8252365ad8a5..371e919052e4 100755 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 3283b4f083bf..e024f21d33c4 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/ui_icons/inventory/pda.png b/icons/ui_icons/inventory/pda.png index fff1c7fcd8c2..c23438382972 100644 Binary files a/icons/ui_icons/inventory/pda.png and b/icons/ui_icons/inventory/pda.png differ diff --git a/interface/skin.dmf b/interface/skin.dmf index b220ebbf9e07..fba3a791d2d5 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -392,7 +392,7 @@ window "infowindow" elem "statbrowser" type = BROWSER pos = 0,0 - size = 640x477 + size = 640x480 anchor1 = 0,0 anchor2 = 100,100 is-default = true diff --git a/milla.dll b/milla.dll deleted file mode 100755 index f2f985c418bb..000000000000 Binary files a/milla.dll and /dev/null differ diff --git a/milla/Cargo.toml b/milla/Cargo.toml deleted file mode 100644 index 268df469456a..000000000000 --- a/milla/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "milla" -version = "1.0.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -crate-type = ["cdylib"] - -[dependencies] -atomic_float = "1.0.0" -bitflags = "2.5.0" -byondapi = { git = "https://github.com/spacestation13/byondapi-rs.git", version = "0.4.7" } -eyre = "0.6.12" -rand = { version = "0.8.5", features = ["small_rng"] } -scc = "2.1.1" -thread-priority = "1.1.0" diff --git a/milla/src/logging.rs b/milla/src/logging.rs deleted file mode 100644 index 9a5d64291049..000000000000 --- a/milla/src/logging.rs +++ /dev/null @@ -1,26 +0,0 @@ -use std::backtrace::Backtrace; -use std::fs::File; -use std::io::Write; - -/// Simple logging function, appends to ./milla_log.txt -#[allow(dead_code)] -pub(crate) fn write_log>(x: T) { - let mut f = File::options() - .create(true) - .append(true) - .open("./milla_log.txt") - .unwrap(); - writeln!(&mut f, "{}", String::from_utf8_lossy(x.as_ref())).unwrap(); -} - -/// Panic handler that dumps info out to ./milla_panic.txt (overwriting) if we crash. -pub(crate) fn setup_panic_handler() { - std::panic::set_hook(Box::new(|info| { - let backtrace = Backtrace::force_capture(); - std::fs::write( - "./milla_panic.txt", - format!("Panic {:#?}\n{:#?}", info, backtrace), - ) - .unwrap(); - })) -} diff --git a/mkdocs.yml b/mkdocs.yml index 6545bbd06e0d..e3533b9ca27e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -86,6 +86,7 @@ nav: - 'Mapping Quickstart': './mapping/quickstart.md' - 'Mapping Requirements': './mapping/requirements.md' - 'Design Guidelines': './mapping/design.md' + - 'Guide to Submaps': './mapping/submaps.md' - 'References': - 'Glossary': './references/glossary.md' diff --git a/modular_ss220/_defines220/code/emote.dm b/modular_ss220/_defines220/code/emote.dm index d22543b1c4a5..2b8bf2c2405f 100644 --- a/modular_ss220/_defines220/code/emote.dm +++ b/modular_ss220/_defines220/code/emote.dm @@ -121,6 +121,8 @@ #define EMOTE_HUMAN_WHIP "Ударить хвостом" #define EMOTE_HUMAN_BARK "Гавкнуть" #define EMOTE_HUMAN_WBARK "Дважды гавкнуть" +#define EMOTE_HUMAN_MEOW "Мяукнуть" +#define EMOTE_HUMAN_MROW "Мяукнуть раздражённо" /// Carbon Emotes #define EMOTE_CARBON_BLINK "Моргать" diff --git a/modular_ss220/aesthetics/closets/icons/closets.dmi b/modular_ss220/aesthetics/closets/icons/closets.dmi index c36b0b3d1046..63e33eab1a31 100644 Binary files a/modular_ss220/aesthetics/closets/icons/closets.dmi and b/modular_ss220/aesthetics/closets/icons/closets.dmi differ diff --git a/modular_ss220/aesthetics/floors/code/floors.dm b/modular_ss220/aesthetics/floors/code/floors.dm index 7a3602c5a14d..c004880c2d30 100644 --- a/modular_ss220/aesthetics/floors/code/floors.dm +++ b/modular_ss220/aesthetics/floors/code/floors.dm @@ -1,11 +1,14 @@ -/// Floor icon_states for floor painter +// MARK: Floor painter +/datum/painter/floor + floor_icon = 'modular_ss220/aesthetics/floors/icons/floors.dmi' + /datum/painter/floor/New() + . = ..() allowed_states |= list("darkneutralcorner", "darkneutral", "darkneutralfull", "navybluecorners", "navyblue", "navybluefull", "navybluealt", "navybluealtstrip", "navybluecornersalt", "darkbluealt", "darkbluealtstrip", "darkbluecornersalt", "darkredalt", "darkredaltstrip", "darkredcornersalt", "darkyellowalt", "darkyellowaltstrip", "darkyellowcornersalt", "whitebrowncorner", "whitebrown" ) - . = ..() /turf/simulated/floor icon = 'modular_ss220/aesthetics/floors/icons/floors.dmi' @@ -19,10 +22,7 @@ /turf/simulated/floor/plasteel/smooth icon_state = "smooth" -// LIGHT FLOORS -/turf/simulated/floor/light - icon = 'icons/turf/floors.dmi' - +// MARK: LIGHT FLOORS /turf/simulated/floor/light/red color = "#f23030" light_color = "#f23030" diff --git a/modular_ss220/aesthetics/floors/icons/floors.dmi b/modular_ss220/aesthetics/floors/icons/floors.dmi index 73cf73061e31..285a2b410aa3 100644 Binary files a/modular_ss220/aesthetics/floors/icons/floors.dmi and b/modular_ss220/aesthetics/floors/icons/floors.dmi differ diff --git a/modular_ss220/aesthetics/floors/icons/tiles.dmi b/modular_ss220/aesthetics/floors/icons/tiles.dmi index 391fc26f0930..019ca3ba4fb8 100644 Binary files a/modular_ss220/aesthetics/floors/icons/tiles.dmi and b/modular_ss220/aesthetics/floors/icons/tiles.dmi differ diff --git a/modular_ss220/aesthetics/lights/code/lights.dm b/modular_ss220/aesthetics/lights/code/lights.dm index 8ceb44863939..84b7c65eaa62 100644 --- a/modular_ss220/aesthetics/lights/code/lights.dm +++ b/modular_ss220/aesthetics/lights/code/lights.dm @@ -12,6 +12,9 @@ icon = 'icons/obj/lighting.dmi' layer = ABOVE_MOB_LAYER +/obj/machinery/light/floor + icon = 'icons/obj/lighting.dmi' + /obj/machinery/light_construct icon = 'modular_ss220/aesthetics/lights/icons/lights.dmi' layer = ABOVE_MOB_LAYER @@ -20,11 +23,17 @@ icon = 'icons/obj/lighting.dmi' layer = ABOVE_MOB_LAYER +/obj/machinery/light_construct/floor + icon = 'icons/obj/lighting.dmi' + /obj/item/mounted/frame/light_fixture icon = 'modular_ss220/aesthetics/lights/icons/lights.dmi' /obj/item/mounted/frame/light_fixture/small icon = 'icons/obj/lighting.dmi' +/obj/item/mounted/frame/light_fixture/floor + icon = 'icons/obj/lighting.dmi' + /obj/item/flashlight/lamp on = FALSE diff --git a/modular_ss220/aesthetics/racks/code/racks.dm b/modular_ss220/aesthetics/racks/code/racks.dm index 6fc8b358459f..d1dc5520d4d0 100644 --- a/modular_ss220/aesthetics/racks/code/racks.dm +++ b/modular_ss220/aesthetics/racks/code/racks.dm @@ -1,109 +1,12 @@ /obj/structure/rack icon = 'modular_ss220/aesthetics/racks/icons/racks.dmi' -/obj/structure/rack/gunrack - name = "gun rack" - desc = "Стойка для хранения оружия." - icon_state = "gunrack" - -/obj/item/gun - var/on_rack = FALSE - -/obj/item/gun/proc/place_on_rack() - on_rack = TRUE - var/matrix/M = matrix() - M.Turn(-90) - transform = M - -/obj/item/gun/proc/remove_from_rack() - if(on_rack) - var/matrix/M = matrix() - transform = M - on_rack = FALSE - -/obj/item/gun/pickup(mob/user) - . = ..() - remove_from_rack() - -/obj/structure/rack/gunrack/MouseDrop_T(obj/O, mob/user) - if(!(istype(O, /obj/item/gun))) - to_chat(user, span_warning("Этот предмет не помещается!")) - return - . = ..() - if(.) - add_fingerprint(user) - var/obj/item/gun/our_gun = O - our_gun.place_on_rack() - -/obj/structure/rack/gunrack/attackby(obj/item/W, mob/user, params) //TODO: fix logic - if(!(istype(W, /obj/item/gun))) - to_chat(user, span_warning("Этот предмет не помещается!")) - return - . = ..() - if(W.loc != get_turf(src)) - return - - var/obj/item/gun/our_gun = W - our_gun.place_on_rack() - - add_fingerprint(user) - var/list/click_params = params2list(params) - if(!length(click_params)) - return - - var/click_icon_x = click_params["icon-x"] - var/click_icon_y = click_params["icon-y"] - - //Center the icon where the user clicked. - if(!click_icon_x || !click_icon_y) - return - - var/max_pixelshift = world.icon_size / 2 - var/min_pixelshift = -max_pixelshift - - //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) - W.pixel_x = clamp(text2num(click_icon_x) - 16, min_pixelshift, max_pixelshift) - W.pixel_y = 0 - -/obj/structure/rack/gunrack/Initialize(mapload) - . = ..() - if(!mapload) - return - for(var/obj/item/gun/gun_inside in loc.contents) - gun_inside.place_on_rack() - -/obj/structure/rack/gunrack/deconstruct(disassembled = TRUE) - if(flags & NODECONSTRUCT) - return - - density = FALSE - var/obj/item/rack_parts/gunrack/newparts = new(loc) - transfer_fingerprints_to(newparts) - - for(var/obj/item/I in loc.contents) - if(istype(I, /obj/item/gun)) - var/obj/item/gun/to_remove = I - to_remove.remove_from_rack() - qdel(src) - -/obj/item/rack_parts/gunrack - name = "gun rack parts" - desc = "Детали для сборки оружейной стойки." +/obj/item/rack_parts icon = 'modular_ss220/aesthetics/racks/icons/racks.dmi' - icon_state = "gunrack_parts" - -/obj/item/rack_parts/gunrack/attack_self(mob/user) - if(building) - return - building = TRUE - to_chat(user, span_notice("Вы начинаете собирать оружейную стойку...")) - - if(!do_after(user, 50, target = user, progress=TRUE) || !user.drop_item(src)) - building = FALSE - return +/obj/structure/gunrack + icon = 'modular_ss220/aesthetics/racks/icons/racks.dmi' - var/obj/structure/rack/gunrack/rack = new(user.loc) - user.visible_message(span_notice("[user] собирает оружейную стойку."), span_notice("Вы закончили собирать оружейную стойку.")) - rack.add_fingerprint(user) - qdel(src) +// Return original icon path +/obj/structure/rack/skeletal_bar + icon = 'icons/obj/stationobjs.dmi' diff --git a/modular_ss220/aesthetics/racks/icons/racks.dmi b/modular_ss220/aesthetics/racks/icons/racks.dmi index a06925c0e717..ae46a57da420 100644 Binary files a/modular_ss220/aesthetics/racks/icons/racks.dmi and b/modular_ss220/aesthetics/racks/icons/racks.dmi differ diff --git a/modular_ss220/agent_id_tgui/code/agent_id_tgui.dm b/modular_ss220/agent_id_tgui/code/agent_id_tgui.dm index 2afafc97e2b8..effcd2d15b6e 100644 --- a/modular_ss220/agent_id_tgui/code/agent_id_tgui.dm +++ b/modular_ss220/agent_id_tgui/code/agent_id_tgui.dm @@ -3,7 +3,8 @@ blood_type = null fingerprint_hash = null var/mob/living/carbon/human/registered_human - var/static/list/appearances + var/static/list/restricted_appearances = list("admin", "deathsquad", "clownsquad", "data", "ERT_empty", "silver", "gold", "TDred", "TDgreen") + var/static/list/appearances = GLOB.card_skins_ss220 + GLOB.card_skins_special_ss220 + GLOB.card_skins_donor_ss220 - restricted_appearances var/static/list/departments = list( "Assistant" = null, "Service" = GLOB.service_positions, @@ -17,18 +18,6 @@ "Custom" = null, ) -/obj/item/card/id/syndicate/New() - . = ..() - var/static/list/final_appearances = list() - - if(length(final_appearances) == 0) - var/static/list/restricted_skins = list("admin", "deathsquad", "clownsquad", "data", "ERT_empty", "silver", "gold", "TDred", "TDgreen") - var/static/list/raw_appearances = GLOB.card_skins_ss220 + GLOB.card_skins_special_ss220 + GLOB.card_skins_donor_ss220 - restricted_skins - for(var/skin in raw_appearances) - final_appearances[skin] = "[icon2base64(icon(initial(icon), skin, SOUTH, 1))]" - - appearances = final_appearances - /obj/item/card/id/syndicate/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) if(..() || !registered_human) return @@ -136,6 +125,7 @@ /obj/item/card/id/syndicate/ui_static_data(mob/user) var/list/data = list() + data["icon"] = icon data["appearances"] = appearances return data diff --git a/modular_ss220/antagonists/code/blood_brothers/blood_brothers_team.dm b/modular_ss220/antagonists/code/blood_brothers/blood_brothers_team.dm index 79f156d7a1d4..3a51c41354c0 100644 --- a/modular_ss220/antagonists/code/blood_brothers/blood_brothers_team.dm +++ b/modular_ss220/antagonists/code/blood_brothers/blood_brothers_team.dm @@ -46,11 +46,11 @@ /datum/team/blood_brothers_team/handle_adding_member(datum/mind/new_member) . = ..() - update_name() + update_brother_name() /datum/team/blood_brothers_team/handle_removing_member(datum/mind/member, force) . = ..() - update_name() + update_brother_name() /datum/team/blood_brothers_team/proc/get_brother_names_text(datum/mind/brother_to_exclude) var/list/brother_names = list() @@ -68,7 +68,7 @@ if(istext(chosen_meeting_area)) meeting_area = chosen_meeting_area -/datum/team/blood_brothers_team/proc/update_name() +/datum/team/blood_brothers_team/proc/update_brother_name() PRIVATE_PROC(TRUE) var/new_name = get_brother_names_text() if(!new_name) diff --git a/modular_ss220/antagonists/code/guns/biogun.dm b/modular_ss220/antagonists/code/guns/biogun.dm index c0261847946d..314b057299e3 100644 --- a/modular_ss220/antagonists/code/guns/biogun.dm +++ b/modular_ss220/antagonists/code/guns/biogun.dm @@ -70,7 +70,7 @@ fire_damage = 1 unsuitable_atmos_damage = 0 mob_size = MOB_SIZE_TINY - flying = FALSE + initial_traits = list(TRAIT_FLYING) melee_damage_lower = 10 melee_damage_upper = 15 diff --git a/modular_ss220/antagonists/code/vox_raider/clothing/vox_clothing.dm b/modular_ss220/antagonists/code/vox_raider/clothing/vox_clothing.dm index 143a879c9593..b0bcdb329659 100644 --- a/modular_ss220/antagonists/code/vox_raider/clothing/vox_clothing.dm +++ b/modular_ss220/antagonists/code/vox_raider/clothing/vox_clothing.dm @@ -41,37 +41,3 @@ name = "vox purple jumpsuit" icon_state = "vox-jumpsuit_purple" item_color = "vox-jumpsuit_purple" - -// ================ -// loadout -/datum/gear/racial/vox_jumpsuit - display_name = "vox work jumpsuit" - description = "These loose clothes are optimized for the labors of the lower castes onboard the arkships. Large openings in the top allow for breathability while the pants are durable yet flexible enough to not restrict movement." - path = /obj/item/clothing/under/vox/jumpsuit - slot = SLOT_HUD_JUMPSUIT - -/datum/gear/racial/vox_jumpsuit/red - display_name = "vox red jumpsuit" - path = /obj/item/clothing/under/vox/jumpsuit/red - -/datum/gear/racial/vox_jumpsuit/teal - display_name = "vox teal jumpsuit" - path = /obj/item/clothing/under/vox/jumpsuit/teal - -/datum/gear/racial/vox_jumpsuit/blue - display_name = "vox blue jumpsuit" - path = /obj/item/clothing/under/vox/jumpsuit/blue - -/datum/gear/racial/vox_jumpsuit/green - display_name = "vox green jumpsuit" - path = /obj/item/clothing/under/vox/jumpsuit/green - -/datum/gear/racial/vox_jumpsuit/yellow - display_name = "vox yellow jumpsuit" - path = /obj/item/clothing/under/vox/jumpsuit/yellow - -/datum/gear/racial/vox_jumpsuit/purple - display_name = "vox purple jumpsuit" - path = /obj/item/clothing/under/vox/jumpsuit/purple - -// ================ diff --git a/modular_ss220/antagonists/code/vox_raider/clothing/vox_gloves.dm b/modular_ss220/antagonists/code/vox_raider/clothing/vox_gloves.dm index 4f4422ab5ab6..57b937b979a3 100644 --- a/modular_ss220/antagonists/code/vox_raider/clothing/vox_gloves.dm +++ b/modular_ss220/antagonists/code/vox_raider/clothing/vox_gloves.dm @@ -16,6 +16,15 @@ resistance_flags = NONE armor = list(MELEE = 30, BULLET = 0, LASER = 10, ENERGY = 10, BOMB = 0, RAD = 0, FIRE = 200, ACID = 50) +/obj/item/clothing/gloves/vox/light + name = "light vox gauntlets" + desc = "Легкие рукавицы причудливой формы с когтями." + strip_delay = 2 SECONDS + cold_protection = 0 + min_cold_protection_temperature = NONE + max_heat_protection_temperature = NONE + armor = NONE + /obj/item/clothing/gloves/color/yellow/vox name = "insulated vox gauntlets" desc = "Плотные изоляционные рукавицы причудливой формы с когтями." diff --git a/modular_ss220/antagonists/code/vox_raider/vox_raider_team.dm b/modular_ss220/antagonists/code/vox_raider/vox_raider_team.dm index 07f5746aa4a5..eba5a040bbbe 100644 --- a/modular_ss220/antagonists/code/vox_raider/vox_raider_team.dm +++ b/modular_ss220/antagonists/code/vox_raider/vox_raider_team.dm @@ -24,13 +24,13 @@ /datum/team/vox_raiders/handle_adding_member(datum/mind/new_member) . = ..() - update_name() + update_reider_name() /datum/team/vox_raiders/handle_removing_member(datum/mind/member, force = FALSE) . = ..() - update_name() + update_reider_name() -/datum/team/vox_raiders/proc/update_name() +/datum/team/vox_raiders/proc/update_reider_name() PRIVATE_PROC(TRUE) var/new_name = get_raider_names_text() if(!new_name) diff --git a/modular_ss220/awaymission_gun/code/items/awaymission_gun.dm b/modular_ss220/awaymission_gun/code/items/awaymission_gun.dm index 7963859f9ef0..1e71e346868d 100644 --- a/modular_ss220/awaymission_gun/code/items/awaymission_gun.dm +++ b/modular_ss220/awaymission_gun/code/items/awaymission_gun.dm @@ -18,7 +18,7 @@ /obj/item/gun/energy/laser/awaymission_aeg/onTransitZ(old_z, new_z) . = ..() - if(is_away_level(new_z) || (!is_station_level(new_z) && check_level_trait(new_z, REACHABLE_SPACE_ONLY))) + if(is_away_level(new_z)) if(ismob(loc)) to_chat(loc, span_notice("Ваш [src] активируется, начиная аккумулировать энергию из материи сущего.")) selfcharge = TRUE diff --git a/modular_ss220/camera_nanomap/code/camera.dm b/modular_ss220/camera_nanomap/code/camera.dm index 81dcf0bef311..ba92bbb29f59 100644 --- a/modular_ss220/camera_nanomap/code/camera.dm +++ b/modular_ss220/camera_nanomap/code/camera.dm @@ -71,7 +71,7 @@ z = C.z, status = C.status )) - if("[C.z]" in z_levels || !C.nanomap_png) + if(("[C.z]" in z_levels) || !C.nanomap_png) continue z_levels += list("[C.z]" = C.nanomap_png) // Sort it by z levels diff --git a/modular_ss220/clothing/_clothing.dm b/modular_ss220/clothing/_clothing.dm index d6e8b24db3df..e8581715c24f 100644 --- a/modular_ss220/clothing/_clothing.dm +++ b/modular_ss220/clothing/_clothing.dm @@ -1,7 +1,7 @@ /datum/modpack/clothing name = "Одежда" desc = "Всё для модного приговора." - author = "Aylong220, Yata9arasu" + author = "Aylong, Yata9arasu, Dekupich" /datum/modpack/clothing/initialize() . = ..() diff --git a/modular_ss220/clothing/_clothing.dme b/modular_ss220/clothing/_clothing.dme index 7d41d6f1a1d2..a70b69054c10 100644 --- a/modular_ss220/clothing/_clothing.dme +++ b/modular_ss220/clothing/_clothing.dme @@ -11,3 +11,4 @@ #include "code/shoes.dm" #include "code/suits.dm" #include "code/under.dm" +#include "code/mod.dm" diff --git a/modular_ss220/clothing/code/cloaks.dm b/modular_ss220/clothing/code/cloaks.dm index 18b5c130f63f..00a8afca9355 100644 --- a/modular_ss220/clothing/code/cloaks.dm +++ b/modular_ss220/clothing/code/cloaks.dm @@ -6,6 +6,62 @@ icon_override = 'modular_ss220/clothing/icons/mob/cloaks.dmi' item_state = "capcloak_black" -/obj/item/clothing/suit/mantle/armor/captain_black/Initialize(mapload) +/obj/item/clothing/suit/mantle/armor/captain/black/Initialize(mapload) . = ..() desc = "Носится верховным лидером станции [station_name()]." + +/* EI cloak */ +/obj/item/clothing/suit/hooded/ei_cloak + name = "плащ Gold On Black" + desc = "Корпоративный плащ, выполненный в угольных тонах все с тем же золотым покрытием и специальным логотипом от Etamin Industry – золотой звездой." + icon = 'modular_ss220/clothing/icons/object/cloaks.dmi' + icon_state = "ei_cloak" + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Kidan" = 'modular_ss220/clothing/icons/mob/species/kidan/cloaks.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/cloaks.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Diona" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Nian" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/cloaks.dmi', + "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/cloaks.dmi', + "Drask" = 'modular_ss220/clothing/icons/mob/species/drask/cloaks.dmi', + ) + hoodtype = /obj/item/clothing/head/hooded/ei_hood + +/obj/item/clothing/head/hooded/ei_hood + name = "капюшон Gold On Black" + desc = "Капюшон, прикрепленный к плащу Gold On Black." + icon = 'modular_ss220/clothing/icons/object/hats.dmi' + icon_state = "ei_hood" + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/species/tajaran/hats.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/species/vulpkanin/hats.dmi', + "Kidan" = 'modular_ss220/clothing/icons/mob/species/kidan/hats.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/hats.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Diona" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Nian" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/hats.dmi', + "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/hats.dmi', + "Drask" = 'modular_ss220/clothing/icons/mob/species/drask/hats.dmi', + ) + flags = BLOCKHAIR + flags_inv = HIDEEARS diff --git a/modular_ss220/clothing/code/clothing_vendors.dm b/modular_ss220/clothing/code/clothing_vendors.dm index f81c968c0b00..fc2c06a42e5f 100644 --- a/modular_ss220/clothing/code/clothing_vendors.dm +++ b/modular_ss220/clothing/code/clothing_vendors.dm @@ -2,8 +2,12 @@ products += list( /obj/item/clothing/head/ratge = 1, ) + contraband += list( + /obj/item/clothing/mask/rooster = 1, + ) prices += list( /obj/item/clothing/head/ratge = 75, + /obj/item/clothing/mask/rooster = 100, ) . = ..() diff --git a/modular_ss220/clothing/code/garment_bag.dm b/modular_ss220/clothing/code/garment_bag.dm index 4d2e33cded53..461b6d20af61 100644 --- a/modular_ss220/clothing/code/garment_bag.dm +++ b/modular_ss220/clothing/code/garment_bag.dm @@ -1,7 +1,7 @@ /obj/item/storage/bag/garment/captain/populate_contents() . = ..() new /obj/item/clothing/head/caphat/beret_black(src) - new /obj/item/clothing/suit/mantle/armor/captain_black(src) + new /obj/item/clothing/suit/mantle/armor/captain/black(src) /obj/item/storage/bag/garment/head_of_security/populate_contents() . = ..() diff --git a/modular_ss220/clothing/code/gloves.dm b/modular_ss220/clothing/code/gloves.dm index 8aba91917253..4ffc9b00fcbe 100644 --- a/modular_ss220/clothing/code/gloves.dm +++ b/modular_ss220/clothing/code/gloves.dm @@ -4,3 +4,30 @@ icon = 'modular_ss220/clothing/icons/object/gloves.dmi' icon_state = "bike_gloves" icon_override = 'modular_ss220/clothing/icons/mob/hands.dmi' + +/* EI gloves */ +/obj/item/clothing/gloves/color/ei_gloves + name = "перчатки Gold On Black" + desc = "Качественные перчатки с золотой вставкой 999 пробы." + icon = 'modular_ss220/clothing/icons/object/gloves.dmi' + icon_state = "ei_gloves" + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Kidan" = 'modular_ss220/clothing/icons/mob/species/kidan/gloves.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/gloves.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Diona" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Nian" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/hands.dmi', + "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/gloves.dmi', + "Drask" = 'modular_ss220/clothing/icons/mob/species/drask/gloves.dmi', + ) diff --git a/modular_ss220/clothing/code/hats.dm b/modular_ss220/clothing/code/hats.dm index fa24b469073d..bc0697a2ad7d 100644 --- a/modular_ss220/clothing/code/hats.dm +++ b/modular_ss220/clothing/code/hats.dm @@ -134,3 +134,8 @@ /obj/item/clothing/head/towel/brown name = "коричневая шапочка из полотенца" color = "#DEB887" + +/obj/item/clothing/head/beret/centcom/intern + name = "nanotrasen intern beret" + desc = "Берет стажера НТ. Белый берет с зеленой звездой. Выглядит подозрительно похожим на берет главного инженера..." + icon_state = "beret_ce" diff --git a/modular_ss220/clothing/code/helmet.dm b/modular_ss220/clothing/code/helmet.dm index 9cc35613eb78..dafe0ce18f82 100644 --- a/modular_ss220/clothing/code/helmet.dm +++ b/modular_ss220/clothing/code/helmet.dm @@ -129,6 +129,15 @@ icon_state = "ember_sec" item_state = "ember_sec" +/obj/item/clothing/head/helmet/ert/security/paranormal + icon_state = "knight_templar" + item_state = "knight_templar" + sprite_sheets = list( + "Vox" = 'icons/mob/clothing/species/vox/helmet.dmi', + "Drask" = 'icons/mob/clothing/species/drask/helmet.dmi', + "Grey" = 'icons/mob/clothing/species/grey/helmet.dmi' + ) + /obj/item/clothing/head/helmet/space/ert_engineer name = "emergency response team engineer space helmet" desc = "Space helmet worn by engineering members of the Nanotrasen Emergency Response Team. Has orange highlights." diff --git a/modular_ss220/clothing/code/hev_suit.dm b/modular_ss220/clothing/code/hev_suit.dm index 5c2358074ae9..690a07abd833 100644 --- a/modular_ss220/clothing/code/hev_suit.dm +++ b/modular_ss220/clothing/code/hev_suit.dm @@ -107,7 +107,7 @@ add_queue('modular_ss220/aesthetics_sounds/sound/hev/death.ogg', 5 SECONDS, purge_queue=TRUE) //Mute -/obj/item/clothing/suit/space/hev/proc/handle_speech(datum/source, mob/speech_args) +/obj/item/clothing/suit/space/hev/proc/handle_speech(datum/source, list/speech_args) SIGNAL_HANDLER var/static/list/cancel_messages = list( "Вам трудно говорить, когда костюм туго сдавливает ваше горло...", diff --git a/modular_ss220/clothing/code/mask.dm b/modular_ss220/clothing/code/mask.dm index 53f8378b0142..2b5895df3840 100644 --- a/modular_ss220/clothing/code/mask.dm +++ b/modular_ss220/clothing/code/mask.dm @@ -68,3 +68,58 @@ icon = 'modular_ss220/clothing/icons/object/masks.dmi' icon_override = 'modular_ss220/clothing/icons/mob/mask.dmi' icon_state = "breathscarf" + +/obj/item/clothing/mask/rooster + w_class = WEIGHT_CLASS_SMALL + flags = BLOCKHAIR + flags_inv = HIDEEARS | HIDEEYES | HIDEFACE + flags_cover = MASKCOVERSMOUTH + modifies_speech = TRUE + species_restricted = list("Human", "Nian", "Skrell", "Slime People", "Diona", "Skeleton", "Shadow") + +/obj/item/clothing/mask/rooster + name = "маска петуха" + desc = "Прямо из Острой дороги космо-Майами. Со встроенными фразами." + icon = 'modular_ss220/clothing/icons/object/masks.dmi' + icon_override = 'modular_ss220/clothing/icons/mob/mask.dmi' + icon_state = "rooster_mask" + +/obj/item/clothing/mask/rooster/handle_speech(datum/source, list/speech_args) + var/message = speech_args[SPEECH_MESSAGE] + if(!length(message)) + return + if(prob(3)) + message += pick( + ". Тебе нравится причинять людям боль?", + ". Вы вернулись, да?", + ". Что, бля, за неуважение?", + ) + speech_args[SPEECH_MESSAGE] = trim(message) + +/* EI mask */ +/obj/item/clothing/mask/breath/ei_mask + name = "дыхательная маска от EI" + desc = "Качество и надежность, а самое главное - безопасность." + icon = 'modular_ss220/clothing/icons/object/masks.dmi' + icon_state = "ei_mask" + flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/species/vulpkanin/mask.dmi', + "Kidan" = 'modular_ss220/clothing/icons/mob/species/kidan/mask.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/species/unathi/mask.dmi', + "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/mask.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Diona" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Nian" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/mask.dmi', + "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/mask.dmi', + "Drask" = 'modular_ss220/clothing/icons/mob/species/drask/mask.dmi', + ) diff --git a/modular_ss220/clothing/code/mod.dm b/modular_ss220/clothing/code/mod.dm new file mode 100644 index 000000000000..26a4d974fabd --- /dev/null +++ b/modular_ss220/clothing/code/mod.dm @@ -0,0 +1,280 @@ +// MARK: MODsuit clothes +/obj/item/clothing/head/mod/exclusive + icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' + item_state = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' + icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi', + ) + +/obj/item/clothing/suit/mod/exclusive + icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' + item_state = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' + icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi', + ) + +/obj/item/clothing/gloves/mod/exclusive + icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' + item_state = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' + icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi', + ) + +/obj/item/clothing/shoes/mod/exclusive + icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' + item_state = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' + icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi', + ) + +// MARK: MODsuit control +/obj/item/mod/control/proc/build_head() + return new /obj/item/clothing/head/mod(src) + +/obj/item/mod/control/proc/build_suit() + return new /obj/item/clothing/suit/mod(src) + +/obj/item/mod/control/proc/build_gloves() + return new /obj/item/clothing/gloves/mod(src) + +/obj/item/mod/control/proc/build_shoes() + return new /obj/item/clothing/shoes/mod(src) + +/obj/item/mod/control/proc/is_any_part_deployed() + for(var/obj/item/part as anything in mod_parts) + if(part.loc != src) + return TRUE + return FALSE + +// This is kinda sick but we need to retract it before the actual species change. +/obj/item/mod/control/proc/pre_species_gain(datum/species/new_species) + if(!wearer) + return + if(is_any_part_deployed() && !theme.is_species_allowed(new_species)) + // Deactivate MODsuit to respect the species allowed. + to_chat(wearer, span_warning("Ошибка видовой принадлежности! Деактивация.")) + if(active) + var/old_activation_step_time = activation_step_time + activation_step_time = 0.1 SECONDS // gotta go fast + toggle_activate(wearer, force_deactivate = TRUE) + activation_step_time = old_activation_step_time + quick_deploy(wearer) + +/obj/item/mod/control/quick_deploy(mob/user) + user = user || loc // why the fuck this is nullable + if(!is_any_part_deployed() && !theme.is_species_allowed(user.dna.species)) + to_chat(user, span_warning("Ошибка видовой принадлежности! Развертывание недоступно.")) + playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + return FALSE + return ..() + +/obj/item/mod/control/deploy(mob/user, obj/item/part, mass) + user = user || loc // why the fuck this is nullable + if(!mass && part.loc != user && !theme.is_species_allowed(user.dna.species)) + to_chat(user, span_warning("Ошибка видовой принадлежности! Развертывание недоступно.")) + playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + return FALSE + return ..() + +/obj/item/mod/control/pre_equipped/exclusive + icon = 'modular_ss220/clothing/icons/object/mod_clothing.dmi' + icon_override = 'modular_ss220/clothing/icons/mob/mod_clothing.dmi' + +/obj/item/mod/control/pre_equipped/exclusive/build_head() + return new /obj/item/clothing/head/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/exclusive/build_suit() + return new /obj/item/clothing/suit/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/exclusive/build_gloves() + return new /obj/item/clothing/gloves/mod/exclusive(src) + +/obj/item/mod/control/pre_equipped/exclusive/build_shoes() + return new /obj/item/clothing/shoes/mod/exclusive(src) + +// MARK: MODsuit Theme +/datum/mod_theme + /// Which species are allowed to deploy MODsuit. Consider empty list as no restriction. + var/list/species_allowed = list() + +/datum/mod_theme/proc/is_species_allowed(datum/species/species) + if(!length(species_allowed)) + return TRUE + if(!(species.name in species_allowed)) + return FALSE + return TRUE + +/mob/living/carbon/human/change_dna(datum/dna/new_dna, include_species_change) + if(istype(back, /obj/item/mod/control)) + INVOKE_ASYNC(back, TYPE_PROC_REF(/obj/item/mod/control, pre_species_gain), new_dna.species) + return ..() + +/mob/living/carbon/human/set_species(datum/species/new_species, use_default_color = FALSE, delay_icon_update = FALSE, skip_same_check = FALSE, retain_damage = FALSE, transformation = FALSE, keep_missing_bodyparts = FALSE) + if(istype(back, /obj/item/mod/control)) + INVOKE_ASYNC(back, TYPE_PROC_REF(/obj/item/mod/control, pre_species_gain), new_species) + return ..() + +// MARK: Skrell elite MODsuit - Raskinta +/datum/mod_theme/skrell_raskinta + name = "\improper raskinta" + desc = "Боевая броня с функцией костюма для ВКД, созданная для воинов Раскинта Ме'керр-Кэтиш." + extended_desc = "Массивный бронекостюм, выполненный в черно-синих цветах, является отличительной чертой \ + военных формирований Раскинта-Кэтиш. Защитные пластины состоят из укрепленной керамики, в то время как \ + каркасные пластины выполнены из сплавов вороной пластали, позволяющей эффективно поглощать и рассеивать энергию \ + через радиаторные отводы на \"хвостовых\" окончаниях шлема. \ + Этот костюм является самым часто встречаемым в штурмовых отрядах Оборонительных Сил Скреллов." + default_skin = "skrell_elite" + armor_type_1 = /obj/item/mod/armor/mod_theme_skrell_raskinta + flag_2_flags = RAD_PROTECT_CONTENTS_2 + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + siemens_coefficient = 0 + slowdown_inactive = 1 + slowdown_active = 0.25 + complexity_max = DEFAULT_MAX_COMPLEXITY + 5 + allowed_suit_storage = list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/restraints/handcuffs, + /obj/item/flash, + /obj/item/melee/baton, + /obj/item/gun, + /obj/item/melee/vibroblade, + ) + species_allowed = list("Skrell") + skins = list( + "skrell_elite" = list( + MOD_ICON_OVERRIDE = 'modular_ss220/clothing/icons/object/mod_clothing.dmi', + HELMET_FLAGS = list( + UNSEALED_LAYER = COLLAR_LAYER, + + SEALED_CLOTHING = THICKMATERIAL | STOPSPRESSUREDMAGE | BLOCK_GAS_SMOKE_EFFECT | BLOCKHAIR, + UNSEALED_INVISIBILITY = HIDEFACE, + SEALED_INVISIBILITY = HIDEMASK | HIDEEYES | HIDEFACE, + SEALED_COVER = HEADCOVERSMOUTH | HEADCOVERSEYES, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + ), + ) + +/obj/item/mod/armor/mod_theme_skrell_raskinta + armor = list(MELEE = 40, BULLET = 25, LASER = 25, ENERGY = 20, BOMB = 25, RAD = INFINITY, FIRE = 200, ACID = 200) + +/obj/item/mod/control/pre_equipped/exclusive/skrell_raskinta + theme = /datum/mod_theme/skrell_raskinta + applied_cell = /obj/item/stock_parts/cell/super + applied_modules = list( + /obj/item/mod/module/storage/syndicate, + /obj/item/mod/module/emp_shield, + /obj/item/mod/module/status_readout, + /obj/item/mod/module/flashlight, + /obj/item/mod/module/magboot/advanced, + /obj/item/mod/module/jetpack/advanced, + ) + default_pins = list( + /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/magboot/advanced, + ) + +// MARK: Skrell elite MODsuit - Sardaukars +/datum/mod_theme/skrell_sardaukars + name = "\improper emperor guard" + desc = "Элитная боевая броня гвардейцев Скреллианской империи." + extended_desc = "Благодаря высшим технологическим достижениям скреллов этот костюм сочетает в себе \ + невероятные показатели защищенности и мобильности, являясь незаменимой вещью на вооружении свирепых Куи'кверр-Кэтиш. \ + Носящие его воины являются личной гвардией Императора и выполняют самые сложные задачи по его воле. \ + Кроваво-белоснежные цвета, отождествляющие кровь врагов и власть Его Величества, скорее всего последнее \ + что вы увидите в своей жизни." + default_skin = "skrell_white" + armor_type_1 = /obj/item/mod/armor/mod_theme_skrell_sardaukars + resistance_flags = FIRE_PROOF + flag_2_flags = RAD_PROTECT_CONTENTS_2 + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + siemens_coefficient = 0 + slowdown_inactive = 0.5 + slowdown_active = 0 + complexity_max = DEFAULT_MAX_COMPLEXITY + 10 + allowed_suit_storage = list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/restraints/handcuffs, + /obj/item/flash, + /obj/item/melee/baton, + /obj/item/gun, + /obj/item/melee/vibroblade, + ) + species_allowed = list("Skrell") + skins = list( + "skrell_white" = list( + MOD_ICON_OVERRIDE = 'modular_ss220/clothing/icons/object/mod_clothing.dmi', + HELMET_FLAGS = list( + UNSEALED_LAYER = COLLAR_LAYER, + + SEALED_CLOTHING = THICKMATERIAL | STOPSPRESSUREDMAGE | BLOCK_GAS_SMOKE_EFFECT | BLOCKHAIR, + UNSEALED_INVISIBILITY = HIDEFACE, + SEALED_INVISIBILITY = HIDEMASK | HIDEEYES | HIDEFACE, + SEALED_COVER = HEADCOVERSMOUTH | HEADCOVERSEYES, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDMAGE, + CAN_OVERSLOT = TRUE, + ), + ), + ) + +/obj/item/mod/armor/mod_theme_skrell_sardaukars + armor = list(MELEE = 120, BULLET = 120, LASER = 100, ENERGY = 50, BOMB = 100, RAD = INFINITY, FIRE = INFINITY, ACID = INFINITY) + +/obj/item/mod/control/pre_equipped/exclusive/skrell_sardaukars + theme = /datum/mod_theme/skrell_sardaukars + applied_cell = /obj/item/stock_parts/cell/bluespace + applied_modules = list( + /obj/item/mod/module/storage/bluespace, + /obj/item/mod/module/emp_shield, + /obj/item/mod/module/flashlight, + /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/status_readout, + /obj/item/mod/module/magboot/advanced, + /obj/item/mod/module/visor/thermal + ) + default_pins = list( + /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/magboot/advanced, + /obj/item/mod/module/visor/thermal + ) + +/obj/item/mod/control/pre_equipped/exclusive/skrell_sardaukars/Initialize(mapload, new_theme, new_skin, new_core, new_access) + . = ..() + ADD_TRAIT(chestplate, TRAIT_RSG_IMMUNE, ROUNDSTART_TRAIT) diff --git a/modular_ss220/clothing/code/shoes.dm b/modular_ss220/clothing/code/shoes.dm index fbafc4a45651..4e24b850ffe3 100644 --- a/modular_ss220/clothing/code/shoes.dm +++ b/modular_ss220/clothing/code/shoes.dm @@ -93,7 +93,7 @@ set_light(0) glow_active = FALSE - update_icon_state() + update_icon(UPDATE_ICON_STATE) /// Opens user input for changing neon color /obj/item/clothing/shoes/black/neon/proc/change_color(mob/user) @@ -101,7 +101,7 @@ color = temp light_color = temp reload_neon_overlay(user) - update_icon_state() + update_icon(UPDATE_ICON_STATE) /* Shark Shoes */ /obj/item/clothing/shoes/shark @@ -166,3 +166,32 @@ /obj/item/clothing/shoes/clown_shoes/slippers, ) category = CAT_CLOTHING + +/* EI shoes */ +/obj/item/clothing/shoes/ei_shoes + name = "ботинки Gold On Black" + desc = "Черный ботинки в классическом стиле с легким золотым напылением от корпорации Etamin Industry." + icon = 'modular_ss220/clothing/icons/object/shoes.dmi' + icon_state = "ei_shoes" + lefthand_file = 'modular_ss220/clothing/icons/inhands/left_hand.dmi' + righthand_file = 'modular_ss220/clothing/icons/inhands/right_hand.dmi' + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Kidan" = 'modular_ss220/clothing/icons/mob/species/kidan/shoes.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Grey" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Diona" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Nian" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/shoes.dmi', + "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/shoes.dmi', + "Drask" = 'modular_ss220/clothing/icons/mob/species/drask/shoes.dmi', + ) diff --git a/modular_ss220/clothing/code/suits.dm b/modular_ss220/clothing/code/suits.dm index dc0d4aae4e78..f1b7a3a7960f 100644 --- a/modular_ss220/clothing/code/suits.dm +++ b/modular_ss220/clothing/code/suits.dm @@ -262,6 +262,21 @@ desc = "Парадный плащ нового образца, внедряемый на объектах компании в последнее время. Отличительной чертой является стоячий воротник и резаный подол. Невысокие показатели защиты нивелируются пафосом, источаемым этим плащом." icon_state = "ntsc_coat" +/obj/item/clothing/under/rank/centcom/intern + name = "nanotrasen intern uniform" + desc = "Стандартная униформа стажера НТ. Обладает не самым хорошим качеством, однако вполне сгодится для удовлетворения амбиций стажера. В комплекте идёт зеленый галстук. Слава НТ!" + icon = 'icons/obj/clothing/under/procedure.dmi' + icon_state = "iaa" + item_state = "iaa" + item_color = "iaa" + sprite_sheets = list( + "Human" = 'icons/mob/clothing/under/procedure.dmi', + "Vox" = 'icons/mob/clothing/species/vox/under/procedure.dmi', + "Drask" = 'icons/mob/clothing/species/drask/under/procedure.dmi', + "Grey" = 'icons/mob/clothing/species/grey/under/procedure.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/under/procedure.dmi' + ) + /* SYNDICATE */ /obj/item/clothing/suit/space/deathsquad/officer/syndie name = "куртка офицера синдиката" @@ -306,6 +321,14 @@ icon_state = "ember_sec" item_state = "ember_sec" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + +/obj/item/clothing/suit/armor/vest/ert/security/paranormal + icon_state = "knight_templar" + item_state = "knight_templar" + sprite_sheets = list( + "Vox" = 'icons/mob/clothing/species/vox/suit.dmi' + ) + /obj/item/clothing/suit/space/ert_engineer name = "emergency response team engineer space suit" desc = "Space suit worn by engineering members of the Nanotrasen Emergency Response Team. Has orange highlights." @@ -357,3 +380,60 @@ "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/suits.dmi', "Monkey" = 'modular_ss220/clothing/icons/mob/species/monkey/suits.dmi', ) + +/* EI suits */ +/obj/item/clothing/suit/storage/ei_jacket + name = "кожаная куртка Rock on Black" + desc = "Сочетание настоящего рокерского духа и современного стиля. При взгляде на вас, у каждого возникнет лишь одна мысль: «Это настоящий рок спирит!»." + icon = 'modular_ss220/clothing/icons/object/suits.dmi' + icon_state = "ei_jacket_open" + ignore_suitadjust = FALSE + suit_adjusted = TRUE + actions_types = list(/datum/action/item_action/openclose) + adjust_flavour = "unzip" + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Kidan" = 'modular_ss220/clothing/icons/mob/species/kidan/suits.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/suits.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Diona" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Nian" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/suits.dmi', + "Drask" = 'modular_ss220/clothing/icons/mob/species/drask/suits.dmi', + ) + lefthand_file = 'modular_ss220/clothing/icons/inhands/left_hand.dmi' + righthand_file = 'modular_ss220/clothing/icons/inhands/right_hand.dmi' + +/obj/item/clothing/suit/storage/ei_coat + name = "офицерский плащ EI" + desc = "Этот плащ был создан специально для офицеров корпорации Etamin Industry. Если вы видите его на ком-то, то либо перед вами офицер корпорации, либо тот, кто отдал бешеные бабки за этот плащ." + icon = 'modular_ss220/clothing/icons/object/suits.dmi' + icon_state = "ei_coat" + species_restricted = list("Human", "Tajaran", "Vulpkanin", "Skrell", "Nucleation", "Skeleton", "Slime People", "Unathi", "Abductor", "Golem", "Machine", "Shadow") + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/suits.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/suits.dmi', + ) + lefthand_file = 'modular_ss220/clothing/icons/inhands/left_hand.dmi' + righthand_file = 'modular_ss220/clothing/icons/inhands/right_hand.dmi' + diff --git a/modular_ss220/clothing/code/under.dm b/modular_ss220/clothing/code/under.dm index 21a69ce23a36..bc2703bbe27b 100644 --- a/modular_ss220/clothing/code/under.dm +++ b/modular_ss220/clothing/code/under.dm @@ -49,226 +49,6 @@ "Nucleation" = 'modular_ss220/clothing/icons/mob/under.dmi', ) -/obj/item/clothing/under/yellowgreen_skirt - name = "жёлто-зеленая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Жёлто-зеленый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "yellowgreen_skirt" - item_color = "yellowgreen_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/aqua_skirt - name = "юбка цвета морской волны" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Морской экземпляр. Любите длинные названия?" - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "aqua_skirt" - item_color = "aqua_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/black_skirt - name = "чёрная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Чёрный экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "black_skirt" - item_color = "black_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/blue_skirt - name = "синяя юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Синий экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "blue_skirt" - item_color = "blue_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/brown_skirt - name = "коричневая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Коричневый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "brown_skirt" - item_color = "brown_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/darkblue_skirt - name = "тёмно-синяя юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Тёмно-синий экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "darkblue_skirt" - item_color = "darkblue_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/darkred_skirt - name = "тёмно-красная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Тёмно-красный экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "darkred_skirt" - item_color = "darkred_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/green_skirt - name = "зелёная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Зелёный экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "green_skirt" - item_color = "green_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/grey_skirt - name = "серая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Серый экземпляр. Не забудьте противогаз." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "grey_skirt" - item_color = "grey_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightblue_skirt - name = "голубая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Голубой экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightblue_skirt" - item_color = "lightblue_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightbrown_skirt - name = "светло-коричневая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Светло-коричневый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightbrown_skirt" - item_color = "lightbrown_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightgreen_skirt - name = "салатовая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Салатовый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightgreen_skirt" - item_color = "lightgreen_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightpurple_skirt - name = "сиреневая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Сиреневый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightpurple_skirt" - item_color = "lightpurple_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/lightred_skirt - name = "пунцовая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Пунцовый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "lightred_skirt" - item_color = "lightred_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/orange_skirt - name = "оранжевая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Оранжевый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "orange_skirt" - item_color = "orange_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/pink_skirt - name = "розовая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Розовый экземпляр. Очень нежный." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "pink_skirt" - item_color = "pink_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/prisoner_skirt - name = "тюремная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Тюремный экземпляр. Для самых милых и робких." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "prisoner_skirt" - item_color = "prisoner_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/purple_skirt - name = "фиолетовая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Фиолетовый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "purple_skirt" - item_color = "purple_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/rainbow_skirt - name = "разноцветная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Разноцветный экземпляр. Для неопределившихся." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "rainbow_skirt" - item_color = "rainbow_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/red_skirt - name = "красная юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Красный экземпляр. Работая по обе стороны, не забывайте про любовь." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "red_skirt" - item_color = "red_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/white_skirt - name = "белая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Белый экземпляр. Возможно, отбеливатель был лишним." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "white_skirt" - item_color = "white_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - -/obj/item/clothing/under/yellow_skirt - name = "жёлтая юбка" - desc = "Выделитесь одной из множеств новых юбок от NT Couture. Жёлтый экземпляр." - icon = 'modular_ss220/clothing/icons/object/under.dmi' - icon_state = "yellow_skirt" - item_color = "yellow_skirt" - sprite_sheets = list( - "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', - ) - /obj/item/clothing/under/towel icon = 'modular_ss220/clothing/icons/object/under.dmi' sprite_sheets = list( @@ -448,3 +228,89 @@ /obj/item/clothing/under/towel/short/alt/brown name = "коричневое махровое маленькое полотенце" color = "#DEB887" + +/* EI uniform */ +/obj/item/clothing/under/ei_combat + name = "тактическая водолазка Gold on Black" + desc = "Все то же удобство, но в прекрасной гамме угольных оттенков." + icon = 'modular_ss220/clothing/icons/object/under.dmi' + icon_state = "ei_combat" + item_color = "ei_combat" + lefthand_file = 'modular_ss220/clothing/icons/inhands/left_hand.dmi' + righthand_file = 'modular_ss220/clothing/icons/inhands/right_hand.dmi' + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Kidan" = 'modular_ss220/clothing/icons/mob/species/kidan/under.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/under.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Diona" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Nian" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/under.dmi', + "Drask" = 'modular_ss220/clothing/icons/mob/species/drask/under.dmi', + ) + +/obj/item/clothing/under/ei_skirt + name = "блузка с юбкой Gold on Black" + desc = "Не волнуйтесь, запачкать её будет крайне сложно, так что вы всегда будете прелестны и очаровательны. Даже если руки по локоть в крови." + icon = 'modular_ss220/clothing/icons/object/under.dmi' + icon_state = "ei_skirt" + item_color = "ei_skirt" + lefthand_file = 'modular_ss220/clothing/icons/inhands/left_hand.dmi' + righthand_file = 'modular_ss220/clothing/icons/inhands/right_hand.dmi' + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Kidan" = 'modular_ss220/clothing/icons/mob/species/kidan/under.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/under.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Diona" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Nian" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/under.dmi', + "Drask" = 'modular_ss220/clothing/icons/mob/species/drask/under.dmi', + ) + +/obj/item/clothing/under/ei_skirt_alt + name = "юбка «Солнце» от EI" + desc = "Юбка «Солнце» в классических цветах корпорации EI." + icon = 'modular_ss220/clothing/icons/object/under.dmi' + icon_state = "ei_skirt_alt" + item_color = "ei_skirt_alt" + sprite_sheets = list( + "Human" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Tajaran" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Vulpkanin" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Kidan" = 'modular_ss220/clothing/icons/mob/species/kidan/under.dmi', + "Skrell" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Nucleation" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Skeleton" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Slime People" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Unathi" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Grey" = 'modular_ss220/clothing/icons/mob/species/grey/under.dmi', + "Abductor" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Golem" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Machine" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Diona" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Nian" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Shadow" = 'modular_ss220/clothing/icons/mob/under.dmi', + "Vox" = 'modular_ss220/clothing/icons/mob/species/vox/under.dmi', + "Drask" = 'modular_ss220/clothing/icons/mob/species/drask/under.dmi', + ) diff --git a/modular_ss220/clothing/icons/inhands/left_hand.dmi b/modular_ss220/clothing/icons/inhands/left_hand.dmi index e180fd33c340..388dde1feacd 100644 Binary files a/modular_ss220/clothing/icons/inhands/left_hand.dmi and b/modular_ss220/clothing/icons/inhands/left_hand.dmi differ diff --git a/modular_ss220/clothing/icons/inhands/right_hand.dmi b/modular_ss220/clothing/icons/inhands/right_hand.dmi index d80645b832a0..30f99a7a85e7 100644 Binary files a/modular_ss220/clothing/icons/inhands/right_hand.dmi and b/modular_ss220/clothing/icons/inhands/right_hand.dmi differ diff --git a/modular_ss220/clothing/icons/mob/cloaks.dmi b/modular_ss220/clothing/icons/mob/cloaks.dmi index 09045e72bd6c..b09be504a679 100644 Binary files a/modular_ss220/clothing/icons/mob/cloaks.dmi and b/modular_ss220/clothing/icons/mob/cloaks.dmi differ diff --git a/modular_ss220/clothing/icons/mob/hands.dmi b/modular_ss220/clothing/icons/mob/hands.dmi index 4b4a10fbf5d7..380ab3f64c68 100644 Binary files a/modular_ss220/clothing/icons/mob/hands.dmi and b/modular_ss220/clothing/icons/mob/hands.dmi differ diff --git a/modular_ss220/clothing/icons/mob/hats.dmi b/modular_ss220/clothing/icons/mob/hats.dmi index 9eb5dba46045..6c86f54f84bb 100644 Binary files a/modular_ss220/clothing/icons/mob/hats.dmi and b/modular_ss220/clothing/icons/mob/hats.dmi differ diff --git a/modular_ss220/clothing/icons/mob/helmet.dmi b/modular_ss220/clothing/icons/mob/helmet.dmi index 4f04df8ddfb9..f446553cf564 100644 Binary files a/modular_ss220/clothing/icons/mob/helmet.dmi and b/modular_ss220/clothing/icons/mob/helmet.dmi differ diff --git a/modular_ss220/clothing/icons/mob/mask.dmi b/modular_ss220/clothing/icons/mob/mask.dmi index 2362205420f4..afe1144c0a0c 100644 Binary files a/modular_ss220/clothing/icons/mob/mask.dmi and b/modular_ss220/clothing/icons/mob/mask.dmi differ diff --git a/modular_ss220/clothing/icons/mob/mod_clothing.dmi b/modular_ss220/clothing/icons/mob/mod_clothing.dmi new file mode 100644 index 000000000000..b72c882ea4c3 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/mod_clothing.dmi differ diff --git a/modular_ss220/clothing/icons/mob/shoes.dmi b/modular_ss220/clothing/icons/mob/shoes.dmi index d8f94b4ffe2b..6bf2712da541 100644 Binary files a/modular_ss220/clothing/icons/mob/shoes.dmi and b/modular_ss220/clothing/icons/mob/shoes.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/drask/cloaks.dmi b/modular_ss220/clothing/icons/mob/species/drask/cloaks.dmi new file mode 100644 index 000000000000..16e62552dcee Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/drask/cloaks.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/drask/gloves.dmi b/modular_ss220/clothing/icons/mob/species/drask/gloves.dmi new file mode 100644 index 000000000000..1f502c4a92bb Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/drask/gloves.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/drask/hats.dmi b/modular_ss220/clothing/icons/mob/species/drask/hats.dmi new file mode 100644 index 000000000000..18ab856b2320 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/drask/hats.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/drask/mask.dmi b/modular_ss220/clothing/icons/mob/species/drask/mask.dmi new file mode 100644 index 000000000000..098e6d9e1c46 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/drask/mask.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/drask/shoes.dmi b/modular_ss220/clothing/icons/mob/species/drask/shoes.dmi index f6031b241158..201cacb5d03f 100644 Binary files a/modular_ss220/clothing/icons/mob/species/drask/shoes.dmi and b/modular_ss220/clothing/icons/mob/species/drask/shoes.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/drask/suits.dmi b/modular_ss220/clothing/icons/mob/species/drask/suits.dmi index 8a7a2a1fb70f..1fdb6b70608c 100644 Binary files a/modular_ss220/clothing/icons/mob/species/drask/suits.dmi and b/modular_ss220/clothing/icons/mob/species/drask/suits.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/drask/under.dmi b/modular_ss220/clothing/icons/mob/species/drask/under.dmi index b42a03442a89..9e5b8f3a7f07 100644 Binary files a/modular_ss220/clothing/icons/mob/species/drask/under.dmi and b/modular_ss220/clothing/icons/mob/species/drask/under.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/grey/cloaks.dmi b/modular_ss220/clothing/icons/mob/species/grey/cloaks.dmi new file mode 100644 index 000000000000..8c676731e867 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/grey/cloaks.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/grey/gloves.dmi b/modular_ss220/clothing/icons/mob/species/grey/gloves.dmi new file mode 100644 index 000000000000..77f4c571ea8f Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/grey/gloves.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/grey/hats.dmi b/modular_ss220/clothing/icons/mob/species/grey/hats.dmi index 7cabd20be3fc..9d52d6b5939a 100644 Binary files a/modular_ss220/clothing/icons/mob/species/grey/hats.dmi and b/modular_ss220/clothing/icons/mob/species/grey/hats.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/grey/mask.dmi b/modular_ss220/clothing/icons/mob/species/grey/mask.dmi new file mode 100644 index 000000000000..1b315f9ef806 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/grey/mask.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/grey/suits.dmi b/modular_ss220/clothing/icons/mob/species/grey/suits.dmi index 182aaeb23311..3f62407fd4d2 100644 Binary files a/modular_ss220/clothing/icons/mob/species/grey/suits.dmi and b/modular_ss220/clothing/icons/mob/species/grey/suits.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/grey/under.dmi b/modular_ss220/clothing/icons/mob/species/grey/under.dmi index 68b7d8395972..be528b4ba07b 100644 Binary files a/modular_ss220/clothing/icons/mob/species/grey/under.dmi and b/modular_ss220/clothing/icons/mob/species/grey/under.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/kidan/cloaks.dmi b/modular_ss220/clothing/icons/mob/species/kidan/cloaks.dmi new file mode 100644 index 000000000000..be78528f8df1 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/kidan/cloaks.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/kidan/gloves.dmi b/modular_ss220/clothing/icons/mob/species/kidan/gloves.dmi new file mode 100644 index 000000000000..e0807cf5e01b Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/kidan/gloves.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/kidan/hats.dmi b/modular_ss220/clothing/icons/mob/species/kidan/hats.dmi index f9b77a5eadbf..18e2d4b7dc0e 100644 Binary files a/modular_ss220/clothing/icons/mob/species/kidan/hats.dmi and b/modular_ss220/clothing/icons/mob/species/kidan/hats.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/kidan/mask.dmi b/modular_ss220/clothing/icons/mob/species/kidan/mask.dmi new file mode 100644 index 000000000000..bc686ad2d48e Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/kidan/mask.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/kidan/shoes.dmi b/modular_ss220/clothing/icons/mob/species/kidan/shoes.dmi new file mode 100644 index 000000000000..f931a3169dd9 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/kidan/shoes.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/kidan/suits.dmi b/modular_ss220/clothing/icons/mob/species/kidan/suits.dmi index 97d6e623b377..1f95f6438931 100644 Binary files a/modular_ss220/clothing/icons/mob/species/kidan/suits.dmi and b/modular_ss220/clothing/icons/mob/species/kidan/suits.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/kidan/under.dmi b/modular_ss220/clothing/icons/mob/species/kidan/under.dmi new file mode 100644 index 000000000000..dda63767a270 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/kidan/under.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi b/modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi new file mode 100644 index 000000000000..b72c882ea4c3 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/skrell/mod_clothing.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/tajaran/hats.dmi b/modular_ss220/clothing/icons/mob/species/tajaran/hats.dmi index 576737256ca5..499768c34054 100644 Binary files a/modular_ss220/clothing/icons/mob/species/tajaran/hats.dmi and b/modular_ss220/clothing/icons/mob/species/tajaran/hats.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/unathi/mask.dmi b/modular_ss220/clothing/icons/mob/species/unathi/mask.dmi new file mode 100644 index 000000000000..1f1dfc5103c4 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/unathi/mask.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/vox/cloaks.dmi b/modular_ss220/clothing/icons/mob/species/vox/cloaks.dmi new file mode 100644 index 000000000000..83d59eef44b5 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/vox/cloaks.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/vox/gloves.dmi b/modular_ss220/clothing/icons/mob/species/vox/gloves.dmi new file mode 100644 index 000000000000..34d6618a1060 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/vox/gloves.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/vox/hats.dmi b/modular_ss220/clothing/icons/mob/species/vox/hats.dmi index e4b0c0232568..ee53b84a1d9c 100644 Binary files a/modular_ss220/clothing/icons/mob/species/vox/hats.dmi and b/modular_ss220/clothing/icons/mob/species/vox/hats.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/vox/mask.dmi b/modular_ss220/clothing/icons/mob/species/vox/mask.dmi new file mode 100644 index 000000000000..eeb523eea4ae Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/vox/mask.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/vox/shoes.dmi b/modular_ss220/clothing/icons/mob/species/vox/shoes.dmi index 3e48a845cf82..a62578dc97fb 100644 Binary files a/modular_ss220/clothing/icons/mob/species/vox/shoes.dmi and b/modular_ss220/clothing/icons/mob/species/vox/shoes.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/vox/suits.dmi b/modular_ss220/clothing/icons/mob/species/vox/suits.dmi index 1166820e46ff..c1b4423ee12e 100644 Binary files a/modular_ss220/clothing/icons/mob/species/vox/suits.dmi and b/modular_ss220/clothing/icons/mob/species/vox/suits.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/vox/under.dmi b/modular_ss220/clothing/icons/mob/species/vox/under.dmi index f6d259da3cc1..92db8e05e138 100644 Binary files a/modular_ss220/clothing/icons/mob/species/vox/under.dmi and b/modular_ss220/clothing/icons/mob/species/vox/under.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/vulpkanin/hats.dmi b/modular_ss220/clothing/icons/mob/species/vulpkanin/hats.dmi index 17f0315187f7..6e61169fc42c 100644 Binary files a/modular_ss220/clothing/icons/mob/species/vulpkanin/hats.dmi and b/modular_ss220/clothing/icons/mob/species/vulpkanin/hats.dmi differ diff --git a/modular_ss220/clothing/icons/mob/species/vulpkanin/mask.dmi b/modular_ss220/clothing/icons/mob/species/vulpkanin/mask.dmi new file mode 100644 index 000000000000..7199f7cd3e20 Binary files /dev/null and b/modular_ss220/clothing/icons/mob/species/vulpkanin/mask.dmi differ diff --git a/modular_ss220/clothing/icons/mob/suits.dmi b/modular_ss220/clothing/icons/mob/suits.dmi index e89635f14900..1fdf65d327a2 100644 Binary files a/modular_ss220/clothing/icons/mob/suits.dmi and b/modular_ss220/clothing/icons/mob/suits.dmi differ diff --git a/modular_ss220/clothing/icons/mob/under.dmi b/modular_ss220/clothing/icons/mob/under.dmi index e68fa6a1b24c..d0c71f83a2cb 100644 Binary files a/modular_ss220/clothing/icons/mob/under.dmi and b/modular_ss220/clothing/icons/mob/under.dmi differ diff --git a/modular_ss220/clothing/icons/object/cloaks.dmi b/modular_ss220/clothing/icons/object/cloaks.dmi index 7c42872d2fc8..450347b6f451 100644 Binary files a/modular_ss220/clothing/icons/object/cloaks.dmi and b/modular_ss220/clothing/icons/object/cloaks.dmi differ diff --git a/modular_ss220/clothing/icons/object/gloves.dmi b/modular_ss220/clothing/icons/object/gloves.dmi index 6ddabb5d7327..4538b9e4dfdb 100644 Binary files a/modular_ss220/clothing/icons/object/gloves.dmi and b/modular_ss220/clothing/icons/object/gloves.dmi differ diff --git a/modular_ss220/clothing/icons/object/hats.dmi b/modular_ss220/clothing/icons/object/hats.dmi index 0da59fcd9b1a..c9c47cb05d8f 100644 Binary files a/modular_ss220/clothing/icons/object/hats.dmi and b/modular_ss220/clothing/icons/object/hats.dmi differ diff --git a/modular_ss220/clothing/icons/object/helmet.dmi b/modular_ss220/clothing/icons/object/helmet.dmi index 6a9df565e53e..683c86811fb5 100644 Binary files a/modular_ss220/clothing/icons/object/helmet.dmi and b/modular_ss220/clothing/icons/object/helmet.dmi differ diff --git a/modular_ss220/clothing/icons/object/masks.dmi b/modular_ss220/clothing/icons/object/masks.dmi index 9c82cc1ce066..0f256e88b4d8 100644 Binary files a/modular_ss220/clothing/icons/object/masks.dmi and b/modular_ss220/clothing/icons/object/masks.dmi differ diff --git a/modular_ss220/clothing/icons/object/mod_clothing.dmi b/modular_ss220/clothing/icons/object/mod_clothing.dmi new file mode 100644 index 000000000000..2c08f1e9ca76 Binary files /dev/null and b/modular_ss220/clothing/icons/object/mod_clothing.dmi differ diff --git a/modular_ss220/clothing/icons/object/shoes.dmi b/modular_ss220/clothing/icons/object/shoes.dmi index c08226fa7d39..af39eb1b29f8 100644 Binary files a/modular_ss220/clothing/icons/object/shoes.dmi and b/modular_ss220/clothing/icons/object/shoes.dmi differ diff --git a/modular_ss220/clothing/icons/object/suits.dmi b/modular_ss220/clothing/icons/object/suits.dmi index 023cb112fbdb..2adce2ca6a0b 100644 Binary files a/modular_ss220/clothing/icons/object/suits.dmi and b/modular_ss220/clothing/icons/object/suits.dmi differ diff --git a/modular_ss220/clothing/icons/object/under.dmi b/modular_ss220/clothing/icons/object/under.dmi index f1dc9aac1cb7..b918484e20ea 100644 Binary files a/modular_ss220/clothing/icons/object/under.dmi and b/modular_ss220/clothing/icons/object/under.dmi differ diff --git a/modular_ss220/emotes/_emotes.dm b/modular_ss220/emotes/_emotes.dm index f61dac15cda6..3b599c981128 100644 --- a/modular_ss220/emotes/_emotes.dm +++ b/modular_ss220/emotes/_emotes.dm @@ -1,4 +1,4 @@ /datum/modpack/emotes name = "Панель эмоций" desc = "Добавляет панель эмоций в меню. Добавляет опциональное ТГУИ меню эмоций в IC. Добавляет новые эмоции." - author = "furior, larentoun, Aylong, PhantomRU, BR54FF" + author = "furior, larentoun, Aylong, PhantomRU, BR54FF, Dekupich" diff --git a/modular_ss220/emotes/audio/tajaran/annoyed_meow_tajaran.ogg b/modular_ss220/emotes/audio/tajaran/annoyed_meow_tajaran.ogg new file mode 100644 index 000000000000..add32db8d9c7 Binary files /dev/null and b/modular_ss220/emotes/audio/tajaran/annoyed_meow_tajaran.ogg differ diff --git a/modular_ss220/emotes/audio/tajaran/meow_tajaran.ogg b/modular_ss220/emotes/audio/tajaran/meow_tajaran.ogg new file mode 100644 index 000000000000..3dcccca7de7c Binary files /dev/null and b/modular_ss220/emotes/audio/tajaran/meow_tajaran.ogg differ diff --git a/modular_ss220/emotes/code/emote.dm b/modular_ss220/emotes/code/emote.dm index 322f1a22c4d8..ab609d669df3 100644 --- a/modular_ss220/emotes/code/emote.dm +++ b/modular_ss220/emotes/code/emote.dm @@ -431,3 +431,29 @@ cooldown = 10 SECONDS volume = 50 muzzled_noises = list("слабо") + +/datum/emote/living/carbon/human/meow + key = "meow" + key_third_person = "meow" + message = "мяукает." + message_param = "мяукает на %t." + sound = 'modular_ss220/emotes/audio/tajaran/meow_tajaran.ogg' + species_type_whitelist_typecache = list(/datum/species/tajaran) + emote_type = EMOTE_VISIBLE | EMOTE_MOUTH | EMOTE_AUDIBLE + vary = TRUE + cooldown = 10 SECONDS + volume = 50 + muzzled_noises = list("слабо") + +/datum/emote/living/carbon/human/mrow + key = "mrow" + key_third_person = "mrow" + message = "раздражённо мяукает." + message_param = "раздражённо мяукает на %t." + sound = 'modular_ss220/emotes/audio/tajaran/annoyed_meow_tajaran.ogg' + species_type_whitelist_typecache = list(/datum/species/tajaran) + emote_type = EMOTE_VISIBLE | EMOTE_MOUTH | EMOTE_AUDIBLE + vary = TRUE + cooldown = 10 SECONDS + volume = 70 + muzzled_noises = list("слабо") diff --git a/modular_ss220/emotes/code/emote_names.dm b/modular_ss220/emotes/code/emote_names.dm index 6cd8ad00d82c..f3fdcc5be3ec 100644 --- a/modular_ss220/emotes/code/emote_names.dm +++ b/modular_ss220/emotes/code/emote_names.dm @@ -458,6 +458,12 @@ /datum/emote/living/carbon/human/slime/pop name = EMOTE_HUMAN_POP +/datum/emote/living/carbon/human/tajaran/meow + name = EMOTE_HUMAN_MEOW + +/datum/emote/living/carbon/human/tajaran/mrow + name = EMOTE_HUMAN_MROW + /// Emote Animal /datum/emote/living/simple_animal/gorilla/ooga diff --git a/modular_ss220/emotes/code/emote_verbs.dm b/modular_ss220/emotes/code/emote_verbs.dm index a31fb8c4486f..e441c13ad8d4 100644 --- a/modular_ss220/emotes/code/emote_verbs.dm +++ b/modular_ss220/emotes/code/emote_verbs.dm @@ -483,6 +483,16 @@ set category = "Эмоции" emote("wiggles", intentional = TRUE) +/mob/living/carbon/human/proc/emote_meow() + set name = "< " + EMOTE_HUMAN_MEOW + " >" + set category = "Эмоции" + emote("meow", intentional = TRUE) + +/mob/living/carbon/human/proc/emote_mrow() + set name = "< " + EMOTE_HUMAN_MROW + " >" + set category = "Эмоции" + emote("mrow", intentional = TRUE) + /mob/living/carbon/human/verb/emote_wave() set name = "◦ " + EMOTE_CARBON_WAVE + " " set category = "Эмоции" diff --git a/modular_ss220/emotes/code/racial_emotes.dm b/modular_ss220/emotes/code/racial_emotes.dm index d70bcac25f68..5b7dab93c7e4 100644 --- a/modular_ss220/emotes/code/racial_emotes.dm +++ b/modular_ss220/emotes/code/racial_emotes.dm @@ -109,6 +109,8 @@ H.verbs |= /mob/living/carbon/human/proc/emote_purr H.verbs |= /mob/living/carbon/human/proc/emote_purrl H.verbs |= /mob/living/carbon/human/proc/emote_hiss + H.verbs |= /mob/living/carbon/human/proc/emote_meow + H.verbs |= /mob/living/carbon/human/proc/emote_mrow /datum/species/tajaran/on_species_loss(mob/living/carbon/human/H) ..() @@ -117,6 +119,8 @@ H.verbs -= /mob/living/carbon/human/proc/emote_purr H.verbs -= /mob/living/carbon/human/proc/emote_purrl H.verbs -= /mob/living/carbon/human/proc/emote_hiss + H.verbs -= /mob/living/carbon/human/proc/emote_meow + H.verbs -= /mob/living/carbon/human/proc/emote_mrow /datum/species/unathi/on_species_gain(mob/living/carbon/human/H) ..() diff --git a/modular_ss220/food_and_drinks/code/food/food.dm b/modular_ss220/food_and_drinks/code/food/food.dm index 1c58e95bbb36..545368cfd096 100644 --- a/modular_ss220/food_and_drinks/code/food/food.dm +++ b/modular_ss220/food_and_drinks/code/food/food.dm @@ -979,6 +979,30 @@ icon = 'modular_ss220/food_and_drinks/icons/trash.dmi' icon_state = "pan" +/obj/item/food/soup/sawdust_soup + name = "суп из опилок" + desc = "Отчаянные времена требуют отчаянных мер..." + icon = 'modular_ss220/food_and_drinks/icons/food.dmi' + icon_state = "sawdustsoup" + lefthand_file = 'modular_ss220/food_and_drinks/icons/food_lefthand.dmi' + righthand_file = 'modular_ss220/food_and_drinks/icons/food_righthand.dmi' + filling_color = "#fae4b5" + trash = /obj/item/trash/snack_bowl + list_reagents = list("water" = 10, "nutriment" = 2, "vitamin" = 1) + tastes = list("опилки" = 1) + goal_difficulty = FOOD_GOAL_SKIP + +/datum/recipe/microwave/sawdust_soup + reagents = list("water" = 20) + items = list(/obj/item/stack/sheet/wood = 1) + result = /obj/item/food/soup/sawdust_soup + +/obj/item/food/soup/sawdust_soup/On_Consume(mob/M, mob/user) + . = ..() + var/mob/living/carbon/consumer = user + if(prob(5)) + consumer.vomit(nutritional_value * 2.5) + // Infinite Pizza Box /obj/item/pizzabox/infinite resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF diff --git a/modular_ss220/food_and_drinks/icons/food.dmi b/modular_ss220/food_and_drinks/icons/food.dmi index e7b987931d22..02942fde8dd5 100644 Binary files a/modular_ss220/food_and_drinks/icons/food.dmi and b/modular_ss220/food_and_drinks/icons/food.dmi differ diff --git a/modular_ss220/food_and_drinks/icons/food_lefthand.dmi b/modular_ss220/food_and_drinks/icons/food_lefthand.dmi new file mode 100644 index 000000000000..6ce3684e0883 Binary files /dev/null and b/modular_ss220/food_and_drinks/icons/food_lefthand.dmi differ diff --git a/modular_ss220/food_and_drinks/icons/food_righthand.dmi b/modular_ss220/food_and_drinks/icons/food_righthand.dmi new file mode 100644 index 000000000000..a0eb7219aa8c Binary files /dev/null and b/modular_ss220/food_and_drinks/icons/food_righthand.dmi differ diff --git a/modular_ss220/jobs/code/donor/donor_jobs.dm b/modular_ss220/jobs/code/donor/donor_jobs.dm index ce423ac6cdae..d7cbc1e5a859 100644 --- a/modular_ss220/jobs/code/donor/donor_jobs.dm +++ b/modular_ss220/jobs/code/donor/donor_jobs.dm @@ -8,7 +8,7 @@ supervisors = "the head of personnel" department_head = list("Head of Personnel") selection_color = "#fbd5ff" - access = list( ACCESS_MAINT_TUNNELS) + access = list(ACCESS_MAINT_TUNNELS) alt_titles = null outfit = /datum/outfit/job/donor hidden_from_job_prefs = TRUE diff --git a/modular_ss220/jobs/code/jobs_global_list.dm b/modular_ss220/jobs/code/jobs_global_list.dm index 6da25d934924..02c3923603db 100644 --- a/modular_ss220/jobs/code/jobs_global_list.dm +++ b/modular_ss220/jobs/code/jobs_global_list.dm @@ -16,6 +16,11 @@ GLOBAL_LIST_INIT(security_positions_ss220, list( "Security Cadet", )) +// ====================== EVENT ====================== +GLOBAL_LIST_INIT(event_ss220, list( + "SDTF Raskinta Katish", + "Emperor Guard", +)) // ====================== DONOR ====================== GLOBAL_LIST_INIT(donor_tier_1_jobs, list( @@ -92,13 +97,13 @@ GLOBAL_LIST_INIT(jobs_excluded_from_selection, list("Donor")) // ====================== SPECIAL ====================== // cant be antags GLOBAL_LIST_INIT(restricted_jobs_ss220, security_positions_ss220 + ( - donor_tier_4_jobs + donor_tier_5_jobs + jobs_excluded_from_selection + donor_tier_4_jobs + donor_tier_5_jobs + jobs_excluded_from_selection + event_ss220 )) // ===================== ALL JOBS ===================== GLOBAL_LIST_INIT(all_jobs_ss220, (list() + ( - medical_positions_ss220 + science_positions_ss220 + engineering_positions_ss220 + security_positions_ss220 + all_donor_jobs))) + medical_positions_ss220 + science_positions_ss220 + engineering_positions_ss220 + security_positions_ss220 + all_donor_jobs + event_ss220))) // ====================== TITLE ====================== @@ -133,5 +138,8 @@ GLOBAL_LIST_INIT(all_jobs_ss220, (list() + ( /proc/get_all_assistant_titles_ss220() return GLOB.assistant_donor_jobs + get_alt_titles(GLOB.assistant_donor_jobs) +/proc/get_all_event_titles_ss220() + return GLOB.event_ss220 + get_alt_titles(GLOB.event_ss220) + /proc/get_all_titles_ss220() - return get_all_medical_titles_ss220() + get_all_security_titles_ss220() + get_all_engineering_titles_ss220() + get_all_science_titles_ss220() + get_all_service_titles_ss220() + get_all_supply_titles_ss220() + get_all_assistant_titles_ss220() + return get_all_medical_titles_ss220() + get_all_security_titles_ss220() + get_all_engineering_titles_ss220() + get_all_science_titles_ss220() + get_all_service_titles_ss220() + get_all_supply_titles_ss220() + get_all_assistant_titles_ss220() + get_all_event_titles_ss220() diff --git a/modular_ss220/jobs/icons/hud.dmi b/modular_ss220/jobs/icons/hud.dmi index 21c2a2aa47f6..9a032a279adf 100644 Binary files a/modular_ss220/jobs/icons/hud.dmi and b/modular_ss220/jobs/icons/hud.dmi differ diff --git a/modular_ss220/keybindings/code/emote_keybinds.dm b/modular_ss220/keybindings/code/emote_keybinds.dm index e92a7d3eb3cd..5ce1af0f6202 100644 --- a/modular_ss220/keybindings/code/emote_keybinds.dm +++ b/modular_ss220/keybindings/code/emote_keybinds.dm @@ -85,6 +85,22 @@ linked_emote = /datum/emote/living/carbon/human/ururu name = EMOTE_HUMAN_RUMBLE +/datum/keybinding/emote/carbon/human/meow + linked_emote = /datum/emote/living/carbon/human/meow + name = EMOTE_HUMAN_MEOW + +/datum/keybinding/emote/carbon/human/meow/New() + . = ..() + name += " (таяр)" + +/datum/keybinding/emote/carbon/human/mrow + linked_emote = /datum/emote/living/carbon/human/mrow + name = EMOTE_HUMAN_MROW + +/datum/keybinding/emote/carbon/human/mrow/New() + . = ..() + name += " (таяр)" + /datum/keybinding/emote/carbon/human/drask_talk/New() ..() name += " (драск)" diff --git a/modular_ss220/loadout/_loadout.dm b/modular_ss220/loadout/_loadout.dm index 0fe0daa60481..9de83602ad79 100644 --- a/modular_ss220/loadout/_loadout.dm +++ b/modular_ss220/loadout/_loadout.dm @@ -1,4 +1,4 @@ /datum/modpack/loadout name = "Loadout" desc = "Добавляет новые вещи в Loadout." - author = "Aylong220, Yata9arasu" + author = "Aylong, Yata9arasu, Dekupich" diff --git a/modular_ss220/loadout/_loadout.dme b/modular_ss220/loadout/_loadout.dme index c2914f30488f..b192ca56568f 100644 --- a/modular_ss220/loadout/_loadout.dme +++ b/modular_ss220/loadout/_loadout.dme @@ -2,6 +2,7 @@ #include "code/donor.dm" #include "code/donor_items.dm" +#include "code/racial.dm" #include "code/removal.dm" #include "code/shoes.dm" #include "code/suit.dm" diff --git a/modular_ss220/loadout/code/donor.dm b/modular_ss220/loadout/code/donor.dm index bb0bbd87c6b3..068b207b0fd3 100644 --- a/modular_ss220/loadout/code/donor.dm +++ b/modular_ss220/loadout/code/donor.dm @@ -320,3 +320,58 @@ path = /obj/item/id_skin/boykisser donator_tier = 4 cost = 5 + +// MARK: EI clothes +/datum/gear/donor/ei_cloak + display_name = "Плащ Gold On Black" + path = /obj/item/clothing/suit/hooded/ei_cloak + donator_tier = 2 + cost = 2 + +/datum/gear/donor/ei_gloves + display_name = "Перчатки Gold On Black" + path = /obj/item/clothing/gloves/color/ei_gloves + donator_tier = 1 + cost = 1 + +/datum/gear/donor/ei_mask + display_name = "Дыхательная маска от EI" + path = /obj/item/clothing/mask/breath/ei_mask + donator_tier = 3 + cost = 3 + +/datum/gear/donor/ei_shoes + display_name = "Ботинки Gold On Black" + path = /obj/item/clothing/shoes/ei_shoes + donator_tier = 1 + cost = 1 + +/datum/gear/donor/ei_jacket + display_name = "Кожаная куртка Rock on Black" + path = /obj/item/clothing/suit/storage/ei_jacket + donator_tier = 2 + cost = 1 + +/datum/gear/donor/ei_coat + display_name = "Офицерский плащ EI" + path = /obj/item/clothing/suit/storage/ei_coat + donator_tier = 4 + cost = 4 + +/datum/gear/donor/ei_combat + display_name = "Тактическая водолазка Gold on Black" + path = /obj/item/clothing/under/ei_combat + donator_tier = 1 + cost = 1 + +/datum/gear/donor/ei_skirt + display_name = "Блузка с юбкой Gold on Black" + path = /obj/item/clothing/under/ei_skirt + donator_tier = 1 + cost = 1 + +/datum/gear/donor/ei_skirt_alt + display_name = "Юбка «Солнце» от EI" + path = /obj/item/clothing/under/ei_skirt_alt + donator_tier = 1 + cost = 1 diff --git a/modular_ss220/loadout/code/racial.dm b/modular_ss220/loadout/code/racial.dm new file mode 100644 index 000000000000..b69406d7f986 --- /dev/null +++ b/modular_ss220/loadout/code/racial.dm @@ -0,0 +1,42 @@ +// MARK: Vox + +/datum/gear/racial/vox_sandal + display_name = "Vox sandals" + path = /obj/item/clothing/shoes/roman/vox + slot = SLOT_HUD_SHOES + +/datum/gear/racial/vox_gauntlets + display_name = "Vox gauntlets" + path = /obj/item/clothing/gloves/vox/light + slot = SLOT_HUD_GLOVES + +/datum/gear/racial/vox_jumpsuit + display_name = "Vox work jumpsuit" + description = "These loose clothes are optimized for the labors of the lower castes onboard the arkships. Large openings in the top allow for breathability while the pants are durable yet flexible enough to not restrict movement." + path = /obj/item/clothing/under/vox/jumpsuit + slot = SLOT_HUD_JUMPSUIT + +/datum/gear/racial/vox_jumpsuit/red + display_name = "Vox red jumpsuit" + path = /obj/item/clothing/under/vox/jumpsuit/red + +/datum/gear/racial/vox_jumpsuit/teal + display_name = "Vox teal jumpsuit" + path = /obj/item/clothing/under/vox/jumpsuit/teal + +/datum/gear/racial/vox_jumpsuit/blue + display_name = "Vox blue jumpsuit" + path = /obj/item/clothing/under/vox/jumpsuit/blue + +/datum/gear/racial/vox_jumpsuit/green + display_name = "Vox green jumpsuit" + path = /obj/item/clothing/under/vox/jumpsuit/green + +/datum/gear/racial/vox_jumpsuit/yellow + display_name = "Vox yellow jumpsuit" + path = /obj/item/clothing/under/vox/jumpsuit/yellow + +/datum/gear/racial/vox_jumpsuit/purple + display_name = "Vox purple jumpsuit" + path = /obj/item/clothing/under/vox/jumpsuit/purple + diff --git a/modular_ss220/maps220/code/Station/station_areas.dm b/modular_ss220/maps220/code/Station/station_areas.dm index 5900b9530910..96d8b808c5e4 100644 --- a/modular_ss220/maps220/code/Station/station_areas.dm +++ b/modular_ss220/maps220/code/Station/station_areas.dm @@ -15,6 +15,11 @@ /area/station/security/processing request_console_name = "Security" +/area/station/security/restroom + name = "Комната отдыха Службы Безопасности" + icon_state = "security" + request_console_name = "Security" + /area/mine/laborcamp request_console_name = "Labor Camp" @@ -46,7 +51,7 @@ /area/station/engineering/controlroom request_console_name = "Engineering" - + /area/station/engineering/dronefabricator name = "Комната Изготовления Дронов" icon_state = "engi" @@ -98,6 +103,9 @@ /area/station/medical/virology request_console_name = "Virology" +/area/station/medical/virology/test_room + name = "Тестовая Комната Вирусологии" + /area/station/medical/chemistry request_console_name = "Chemistry" diff --git a/modular_ss220/maps220/code/misc.dm b/modular_ss220/maps220/code/misc.dm index 50532fb45175..a95f3759894f 100644 --- a/modular_ss220/maps220/code/misc.dm +++ b/modular_ss220/maps220/code/misc.dm @@ -52,7 +52,7 @@ else if(!insisting) to_chat(user, span_cult("Ваше первое прикосновение заставляет [name] зашевелиться, прислушиваясь к вам. Вы действительно уверены, что хотите это сделать?")) insisting = TRUE - update_icon_state() + update_icon(UPDATE_ICON_STATE) return insisting = FALSE @@ -60,7 +60,7 @@ if(!wish) return charges-- - update_icon_state() + update_icon(UPDATE_ICON_STATE) var/mob/living/carbon/human/human = user var/become_shadow = TRUE diff --git a/modular_ss220/maps220/code/mobs.dm b/modular_ss220/maps220/code/mobs.dm index db647cb7a77e..6649aab50e05 100644 --- a/modular_ss220/maps220/code/mobs.dm +++ b/modular_ss220/maps220/code/mobs.dm @@ -212,7 +212,7 @@ attacktext = "claw" attack_sound = 'sound/weapons/bladeslice.ogg' a_intent = INTENT_HARM - loot = list(/obj/effect/spawner/random/maintenance/one = 1) + loot = list(/obj/effect/spawner/random/maintenance = 1) atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 5, "max_n2" = 0) unsuitable_atmos_damage = 7.5 faction = list("Vox") @@ -229,7 +229,7 @@ icon_dead = "voxmeleedead" melee_damage_lower = 15 melee_damage_upper = 15 - loot = list(/obj/effect/spawner/random/maintenance/two = 1) + loot = list(/obj/effect/spawner/random/maintenance = 1) attacktext = "slash" attack_sound = 'sound/weapons/bladeslice.ogg' status_flags = 0 @@ -247,7 +247,7 @@ minimum_distance = 5 casingtype = /obj/item/ammo_casing/c45 projectilesound = 'sound/weapons/gunshots/gunshot_strong.ogg' - loot = list(/obj/effect/spawner/random/maintenance/three = 1) + loot = list(/obj/effect/spawner/random/maintenance = 1) /mob/living/simple_animal/hostile/vox/ranged_laser name = "Vox Laser Gunman" @@ -263,7 +263,7 @@ melee_damage_upper = 20 projectiletype = /obj/item/projectile/beam/laser projectilesound = 'sound/weapons/laser.ogg' - loot = list(/obj/effect/spawner/random/maintenance/one = 1) + loot = list(/obj/effect/spawner/random/maintenance = 1) /mob/living/simple_animal/hostile/vox/ranged_laser/space name = "Vox Helmsman" @@ -274,7 +274,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) wander = FALSE minbodytemp = 0 - loot = list(/obj/effect/spawner/random/maintenance/three = 1) + loot = list(/obj/effect/spawner/random/maintenance = 1) /* Jungle Mob */ /mob/living/simple_animal/hostile/jungle_lizard @@ -566,7 +566,7 @@ melee_damage_upper = 25 attacktext = "моргает на" attack_sound = 'sound/weapons/pierce.ogg' - flying = TRUE + initial_traits = list(TRAIT_FLYING) faction = list("spooky") del_on_death = TRUE @@ -1092,7 +1092,7 @@ status_flags = NONE wander = TRUE loot = list(/obj/effect/gibspawner/xeno, /obj/item/stack/ore/bluespace_crystal/refined = 30, /obj/item/card/id/xen_key, /obj/item/gun/energy/wormhole_projector) - flying = TRUE + initial_traits = list(TRAIT_FLYING) death_sound = 'modular_ss220/aesthetics_sounds/sound/mobs/nihilanth/nihilanth_pain01.ogg' /obj/item/card/id/xen_key diff --git a/modular_ss220/maps220/code/objects.dm b/modular_ss220/maps220/code/objects.dm index 3a4c22d47cfc..19e936943000 100644 --- a/modular_ss220/maps220/code/objects.dm +++ b/modular_ss220/maps220/code/objects.dm @@ -124,9 +124,6 @@ name = "Syndicate Medical Doctor's Locker" req_access = list(ACCESS_SYNDICATE) icon_state = "tac" - icon_closed = "tac" - icon_opened = "tac_open" - open_door_sprite = "syndicate_door" /obj/structure/closet/secure_closet/syndicate/medbay/populate_contents() new /obj/item/storage/backpack/duffel/syndie/med/surgery diff --git a/modular_ss220/maps220/code/spawners.dm b/modular_ss220/maps220/code/spawners.dm index 94b6559d96ab..4df87a28e78d 100644 --- a/modular_ss220/maps220/code/spawners.dm +++ b/modular_ss220/maps220/code/spawners.dm @@ -41,34 +41,6 @@ /obj/effect/spawner/random/maintenance icon = 'modular_ss220/maps220/icons/spawner_icons.dmi' -/obj/effect/spawner/random/maintenance/one - icon_state = "loot" - -/obj/effect/spawner/random/maintenance/one/Initialize(mapload) - . = ..() - spawn_loot_count = 1 - -/obj/effect/spawner/random/maintenance/two - icon_state = "doubleloot" - -/obj/effect/spawner/random/maintenance/two/Initialize(mapload) - . = ..() - spawn_loot_count = 2 - -/obj/effect/spawner/random/maintenance/three - icon_state = "tripleloot" - -/obj/effect/spawner/random/maintenance/three/Initialize(mapload) - . = ..() - spawn_loot_count = 3 - -/obj/effect/spawner/random/maintenance/five - icon_state = "moreloot" - -/obj/effect/spawner/random/maintenance/five/Initialize(mapload) - . = ..() - spawn_loot_count = 5 - /obj/effect/spawner/random/trash icon = 'modular_ss220/maps220/icons/spawner_icons.dmi' @@ -243,7 +215,7 @@ suit_store = /obj/item/gun/projectile/shotgun/riot backpack_contents = list( /obj/item/storage/box/survival = 1, - /obj/item/storage/box/buck = 1 + /obj/item/storage/fancy/shell/buck = 1 ) return ..() @@ -328,7 +300,7 @@ /obj/item/reagent_containers/patch/silver_sulf/small, /obj/item/reagent_containers/patch/styptic/small, /obj/item/stock_parts/cell/high = 1, - /obj/item/storage/box/buck = 1 + /obj/item/storage/fancy/shell/buck = 1 ) return ..() diff --git a/modular_ss220/mobs/code/simple_animal/friendly/moth.dm b/modular_ss220/mobs/code/simple_animal/friendly/moth.dm index e0edb0831125..a1bf128f999b 100644 --- a/modular_ss220/mobs/code/simple_animal/friendly/moth.dm +++ b/modular_ss220/mobs/code/simple_animal/friendly/moth.dm @@ -16,7 +16,7 @@ see_in_dark = 100 friendly = "nudges" density = 0 - flying = TRUE + initial_traits = list(TRAIT_FLYING) pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = 2 mob_size = MOB_SIZE_TINY diff --git a/modular_ss220/modular_ss220.dme b/modular_ss220/modular_ss220.dme index 3dccb7056186..a77b0986cc38 100644 --- a/modular_ss220/modular_ss220.dme +++ b/modular_ss220/modular_ss220.dme @@ -68,6 +68,7 @@ #include "mobs/_mobs.dme" #include "pixel_shift/_pixel_shift.dme" #include "screentip_change/_screentip_change.dme" +#include "station_traits/_station_traits.dme" #include "smart_equip_targeted/_smart_equip_targeted.dme" #include "sm_space_drop/sm_space_drop.dme" #include "text_to_speech/_tts.dme" diff --git a/modular_ss220/objects/_objects.dme b/modular_ss220/objects/_objects.dme index 0e95f3c7de7a..e38f4a613dc4 100644 --- a/modular_ss220/objects/_objects.dme +++ b/modular_ss220/objects/_objects.dme @@ -16,10 +16,13 @@ #include "code/weapons/melee/baseball_bat.dm" #include "code/weapons/melee/electrostaff.dm" #include "code/weapons/melee/stylet.dm" +#include "code/weapons/melee/vibroblade.dm" #include "code/weapons/ranged/beretta.dm" #include "code/weapons/ranged/pneumagun.dm" #include "code/weapons/ranged/revolvers.dm" #include "code/weapons/ranged/sslr.dm" +#include "code/weapons/ranged/sakhno.dm" +#include "code/weapons/ranged/skrell_rifle.dm" // Plushies #include "code/plushies/hampters.dm" diff --git a/modular_ss220/objects/code/closets.dm b/modular_ss220/objects/code/closets.dm index 3fe2d00fdbd3..0069d62ffd2e 100644 --- a/modular_ss220/objects/code/closets.dm +++ b/modular_ss220/objects/code/closets.dm @@ -1,10 +1,8 @@ /obj/structure/closet/secure_closet/expedition name = "expeditors locker" - req_access = list(ACCESS_EXPEDITION) icon = 'modular_ss220/objects/icons/closets.dmi' icon_state = "explorer" - icon_opened = "explorer_open" - open_door_sprite = "explorer_door" + req_access = list(ACCESS_EXPEDITION) /obj/structure/closet/secure_closet/expedition/populate_contents() new /obj/item/gun/energy/laser/awaymission_aeg/rnd(src) @@ -14,9 +12,7 @@ /obj/structure/closet/secure_closet/geneticist name = "geneticist's locker" icon = 'modular_ss220/objects/icons/closets.dmi' - icon_state = "gen_secure" - icon_opened = "gen_open" - open_door_sprite = "white_secure_door" + icon_state = "gen" req_access = list(ACCESS_GENETICS) /obj/structure/closet/secure_closet/geneticist/populate_contents() @@ -40,3 +36,13 @@ icon_opened = "organ_freezer_open" icon_closed = "organ_freezer" storage_capacity = 60 + +/obj/structure/closet/secure_closet/freezer/products + name = "refrigerator" + icon_state = "freezer" + +/obj/structure/closet/secure_closet/freezer/products/populate_contents() + new /obj/item/storage/box/donkpockets(src) + new /obj/item/storage/box/donkpockets(src) + new /obj/item/storage/fancy/egg_box(src) + new /obj/item/storage/fancy/egg_box(src) diff --git a/modular_ss220/objects/code/coffin.dm b/modular_ss220/objects/code/coffin.dm index a0ac7aebb4ed..7d28cd19ed78 100644 --- a/modular_ss220/objects/code/coffin.dm +++ b/modular_ss220/objects/code/coffin.dm @@ -3,8 +3,6 @@ desc = "Мы потеряли его. Он скукурузился." icon = 'modular_ss220/objects/icons/closets.dmi' icon_state = "coffin_corn" - icon_opened = "coffin_corn_open" - open_door_sprite = null resistance_flags = FLAMMABLE max_integrity = 300 material_drop = /obj/item/food/grown/corn diff --git a/modular_ss220/objects/code/flora/sakura.dm b/modular_ss220/objects/code/flora/sakura.dm index 62a6599523ed..146f841ff6b8 100644 --- a/modular_ss220/objects/code/flora/sakura.dm +++ b/modular_ss220/objects/code/flora/sakura.dm @@ -135,7 +135,7 @@ /obj/effect/decal/sakura_leaves/New() . = ..() - update_icon_state() + update_icon(UPDATE_ICON_STATE) /obj/effect/decal/sakura_leaves/examine(mob/user) . = ..() diff --git a/modular_ss220/objects/code/plushies/hampters.dm b/modular_ss220/objects/code/plushies/hampters.dm index 26fa7c2d29dc..228c384a5424 100644 --- a/modular_ss220/objects/code/plushies/hampters.dm +++ b/modular_ss220/objects/code/plushies/hampters.dm @@ -24,7 +24,7 @@ return if(ismob(AM)) var/mob/M = AM - if(M.flying) + if(HAS_TRAIT(M, TRAIT_FLYING)) return if(isliving(AM)) var/mob/living/L = M diff --git a/modular_ss220/objects/code/posters.dm b/modular_ss220/objects/code/posters.dm index 25d59cace3b2..c5882030bff7 100644 --- a/modular_ss220/objects/code/posters.dm +++ b/modular_ss220/objects/code/posters.dm @@ -1,7 +1,7 @@ /obj/structure/sign/poster icon = 'modular_ss220/objects/icons/posters.dmi' -// Contraband +// MARK: Contraband /obj/structure/sign/poster/contraband/lady name = "Соблазнительная Красотка" desc = "На плакате изображена крайне сексуальная девушка." @@ -44,7 +44,13 @@ icon = 'modular_ss220/objects/icons/posters.dmi' icon_state = "contraband7" -// Legit +/obj/structure/sign/poster/contraband/argonian + name = "Аргонианская горничная" + desc = "Вы видите ящероподобную горничную. Вам раньше не доводилось видеть подобную расу, однако она имеет некоторые сходства с унатхами." + icon = 'modular_ss220/objects/icons/posters.dmi' + icon_state = "contraband8" + +// MARK: Legit /obj/structure/sign/poster/official/mars name = "Плакат Марса" desc = "Это плакат, выпущенный компанией Generic Space в рамках серии памятных плакатов, посвящённых чудесам космоса." diff --git a/modular_ss220/objects/code/weapons/melee/stylet.dm b/modular_ss220/objects/code/weapons/melee/stylet.dm index 6ee4b98fd88a..354dd4535616 100644 --- a/modular_ss220/objects/code/weapons/melee/stylet.dm +++ b/modular_ss220/objects/code/weapons/melee/stylet.dm @@ -55,7 +55,3 @@ H.update_inv_r_hand() playsound(loc, extend_sound, 50, TRUE) add_fingerprint(user) - -/obj/effect/spawner/random/maintenance/Initialize(mapload) - loot += list(/obj/item/melee/stylet = 5) - return ..() diff --git a/modular_ss220/objects/code/weapons/melee/vibroblade.dm b/modular_ss220/objects/code/weapons/melee/vibroblade.dm new file mode 100644 index 000000000000..8ef7865d0b26 --- /dev/null +++ b/modular_ss220/objects/code/weapons/melee/vibroblade.dm @@ -0,0 +1,173 @@ +// MARK: Vibroblade +#define CHARGE_LEVEL_NONE 0 +#define CHARGE_LEVEL_LOW 1 +#define CHARGE_LEVEL_MEDIUM 2 +#define CHARGE_LEVEL_HIGH 3 +#define CHARGE_LEVEL_OVERCHARGE 4 + +/obj/item/melee/vibroblade + name = "\improper vibroblade" + desc = "Виброклинок воинов Раскинта. Микрогенератор ультразвука в рукояти позволяет лезвию вибрировать \ + с огромной частотой, что позволяет при его достаточной зарядке наносить глубокие раны даже ударами по касательной." + icon = 'modular_ss220/objects/icons/melee.dmi' + icon_state = "vibroblade" + item_state = "vibroblade" + lefthand_file = 'modular_ss220/objects/icons/inhands/melee_lefthand.dmi' + righthand_file = 'modular_ss220/objects/icons/inhands/melee_righthand.dmi' + hitsound = 'modular_ss220/objects/sound/weapons/melee/sardaukar/knifehit1.ogg' + drop_sound = 'modular_ss220/aesthetics_sounds/sound/handling/drop/knife.ogg' + pickup_sound = 'modular_ss220/objects/sound/weapons/melee/sardaukar/equip.ogg' + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + force = 20 + throwforce = 15 + throw_speed = 2 + throw_range = 5 + armour_penetration_percentage = 75 + slot_flags = SLOT_FLAG_BELT + w_class = WEIGHT_CLASS_NORMAL + sharp = TRUE + flags = CONDUCT + var/charge_level = CHARGE_LEVEL_NONE + var/max_charge_level = CHARGE_LEVEL_OVERCHARGE + /// How long does it take to reach next level of charge. + var/charge_time = 4 SECONDS + /// TRUE if the item keeps charge only when is held in hands. FALSE if the item always keeps charge. + var/hold_to_be_charged = TRUE + var/emp_proof = FALSE + /// Body parts that can be cut off. + var/list/cutoff_candidates = list( + BODY_ZONE_L_LEG, + BODY_ZONE_R_LEG, + BODY_ZONE_L_ARM, + BODY_ZONE_R_ARM, + BODY_ZONE_PRECISE_L_FOOT, + BODY_ZONE_PRECISE_R_FOOT, + BODY_ZONE_PRECISE_L_HAND, + BODY_ZONE_PRECISE_R_HAND, + ) + +/obj/item/melee/vibroblade/Initialize(mapload) + . = ..() + RegisterSignal(src, COMSIG_MOVABLE_POST_THROW, PROC_REF(thrown)) + AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.5, _parryable_attack_types = ALL_ATTACK_TYPES) + +/obj/item/melee/vibroblade/Destroy() + . = ..() + UnregisterSignal(src, COMSIG_MOVABLE_POST_THROW) + +/obj/item/melee/vibroblade/update_icon_state() + icon_state = initial(icon_state) + (charge_level > CHARGE_LEVEL_NONE ? "_[charge_level]" : "") + +/obj/item/melee/vibroblade/examine(mob/user) + . = ..() + . += span_notice("Используйте [src] в руке, чтобы повысить уровень заряда.") + if(charge_level == CHARGE_LEVEL_NONE) + . += span_notice("[src] не заряжен.") + return + + . += span_notice("[src] заряжен на [(charge_level / max_charge_level)*100]%.") + . += charge_level == max_charge_level \ + ? span_danger("Следующий удар будет крайне травмирующим!") \ + : span_warning("Следующий удар будет усиленным!") + +/obj/item/melee/vibroblade/attack_self(mob/living/user) + . = ..() + if(charge_level >= max_charge_level) + user.visible_message( + span_notice("[user.name] пытается зарядить [src], но кнопка на рукояти не поддается!"), + span_notice("Вы пытаетесь нажать на кнопку зарядки [src], но она заблокирована.") + ) + return FALSE + + user.visible_message( + span_notice("[user.name] нажимает на кнопку зарядки [src]..."), + span_notice("Вы нажимаете на кнопку зарядки [src], заряжая микрогенератор...") + ) + + if(!do_after_once(user, charge_time, allow_moving = TRUE, must_be_held = TRUE, target = src)) + return + playsound(loc, 'sound/effects/sparks3.ogg', vol = 10, vary = TRUE) + do_sparks(1, TRUE, src) + set_charge_level(charge_level + 1) + +/obj/item/melee/vibroblade/pre_attack(atom/A, mob/living/user, params) + . = ..() + force = initial(force) * get_damage_factor() + +/obj/item/melee/vibroblade/attack(mob/living/target, mob/living/user, def_zone) + var/obj/item/organ/external/selected_bodypart + if(user.zone_selected in cutoff_candidates) + selected_bodypart = target.get_organ(user.zone_selected) + . = ..() + + if(charge_level == CHARGE_LEVEL_HIGH) + target.Weaken(1.5 SECONDS) + else if(charge_level == CHARGE_LEVEL_OVERCHARGE && selected_bodypart && istype(target, /mob/living/carbon/human)) + var/obj/item/organ/external/after_attack_bodypart = target.get_organ(user.zone_selected) + + // We compare these in case the body part hasn't been cut off by standard attack logic + if(after_attack_bodypart == selected_bodypart) + after_attack_bodypart.droplimb(TRUE, DROPLIMB_SHARP) + user.visible_message( + span_danger("[user] изящно и непринужденно отсекает [selected_bodypart] [target]!"), + span_biggerdanger("Вы искусно отсекаете [selected_bodypart] [target]!") + ) + + set_charge_level(CHARGE_LEVEL_NONE) + +/obj/item/melee/vibroblade/suicide_act(mob/living/carbon/human/user) + var/obj/item/organ/external/head = user.get_organ(BODY_ZONE_HEAD) + user.visible_message(span_suicide("[user] прижимает лезвие [src] к своей шее и нажимает на кнопку зарядки микрогенератора. \ + Кажется, это попытка самоубийства!")) + user.atom_say("Слава Вечной Империи!") + head.droplimb(TRUE, DROPLIMB_SHARP, FALSE, TRUE) + set_charge_level(CHARGE_LEVEL_NONE) + return BRUTELOSS + +/obj/item/melee/vibroblade/emp_act(severity) + . = ..() + if(emp_proof) + return + set_charge_level(CHARGE_LEVEL_NONE) + +/obj/item/melee/vibroblade/equipped(mob/user, slot, initial) + . = ..() + if(hold_to_be_charged && slot != SLOT_HUD_LEFT_HAND && slot != SLOT_HUD_RIGHT_HAND) + set_charge_level(CHARGE_LEVEL_NONE) + +/obj/item/melee/vibroblade/dropped(mob/user, silent) + . = ..() + if(hold_to_be_charged && !silent) + set_charge_level(CHARGE_LEVEL_NONE) + +/obj/item/melee/vibroblade/proc/thrown(datum/thrownthing/thrown_thing, spin) + SIGNAL_HANDLER + if(hold_to_be_charged) + set_charge_level(CHARGE_LEVEL_NONE) + +/obj/item/melee/vibroblade/proc/get_damage_factor() + return 1 + 0.25 * clamp(charge_level, CHARGE_LEVEL_NONE, max_charge_level) + +/obj/item/melee/vibroblade/proc/set_charge_level(charge_level) + src.charge_level = charge_level + force = initial(force) * get_damage_factor() + update_icon(UPDATE_ICON_STATE) + +/obj/item/melee/vibroblade/sardaukar + name = "\improper emperor guard vibroblade" + desc = "Виброклинок гвардейцев Императора. Микрогенератор ультразвука в рукояти позволяет лезвию вибрировать \ + с огромной частотой, что позволяет при его достаточной зарядке наносить глубокие раны даже ударами по касательной. \ + Воины Куи'кверр-Кэтиш обучаются мастерству ближнего боя с детства, поэтому в их руках он особо опасен и жесток. \ + Каждый будущий гвардеец добывает свой клинок в ритуальном бою, и его сохранность есть вопрос жизни и смерти владельца." + icon_state = "vibroblade_elite" + item_state = "vibroblade_elite" + force = 25 + charge_time = 2 SECONDS + hold_to_be_charged = FALSE + emp_proof = TRUE + +#undef CHARGE_LEVEL_NONE +#undef CHARGE_LEVEL_LOW +#undef CHARGE_LEVEL_MEDIUM +#undef CHARGE_LEVEL_HIGH +#undef CHARGE_LEVEL_OVERCHARGE diff --git a/modular_ss220/objects/code/weapons/ranged/revolvers.dm b/modular_ss220/objects/code/weapons/ranged/revolvers.dm index ab3af135a95e..31e004735b6c 100644 --- a/modular_ss220/objects/code/weapons/ranged/revolvers.dm +++ b/modular_ss220/objects/code/weapons/ranged/revolvers.dm @@ -208,7 +208,13 @@ icon = 'modular_ss220/objects/icons/ammo.dmi' item_state = "peashooter_bullet" stamina = 5 - damage_type = STAMINA + damage = 0 + var/additional_zombie_damage = 10 + +/obj/item/projectile/bullet/midbullet_r/peas_shooter/prehit(atom/target) + if(HAS_TRAIT(target, TRAIT_I_WANT_BRAINS)) + damage += additional_zombie_damage + return ..() /obj/item/projectile/bullet/midbullet_r/peas_shooter/on_hit(mob/H) . = ..() diff --git a/modular_ss220/objects/code/weapons/ranged/sakhno.dm b/modular_ss220/objects/code/weapons/ranged/sakhno.dm new file mode 100644 index 000000000000..cd1f09d88c25 --- /dev/null +++ b/modular_ss220/objects/code/weapons/ranged/sakhno.dm @@ -0,0 +1,43 @@ +// MARK: Sakhno rifle +/obj/item/gun/projectile/shotgun/boltaction/sakhno + name = "\improper Sakhno precision rifle" + desc = "Высокоточная винтовка Sakhno со скользящим затвором, которая была (и, безусловно, остается) крайне популярной среди \ + покорителей фронтира, контрабандистов, ЧОП'овцев, исследователей, и прочих рисковых ребят. Эта модель \ + была разработана и производится с 2440 года." + icon = 'modular_ss220/objects/icons/wide_guns.dmi' + icon_state = "sakhno" + item_state = "sakhno" + lefthand_file = 'modular_ss220/objects/icons/inhands/guns_lefthand.dmi' + righthand_file = 'modular_ss220/objects/icons/inhands/guns_righthand.dmi' + fire_sound = 'modular_ss220/objects/sound/weapons/gunshots/shot_heavy.ogg' + mag_type = /obj/item/ammo_box/magazine/internal/boltaction/sakhno + knife_x_offset = 30 + knife_y_offset = 12 + +/obj/item/ammo_box/magazine/internal/boltaction/sakhno + icon = 'modular_ss220/objects/icons/ammo.dmi' + icon_state = "310" + ammo_type = /obj/item/ammo_casing/s310 + caliber = "s310" + max_ammo = 5 + multiload = 1 + +// MARK: .310 +/obj/item/ammo_box/s310 + name = "stripper clip (.310)" + desc = "A stripper clip for .310 cartridges, used in Sakhno rifles. Five round capacity." + icon = 'modular_ss220/objects/icons/ammo.dmi' + icon_state = "310" + ammo_type = /obj/item/ammo_casing/s310 + max_ammo = 5 + multi_sprite_step = 1 + +/obj/item/ammo_casing/s310 + name = ".310 round" + desc = "A .310 rifle cartridge" + icon = 'modular_ss220/objects/icons/ammo.dmi' + icon_state = "310-casing" + caliber = "s310" + projectile_type = /obj/item/projectile/bullet/midbullet3/hp + muzzle_flash_strength = MUZZLE_FLASH_STRENGTH_STRONG + muzzle_flash_range = MUZZLE_FLASH_RANGE_STRONG diff --git a/modular_ss220/objects/code/weapons/ranged/skrell_rifle.dm b/modular_ss220/objects/code/weapons/ranged/skrell_rifle.dm new file mode 100644 index 000000000000..e7844b3d0c20 --- /dev/null +++ b/modular_ss220/objects/code/weapons/ranged/skrell_rifle.dm @@ -0,0 +1,148 @@ +// MARK: Skrellian carbine +/obj/item/gun/energy/gun/skrell_carbine + name = "\improper skrellian carbine" + desc = "Энергетический карабин Vuu'Xqu*ix T-3, более известный в ТСФ как 'VT-3'. Это оружие редко можно увидеть где-то, помимо ОСС. \ + Имеет два режима мощности энерголуча: 'летальный' и 'штурмовой'. Второй предназначен для прорыва сквозь укрпеления противника." + icon = 'modular_ss220/objects/icons/guns.dmi' + lefthand_file = 'modular_ss220/objects/icons/inhands/guns_lefthand.dmi' + righthand_file = 'modular_ss220/objects/icons/inhands/guns_righthand.dmi' + item_state = "skrell_carbine" + icon_state = "skrell_carbine" + cell_type = /obj/item/stock_parts/cell/skrell_carbine_cell + ammo_type = list(/obj/item/ammo_casing/energy/laser/skrell_light, /obj/item/ammo_casing/energy/laser/skrell_assault) + origin_tech = "combat=6;magnets=5" + modifystate = 2 + execution_speed = 3 SECONDS + w_class = WEIGHT_CLASS_NORMAL + +/obj/item/gun/energy/gun/skrell_carbine/elite + name = "\improper elite skrellian carbine" + desc = "Энергетический карабин Vuu'Xqu*ix T-3, более известный в ТСФ как 'VT-3'. Это оружие редко можно увидеть где-то, помимо ОСС. \ + Этот экземпляр обладает батареей повышенной емкости, а так же дополнительными стабилизаторами стрельбы. \ + Имеет два режима мощности энерголуча: 'летальный' и 'штурмовой'. Второй предназначен для прорыва сквозь укрпеления противника." + ammo_type = list(/obj/item/ammo_casing/energy/laser/skrell_light/elite, /obj/item/ammo_casing/energy/laser/skrell_assault/elite) + +/obj/item/ammo_casing/energy/laser/skrell_light + projectile_type = /obj/item/projectile/beam/laser/skrell_light + muzzle_flash_color = LIGHT_COLOR_LAVENDER + select_name = "light" + fire_sound = 'modular_ss220/objects/sound/weapons/gunshots/blaster.ogg' + +/obj/item/ammo_casing/energy/laser/skrell_assault + projectile_type = /obj/item/projectile/beam/pulse/skrell_laser_assault + muzzle_flash_color = LIGHT_COLOR_LAVENDER + select_name = "assault" + e_cost = 1600 + fire_sound = 'modular_ss220/objects/sound/weapons/gunshots/blaster.ogg' + +/obj/item/ammo_casing/energy/laser/skrell_light/elite + e_cost = 50 + +/obj/item/ammo_casing/energy/laser/skrell_assault/elite + e_cost = 200 + +/obj/item/projectile/beam/laser/skrell_light + name = "laser" + icon_state = "purple_laser" + damage = 23 + impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser + light_color = LIGHT_COLOR_LAVENDER + +/obj/item/projectile/beam/pulse/skrell_laser_assault + name = "heavy laser" + icon_state = "u_laser_alt" + damage = 10 + stamina = 80 + impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser + light_color = LIGHT_COLOR_DARK_BLUE + weakened_against_rwalls = TRUE + +/obj/item/stock_parts/cell/skrell_carbine_cell + name = "\improper Vuu'Xqu*ix T-3 gun power cell" + maxcharge = 1600 + +// MARK: Skrellian railgun rifle +/obj/item/gun/projectile/automatic/sniper_rifle/skrell_rifle + name = "\improper skrellian rifle" + desc = "Винтовка Zquiv*Tzuuli-8, или ''ZT-8'' - это рельсотрон, стоящий на вооружении тяжелых штурмовых отрядов Раскинта из ОСС. \ + Имеет цилиндрический магазин заряжания, разгонный магнитный блок и стабилизаторы для точной стрельбы." + icon = 'modular_ss220/objects/icons/guns.dmi' + lefthand_file = 'modular_ss220/objects/icons/inhands/guns_lefthand.dmi' + righthand_file = 'modular_ss220/objects/icons/inhands/guns_righthand.dmi' + icon_state = "sniper" + item_state = "sniper" + fire_sound = 'modular_ss220/objects/sound/weapons/gunshots/railgun.ogg' + recoil = 0 + fire_delay = 25 + slot_flags = SLOT_FLAG_BELT + zoomable = FALSE + can_suppress = FALSE + mag_type = /obj/item/ammo_box/magazine/skrell_magazine + +/obj/item/gun/projectile/automatic/sniper_rifle/skrell_rifle/elite + name = "\improper elite skrellian rifle" + desc = "Винтовка Zquiv*Tzuuli-8, или ''ZT-8'' - это рельсотрон, стоящий на вооружении тяжелых штурмовых отрядов Раскинта из ОСС. \ + Имеет цилиндрический магазин заряжания, разгонный магнитный блок и стабилизаторы для точной стрельбы. \ + Этот экземпляр обладает расширенным магазинным гнездом, а так же оптическим прицелом." + fire_delay = 20 + zoomable = TRUE + mag_type = /obj/item/ammo_box/magazine/skrell_magazine/skrell_magazine_elite + +/obj/item/ammo_box/magazine/skrell_magazine + name = "\improper ammo cylinder" + desc = "Цилиндровый магазин для рельсотрона." + icon = 'modular_ss220/objects/icons/ammo.dmi' + icon_state = "skrell_magazine" + multi_sprite_step = 3 + ammo_type = /obj/item/ammo_casing/railgun + max_ammo = 4 + caliber = "railgun" + multiload = TRUE + +/obj/item/ammo_box/magazine/skrell_magazine/skrell_magazine_elite + icon_state = "skrell_magazine_elite" + multi_sprite_step = 7 + max_ammo = 8 + ammo_type = /obj/item/ammo_casing/railgun/railgun_strong + +/obj/item/ammo_casing/railgun + name = "\improper railgun ammo casing" + desc = "Снаряд для рельсотрона. Состоит из поражающего элемента и магнитного стабилизатора." + icon = 'modular_ss220/objects/icons/ammo.dmi' + icon_state = "railgun-casing" + caliber = "railgun" + projectile_type = /obj/item/projectile/bullet/railgun + +/obj/item/ammo_casing/railgun/railgun_strong + projectile_type = /obj/item/projectile/bullet/railgun/railgun_strong + +/obj/item/projectile/bullet/railgun + damage = 35 + armour_penetration_flat = 80 + pass_flags = PASSTABLE | PASSGRILLE | PASSGIRDER + speed = 0.2 + icon_state = "gauss_silenced" + light_color = LIGHT_COLOR_LIGHT_CYAN + +/obj/item/projectile/bullet/railgun/railgun_strong + damage = 45 + armour_penetration_flat = 30 + weaken = 0.2 + speed = 0.2 + +// MARK: Skrellian pistol +/obj/item/gun/energy/gun/skrell_pistol + name = "\improper self-charge skrellian pistol" + desc = "Энергетический пистолет Qua'l*Sarqzix-44x, известный на территориях ТСФ как QS-44. Компактный и удобный в использовании, имеет два режима мощности энерголуча: 'летальный' и 'нейтрализующий'. \ + Встроенный микрогенератор постепенно пополняет запас аккамулятора прямо в бою." + icon = 'modular_ss220/objects/icons/guns.dmi' + icon_state = "skrell_pistol" + item_state = "skrell_pistol" + lefthand_file = 'modular_ss220/objects/icons/inhands/guns_lefthand.dmi' + righthand_file = 'modular_ss220/objects/icons/inhands/guns_righthand.dmi' + ammo_type = list(/obj/item/ammo_casing/energy/laser/skrell_light, /obj/item/ammo_casing/energy/disabler) + w_class = WEIGHT_CLASS_SMALL + shaded_charge = FALSE + can_holster = TRUE + execution_speed = 4 SECONDS + selfcharge = TRUE diff --git a/modular_ss220/objects/icons/ammo.dmi b/modular_ss220/objects/icons/ammo.dmi index a3fab60866e5..9e52b4ae7c81 100644 Binary files a/modular_ss220/objects/icons/ammo.dmi and b/modular_ss220/objects/icons/ammo.dmi differ diff --git a/modular_ss220/objects/icons/boxes.dmi b/modular_ss220/objects/icons/boxes.dmi new file mode 100644 index 000000000000..7290c8bf0f25 Binary files /dev/null and b/modular_ss220/objects/icons/boxes.dmi differ diff --git a/modular_ss220/objects/icons/closets.dmi b/modular_ss220/objects/icons/closets.dmi index 562deaa526b0..4551f3423ae8 100644 Binary files a/modular_ss220/objects/icons/closets.dmi and b/modular_ss220/objects/icons/closets.dmi differ diff --git a/modular_ss220/objects/icons/guns.dmi b/modular_ss220/objects/icons/guns.dmi index dee535c69061..0b1e0c63091e 100644 Binary files a/modular_ss220/objects/icons/guns.dmi and b/modular_ss220/objects/icons/guns.dmi differ diff --git a/modular_ss220/objects/icons/inhands/guns_lefthand.dmi b/modular_ss220/objects/icons/inhands/guns_lefthand.dmi index 204f9527ebe0..8b77e53ebc47 100644 Binary files a/modular_ss220/objects/icons/inhands/guns_lefthand.dmi and b/modular_ss220/objects/icons/inhands/guns_lefthand.dmi differ diff --git a/modular_ss220/objects/icons/inhands/guns_righthand.dmi b/modular_ss220/objects/icons/inhands/guns_righthand.dmi index 29da95a9c061..bbecbad178b5 100644 Binary files a/modular_ss220/objects/icons/inhands/guns_righthand.dmi and b/modular_ss220/objects/icons/inhands/guns_righthand.dmi differ diff --git a/modular_ss220/objects/icons/inhands/melee_lefthand.dmi b/modular_ss220/objects/icons/inhands/melee_lefthand.dmi index 446d4dd0ad31..738f8c58acc4 100644 Binary files a/modular_ss220/objects/icons/inhands/melee_lefthand.dmi and b/modular_ss220/objects/icons/inhands/melee_lefthand.dmi differ diff --git a/modular_ss220/objects/icons/inhands/melee_righthand.dmi b/modular_ss220/objects/icons/inhands/melee_righthand.dmi index c15e31bfa1d9..844e8b00b1c7 100644 Binary files a/modular_ss220/objects/icons/inhands/melee_righthand.dmi and b/modular_ss220/objects/icons/inhands/melee_righthand.dmi differ diff --git a/modular_ss220/objects/icons/melee.dmi b/modular_ss220/objects/icons/melee.dmi index bd594df9aa10..d219ebe2a30d 100644 Binary files a/modular_ss220/objects/icons/melee.dmi and b/modular_ss220/objects/icons/melee.dmi differ diff --git a/modular_ss220/objects/icons/posters.dmi b/modular_ss220/objects/icons/posters.dmi index bb1d7e3cb440..3e9e1fdaaae5 100644 Binary files a/modular_ss220/objects/icons/posters.dmi and b/modular_ss220/objects/icons/posters.dmi differ diff --git a/modular_ss220/objects/icons/wide_guns.dmi b/modular_ss220/objects/icons/wide_guns.dmi new file mode 100644 index 000000000000..9e84712f81f2 Binary files /dev/null and b/modular_ss220/objects/icons/wide_guns.dmi differ diff --git a/modular_ss220/objects/sound/weapons/gunshots/blaster.ogg b/modular_ss220/objects/sound/weapons/gunshots/blaster.ogg new file mode 100644 index 000000000000..829a5c365579 Binary files /dev/null and b/modular_ss220/objects/sound/weapons/gunshots/blaster.ogg differ diff --git a/modular_ss220/objects/sound/weapons/gunshots/railgun.ogg b/modular_ss220/objects/sound/weapons/gunshots/railgun.ogg new file mode 100644 index 000000000000..0b939fd9a60e Binary files /dev/null and b/modular_ss220/objects/sound/weapons/gunshots/railgun.ogg differ diff --git a/modular_ss220/objects/sound/weapons/gunshots/shot_heavy.ogg b/modular_ss220/objects/sound/weapons/gunshots/shot_heavy.ogg new file mode 100644 index 000000000000..f91b21ec4d80 Binary files /dev/null and b/modular_ss220/objects/sound/weapons/gunshots/shot_heavy.ogg differ diff --git a/modular_ss220/objects/sound/weapons/melee/sardaukar/equip.ogg b/modular_ss220/objects/sound/weapons/melee/sardaukar/equip.ogg new file mode 100644 index 000000000000..92ca5f02172f Binary files /dev/null and b/modular_ss220/objects/sound/weapons/melee/sardaukar/equip.ogg differ diff --git a/modular_ss220/objects/sound/weapons/melee/sardaukar/knifehit1.ogg b/modular_ss220/objects/sound/weapons/melee/sardaukar/knifehit1.ogg new file mode 100644 index 000000000000..3e4a04c0f1de Binary files /dev/null and b/modular_ss220/objects/sound/weapons/melee/sardaukar/knifehit1.ogg differ diff --git a/modular_ss220/outfits/code/outfits.dm b/modular_ss220/outfits/code/outfits.dm index c59e4007244f..f19ce9ceb7ec 100644 --- a/modular_ss220/outfits/code/outfits.dm +++ b/modular_ss220/outfits/code/outfits.dm @@ -37,8 +37,99 @@ /obj/item/clothing/head/beret/centcom/officer/navy/marine name = "navy blue beret" -// MARK: NT Navy Field Officer -/datum/outfit/job/ntnavyofficer/field +// MARK: NT Officer outfits +/datum/outfit/job/admin/ntnavyofficer + name = "Nanotrasen Navy Officer" + jobtype = /datum/job/ntnavyofficer + + uniform = /obj/item/clothing/under/rank/centcom/officer + gloves = /obj/item/clothing/gloves/color/white + shoes = /obj/item/clothing/shoes/centcom + head = /obj/item/clothing/head/beret/centcom/officer + l_ear = /obj/item/radio/headset/centcom + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + id = /obj/item/card/id/centcom + pda = /obj/item/pda/centcom + bio_chips = list( + /obj/item/bio_chip/mindshield, + /obj/item/bio_chip/dust + ) + backpack = /obj/item/storage/backpack/satchel + backpack_contents = list( + /obj/item/stamp/centcom = 1, + ) + box = /obj/item/storage/box/centcomofficer + cybernetic_implants = list( + /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened, + /obj/item/organ/internal/cyberimp/arm/combat/centcom + ) + +/datum/outfit/job/admin/ntnavyofficer/on_mind_initialize(mob/living/carbon/human/H) + . = ..() + H.mind.offstation_role = TRUE + +/datum/outfit/job/admin/ntspecops + name = "Special Operations Officer" + jobtype = /datum/job/ntspecops + allow_backbag_choice = FALSE + uniform = /obj/item/clothing/under/rank/centcom/captain + suit = /obj/item/clothing/suit/space/deathsquad/officer + belt = /obj/item/storage/belt/military/assault + gloves = /obj/item/clothing/gloves/combat + shoes = /obj/item/clothing/shoes/combat + mask = /obj/item/clothing/mask/holo_cigar + head = /obj/item/clothing/head/helmet/space/deathsquad/beret + l_ear = /obj/item/radio/headset/centcom + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + id = /obj/item/card/id/centcom + pda = /obj/item/pda/centcom + r_pocket = /obj/item/storage/fancy/matches + back = /obj/item/storage/backpack/satchel + box = /obj/item/storage/box/centcomofficer + backpack_contents = list( + /obj/item/clothing/shoes/magboots/advance = 1, + /obj/item/storage/box/zipties = 1 + ) + bio_chips = list( + /obj/item/bio_chip/mindshield, + /obj/item/bio_chip/dust + ) + cybernetic_implants = list( + /obj/item/organ/internal/eyes/cybernetic/xray/hardened, + /obj/item/organ/internal/cyberimp/brain/anti_stam/hardened, + /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened, + /obj/item/organ/internal/cyberimp/arm/combat/centcom + ) + +/datum/outfit/job/admin/ntspecops/on_mind_initialize(mob/living/carbon/human/H) + . = ..() + H.mind.offstation_role = TRUE + +/datum/outfit/job/admin/ntspecops/alt + name = "Specops alt. RSH-12, saber, bandana" + belt = /obj/item/storage/belt/sheath/saber + backpack_contents = list( + /obj/item/gun/projectile/revolver/reclinable/rsh12, + /obj/item/ammo_box/speed_loader_mm127, + /obj/item/ammo_box/speed_loader_mm127, + /obj/item/ammo_box/speed_loader_mm127, + /obj/item/clothing/mask/bandana/red + ) + suit_store = /obj/item/ammo_box/box_mm127 + +/datum/outfit/job/admin/ntnavyofficer/alt + name = "NT Navy Officer alt. Coat NT, holo, noble, cane" + mask = /obj/item/clothing/mask/holo_cigar + suit = /obj/item/clothing/suit/space/deathsquad/officer/field/cloak_nt/coat_nt + shoes = /obj/item/clothing/shoes/fluff/noble_boot + belt = /obj/item/melee/classic_baton/ntcane + +/datum/outfit/job/admin/ntnavyofficer/alt2 + name = "NT Navy Officer alt. Cloak NT, holo" + suit = /obj/item/clothing/suit/space/deathsquad/officer/field/cloak_nt + mask = /obj/item/clothing/mask/holo_cigar + +/datum/outfit/job/admin/ntnavyofficer/field name = "Nanotrasen Navy Field Officer" gloves = /obj/item/clothing/gloves/combat @@ -56,7 +147,62 @@ /obj/item/organ/internal/eyes/cybernetic/thermals/hardened ) -/datum/outfit/job/ntnavyofficer/field/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) +/datum/outfit/job/admin/ntnavyofficer/field/alt + name = "Nanotrasen Navy Field Officer alt. Ring, mateba, holster" + gloves =/obj/item/clothing/gloves/ring/silver + mask = /obj/item/clothing/mask/holo_cigar + backpack_contents = list( + /obj/item/clothing/accessory/scarf/purple, + /obj/item/clothing/gloves/combat, + /obj/item/gun/projectile/revolver/mateba, + /obj/item/ammo_box/a357, + /obj/item/ammo_box/a357, + /obj/item/ammo_box/a357, + /obj/item/clothing/accessory/holster + ) + +/datum/outfit/job/admin/nt_navy_captain + name = "NT Navy Captain (Advanced)" + + uniform = /obj/item/clothing/under/rank/centcom/captain + back = /obj/item/storage/backpack/satchel + belt = /obj/item/storage/belt/sheath/saber + gloves = /obj/item/clothing/gloves/color/white + shoes = /obj/item/clothing/shoes/centcom + head = /obj/item/clothing/head/beret/centcom/captain + l_ear = /obj/item/radio/headset/centcom + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + id = /obj/item/card/id/centcom + pda = /obj/item/pda/centcom + backpack_contents = list( + /obj/item/storage/box/centcomofficer, + /obj/item/bio_chip_implanter/death_alarm, + /obj/item/stamp/centcom, + /obj/item/gun/projectile/revolver/reclinable/rsh12, + /obj/item/ammo_box/speed_loader_mm127, + /obj/item/ammo_box/speed_loader_mm127 + ) + bio_chips = list( + /obj/item/bio_chip/mindshield, + /obj/item/bio_chip/dust + ) + cybernetic_implants = list( + /obj/item/organ/internal/eyes/cybernetic/xray/hardened, + /obj/item/organ/internal/cyberimp/brain/anti_stam/hardened, + /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened + ) + +/datum/outfit/job/admin/nt_navy_captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + var/obj/item/card/id/I = H.wear_id + if(istype(I)) + apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Captain"), "Nanotrasen Navy Captain") + H.sec_hud_set_ID() + +/datum/outfit/job/admin/ntnavyofficer/field/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() if(visualsOnly) return @@ -64,7 +210,39 @@ var/obj/item/card/id/I = H.wear_id if(istype(I)) apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Officer"), "Nanotrasen Navy Field Officer") - I.assignment = "Nanotrasen Navy Officer" + I.rank = "Nanotrasen Navy Officer" + I.assignment = "Nanotrasen Navy Field Officer" + H.sec_hud_set_ID() + +/datum/outfit/job/admin/ntnavyofficer/intern + name = "NT Intern" + uniform = /obj/item/clothing/under/rank/centcom/intern + head = /obj/item/clothing/head/beret/centcom/intern + glasses = /obj/item/clothing/glasses/hud/skills/sunglasses + gloves = /obj/item/clothing/gloves/fingerless + id = /obj/item/card/id/centcom + backpack_contents = list( + /obj/item/stamp/centcom, + /obj/item/clipboard, + /obj/item/stack/spacecash/c200 + ) + bio_chips = list( + /obj/item/bio_chip/mindshield + ) + cybernetic_implants = list( + /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened + ) + +/datum/outfit/job/admin/ntnavyofficer/intern/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + var/obj/item/card/id/I = H.wear_id + if(istype(I)) + apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Officer"), "Nanotrasen CentCom Intern") + I.rank = "Nanotrasen Navy Officer" + I.assignment = "Nanotrasen CentCom Intern" H.sec_hud_set_ID() /obj/item/clothing/head/helmet/space/deathsquad/beret/field @@ -138,3 +316,138 @@ /datum/outfit/job/centcom/response_team/engineer/amber suit = /obj/item/clothing/suit/space/ert_engineer head = /obj/item/clothing/head/helmet/space/ert_engineer + +// MARK: Skrell +/datum/outfit/admin/sdtf + name = "Skrellian Defence Task Forces Marine" + uniform = /obj/item/clothing/under/solgov/srt + back = /obj/item/mod/control/pre_equipped/exclusive/skrell_raskinta + belt = /obj/item/melee/vibroblade + glasses = /obj/item/clothing/glasses/night + gloves = /obj/item/clothing/gloves/combat + shoes = /obj/item/clothing/shoes/combat + l_ear = /obj/item/radio/headset/skrellian + id = /obj/item/card/id + l_hand = /obj/item/gun/energy/gun/skrell_carbine/elite + r_pocket = /obj/item/reagent_containers/hypospray/autoinjector/nt_emergency/skrell + l_pocket = /obj/item/tank/internals/emergency_oxygen/double + mask = /obj/item/clothing/mask/gas/swat + backpack_contents = list( + /obj/item/storage/box/skrell, + /obj/item/storage/box/smoke_grenades, + /obj/item/grenade/plastic/c4 = 2, + /obj/item/storage/box/handcuffs, + /obj/item/clothing/accessory/holster, + /obj/item/gun/energy/gun/skrell_pistol + ) + cybernetic_implants = list( + /obj/item/organ/internal/cyberimp/chest/nutriment/plus, + /obj/item/organ/internal/cyberimp/brain/anti_drop, + /obj/item/organ/internal/cyberimp/eyes/hud/medical, + ) + var/is_sardaukar = FALSE + +/datum/outfit/admin/sdtf/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + H.add_language("Skrellian") + H.set_default_language(GLOB.all_languages["Skrellian"]) + + var/obj/item/card/id/I = H.wear_id + if(istype(I)) + var/applied_rank = is_sardaukar ? "Emperor Guard" : "SDTF Raskinta Katish" + apply_to_card(I, H, list(ACCESS_MAINT_TUNNELS), applied_rank, /obj/item/card/id/away/old/med::icon_state) + H.sec_hud_set_ID() + +/datum/outfit/admin/sdtf/rifleman + name = "Skrellian Defence Task Forces Officer" + l_hand = /obj/item/gun/projectile/automatic/sniper_rifle/skrell_rifle + belt = /obj/item/storage/belt/military/assault/skrell + suit_store = /obj/item/melee/vibroblade + backpack_contents = list( + /obj/item/storage/box/skrell, + /obj/item/gun/energy/gun/skrell_carbine/elite, + /obj/item/storage/box/smoke_grenades, + /obj/item/grenade/plastic/c4 = 2, + /obj/item/clothing/accessory/holster, + /obj/item/gun/energy/gun/skrell_pistol + ) + +/datum/outfit/admin/sdtf/sardaukar + name = "Skrellian Defence Task Forces Emperor Guard" + l_hand = /obj/item/gun/projectile/automatic/sniper_rifle/skrell_rifle/elite + belt = /obj/item/storage/belt/military/assault/skrell_elite + back = /obj/item/mod/control/pre_equipped/exclusive/skrell_sardaukars + r_pocket = /obj/item/reagent_containers/hypospray/combat/nanites + suit_store = /obj/item/melee/vibroblade/sardaukar + backpack_contents = list( + /obj/item/gun/energy/gun/skrell_carbine/elite, + /obj/item/storage/box/skrell, + /obj/item/storage/box/smoke_grenades, + /obj/item/grenade/plastic/c4 = 2, + /obj/item/clothing/accessory/holster, + /obj/item/CQC_manual, + /obj/item/shield/energy, + /obj/item/gun/energy/gun/skrell_pistol + ) + cybernetic_implants = list( + /obj/item/organ/internal/cyberimp/chest/nutriment/plus, + /obj/item/organ/internal/cyberimp/brain/anti_drop, + /obj/item/organ/internal/cyberimp/eyes/hud/medical, + /obj/item/organ/internal/cyberimp/brain/sensory_enhancer, + /obj/item/organ/internal/cyberimp/brain/anti_stam + ) + is_sardaukar = TRUE + +/obj/item/radio/headset/skrellian + name = "skrellian bowman headset" + desc = "Used by SDFT forces. Protects ears from flashbangs." + flags = EARBANGPROTECT + origin_tech = "syndicate=3" + icon_state = "com_headset_alt" + item_state = "com_headset_alt" + ks1type = /obj/item/encryptionkey/skrell + requires_tcomms = FALSE + +/obj/item/encryptionkey/skrell + name = "skrellian encryption key" + icon_state = "cypherkey" + channels = list("Special Ops" = 1, "Security" = 1, "Command" = 1) + origin_tech = "syndicate=4" + +/obj/item/reagent_containers/hypospray/autoinjector/nt_emergency/skrell + name = "nanites emergency autoinjector" + desc = "Одноразовый автоинжектор с нанитами." + list_reagents = list("nanites" = 10) + +/obj/item/storage/box/skrell + name = "boxed survival kit" + desc = "A standard issue SDTF survival kit." + icon = 'modular_ss220/objects/icons/boxes.dmi' + icon_state = "skrell_box" + +/obj/item/storage/box/skrell/populate_contents() + new /obj/item/tank/internals/emergency_oxygen/engi(src) + new /obj/item/crowbar/small(src) + new /obj/item/flashlight/flare(src) + new /obj/item/kitchen/knife/combat(src) + new /obj/item/reagent_containers/hypospray/autoinjector/nt_emergency/skrell(src) + new /obj/item/reagent_containers/hypospray/autoinjector/nt_emergency/skrell(src) + +/obj/item/storage/belt/military/assault/skrell/populate_contents() + new /obj/item/ammo_box/magazine/skrell_magazine(src) + new /obj/item/ammo_box/magazine/skrell_magazine(src) + new /obj/item/ammo_box/magazine/skrell_magazine(src) + new /obj/item/ammo_box/magazine/skrell_magazine(src) + new /obj/item/ammo_box/magazine/skrell_magazine(src) + new /obj/item/restraints/legcuffs/bola/energy(src) + +/obj/item/storage/belt/military/assault/skrell_elite/populate_contents() + new /obj/item/ammo_box/magazine/skrell_magazine/skrell_magazine_elite(src) + new /obj/item/ammo_box/magazine/skrell_magazine/skrell_magazine_elite(src) + new /obj/item/ammo_box/magazine/skrell_magazine/skrell_magazine_elite(src) + new /obj/item/ammo_box/magazine/skrell_magazine/skrell_magazine_elite(src) + new /obj/item/ammo_box/magazine/skrell_magazine/skrell_magazine_elite(src) + new /obj/item/restraints/legcuffs/bola/energy(src) diff --git a/modular_ss220/sm_space_drop/code/sm_drop_button.dm b/modular_ss220/sm_space_drop/code/sm_drop_button.dm index ae956940fb17..c3376a007942 100644 --- a/modular_ss220/sm_space_drop/code/sm_drop_button.dm +++ b/modular_ss220/sm_space_drop/code/sm_drop_button.dm @@ -72,7 +72,7 @@ user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) glass = FALSE playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, TRUE) - update_icon_state() + update_icon(UPDATE_ICON_STATE) else user.visible_message(span_notice("[user] дружески похлопывает по [name]."), span_notice("Вы дружески похлопываете по [name].")) playsound(loc, 'sound/effects/glassknock.ogg', 50, TRUE) @@ -85,7 +85,7 @@ playsound(loc, "modular_ss220/sm_space_drop/sound/button[rand(1, 5)].ogg", 100, TRUE) visible_message(span_notice("Кнопка громко щелкает.")) launch_sequence() - update_icon_state() + update_icon(UPDATE_ICON_STATE) if(SSticker && SSticker.current_state == GAME_STATE_PLAYING) var/area/area = get_area(src) if(area) diff --git a/modular_ss220/station_traits/_station_traits.dm b/modular_ss220/station_traits/_station_traits.dm new file mode 100644 index 000000000000..9e518dd24de9 --- /dev/null +++ b/modular_ss220/station_traits/_station_traits.dm @@ -0,0 +1,5 @@ +/datum/modpack/station_traits + name = "Station Traits" + desc = "Станционные трейты, которые добавили мы. Возможно в будущем будут на апстриме." + author = "Aylong" + diff --git a/modular_ss220/station_traits/_station_traits.dme b/modular_ss220/station_traits/_station_traits.dme new file mode 100644 index 000000000000..b32c95c94a52 --- /dev/null +++ b/modular_ss220/station_traits/_station_traits.dme @@ -0,0 +1,3 @@ +#include "_station_traits.dm" + +#include "code/neutral_traits.dm" diff --git a/modular_ss220/station_traits/code/neutral_traits.dm b/modular_ss220/station_traits/code/neutral_traits.dm new file mode 100644 index 000000000000..b09668325a05 --- /dev/null +++ b/modular_ss220/station_traits/code/neutral_traits.dm @@ -0,0 +1,28 @@ +/datum/station_trait/darkness + name = "Electricity Saving" + trait_type = STATION_TRAIT_NEUTRAL + weight = 5 + show_in_report = TRUE + report_message = "Предыдущая смена позаботилась об экономии энергии перед уходом." + blacklist = list(/datum/station_trait/rave) + +/datum/station_trait/darkness/on_round_start() + . = ..() + for(var/obj/machinery/light_switch/light_switch in GLOB.machines) + var/turf/our_turf = get_turf(light_switch) + if(!is_station_level(our_turf.z)) + continue + + var/area/switch_area = get_area(light_switch) + switch_area.lightswitch = FALSE + light_switch.update_icon(UPDATE_ICON) + + for(var/obj/machinery/light/light in switch_area) + light.power_change() + + for(var/obj/item/flashlight/lamp/lamp in switch_area) + lamp.on = FALSE + lamp.update_brightness() + + for(var/turf/simulated/floor/light/floor_light in switch_area) + floor_light.toggle_light(FALSE) diff --git a/modular_ss220/text_to_speech/code/_defines.dm b/modular_ss220/text_to_speech/code/_defines.dm index 7f97c065707e..1e46ef58ef60 100644 --- a/modular_ss220/text_to_speech/code/_defines.dm +++ b/modular_ss220/text_to_speech/code/_defines.dm @@ -58,6 +58,7 @@ #define TTS_CATEGORY_TLOU "The Last of Us" #define TTS_CATEGORY_DEEP_ROCK_GALACTIC "Deep Rock Galactic" #define TTS_CATEGORY_SUNBOY "Пророк Санбой" +#define TTS_CATEGORY_WH40k "Warhammer 40k" #define TTS_GENDER_ANY "Любой" diff --git a/modular_ss220/text_to_speech/code/seeds/silero.dm b/modular_ss220/text_to_speech/code/seeds/silero.dm index 5f5e1c786ce0..89c4634865e1 100644 --- a/modular_ss220/text_to_speech/code/seeds/silero.dm +++ b/modular_ss220/text_to_speech/code/seeds/silero.dm @@ -5251,3 +5251,63 @@ value = "last_years_snow_narrator" category = TTS_CATEGORY_OTHER gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/last_years_snow_man + name = "last_years_snow_man" + value = "last_years_snow_man" + category = TTS_CATEGORY_OTHER + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/marine2_titus + name = "marine2_titus" + value = "marine2_titus" + category = TTS_CATEGORY_WH40k + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/marine2_berserk + name = "marine2_berserk" + value = "marine2_berserk" + category = TTS_CATEGORY_WH40k + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/marine2_gadriel + name = "marine2_gadriel" + value = "marine2_gadriel" + category = TTS_CATEGORY_WH40k + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/marine2_chairon + name = "marine2_chairon" + value = "marine2_chairon" + category = TTS_CATEGORY_WH40k + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/marine2_acheran + name = "marine2_acheran" + value = "marine2_acheran" + category = TTS_CATEGORY_WH40k + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/marine2_machine_spirit_4 + name = "marine2_machine_spirit_4" + value = "marine2_machine_spirit_4" + category = TTS_CATEGORY_WH40k + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/marine2_magos_galeo + name = "marine2_magos_galeo" + value = "marine2_magos_galeo" + category = TTS_CATEGORY_WH40k + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/marine2_servo_skull + name = "marine2_servo-skull" + value = "marine2_servo-skull" + category = TTS_CATEGORY_WH40k + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/marine2_balthazar + name = "marine2_balthazar" + value = "marine2_balthazar" + category = TTS_CATEGORY_WH40k + gender = TTS_GENDER_MALE diff --git a/modular_ss220/vending/code/vending.dm b/modular_ss220/vending/code/vending.dm index 017fa5bbead3..4ac5b9fae813 100644 --- a/modular_ss220/vending/code/vending.dm +++ b/modular_ss220/vending/code/vending.dm @@ -10,27 +10,27 @@ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF refill_canister = /obj/item/vending_refill/nta products = list( - /obj/item/storage/box/slug = 4, + /obj/item/storage/fancy/shell/slug = 4, /obj/item/grenade/flashbang = 4, /obj/item/flash = 5, - /obj/item/storage/box/buck = 4, + /obj/item/storage/fancy/shell/buck = 4, /obj/item/ammo_box/magazine/enforcer = 8, /obj/item/flashlight/seclite = 4, /obj/item/restraints/legcuffs/bola/energy = 8, /obj/item/ammo_box/magazine/enforcer/lethal = 8, /obj/item/ammo_box/magazine/laser = 12, /obj/item/ammo_box/magazine/wt550m9 = 8, - /obj/item/storage/box/rubbershot = 4, + /obj/item/storage/fancy/shell/rubbershot = 4, /obj/item/ammo_box/magazine/m556/arg = 12, /obj/item/ammo_box/a40mm = 4, /obj/item/ammo_box/magazine/smgm9mm = 12) /obj/machinery/economy/vending/nta/admin/Initialize(mapload) products = list() - var/list/new_products = list() + subtypesof(/obj/item/ammo_box) + /obj/item/storage/box/rubbershot +\ - /obj/item/storage/box/buck + /obj/item/storage/box/dragonsbreath + /obj/item/storage/box/holy +\ - /obj/item/storage/box/rubbershot + /obj/item/storage/box/slug + /obj/item/storage/box/stun +\ - /obj/item/storage/box/tranquilizer - /obj/item/ammo_box/magazine - typesof(/obj/item/ammo_box/magazine/internal) + var/list/new_products = list() + subtypesof(/obj/item/ammo_box) + /obj/item/storage/fancy/shell/rubbershot +\ + /obj/item/storage/fancy/shell/buck + /obj/item/storage/fancy/shell/dragonsbreath + /obj/item/storage/fancy/shell/holy +\ + /obj/item/storage/fancy/shell/rubbershot + /obj/item/storage/fancy/shell/slug + /obj/item/storage/fancy/shell/stun +\ + /obj/item/storage/fancy/shell/tranquilizer - /obj/item/ammo_box/magazine - typesof(/obj/item/ammo_box/magazine/internal) for(var/ammo_type in new_products) products[ammo_type] = 999 . = ..() @@ -48,9 +48,9 @@ /obj/item/gun/projectile/automatic/wt550 = 3, /obj/item/ammo_box/magazine/wt550m9 = 6, /obj/item/gun/projectile/shotgun/riot = 6, - /obj/item/storage/box/rubbershot = 6, - /obj/item/storage/box/beanbag = 4, - /obj/item/storage/box/tranquilizer = 4) + /obj/item/storage/fancy/shell/rubbershot = 6, + /obj/item/storage/fancy/shell/beanbag = 4, + /obj/item/storage/fancy/shell/tranquilizer = 4) /obj/machinery/economy/vending/nta/red name = "NT ERT Heavy Gear & Ammunition" @@ -63,9 +63,9 @@ /obj/item/gun/energy/immolator = 3, /obj/item/gun/energy/gun/nuclear = 3, /obj/item/gun/projectile/shotgun/automatic/combat = 3, - /obj/item/storage/box/slug = 4, - /obj/item/storage/box/buck = 4, - /obj/item/storage/box/dragonsbreath = 2, + /obj/item/storage/fancy/shell/slug = 4, + /obj/item/storage/fancy/shell/buck = 4, + /obj/item/storage/fancy/shell/dragonsbreath = 2, /obj/item/storage/lockbox/t4 = 3, /obj/item/grenade/smokebomb = 3, /obj/item/grenade/frag = 4) @@ -83,7 +83,7 @@ /obj/item/gun/projectile/automatic/pistol/enforcer = 6, /obj/item/ammo_box/magazine/enforcer = 12, /obj/item/gun/projectile/shotgun/riot = 1, - /obj/item/storage/box/rubbershot = 3) + /obj/item/storage/fancy/shell/rubbershot = 3) /obj/machinery/economy/vending/nta/yellow name = "NT ERT Death Wish Gear & Ammunition" @@ -173,54 +173,8 @@ icon_lightmask = "Cola_Machine_Red" slogan_list = list("Кола в космосе!") -/obj/machinery/economy/vending/suitdispenser/Initialize(mapload) - products += list(/obj/item/clothing/under/yellowgreen_skirt = 10, - /obj/item/clothing/under/black_skirt = 10, - /obj/item/clothing/under/aqua_skirt = 10, - /obj/item/clothing/under/blue_skirt = 10, - /obj/item/clothing/under/brown_skirt = 10, - /obj/item/clothing/under/darkblue_skirt = 10, - /obj/item/clothing/under/darkred_skirt = 10, - /obj/item/clothing/under/green_skirt = 10, - /obj/item/clothing/under/grey_skirt = 10, - /obj/item/clothing/under/lightblue_skirt = 10, - /obj/item/clothing/under/lightbrown_skirt = 10, - /obj/item/clothing/under/lightgreen_skirt = 10, - /obj/item/clothing/under/lightpurple_skirt = 10, - /obj/item/clothing/under/lightred_skirt = 10, - /obj/item/clothing/under/orange_skirt = 10, - /obj/item/clothing/under/pink_skirt = 10, - /obj/item/clothing/under/purple_skirt = 10, - /obj/item/clothing/under/red_skirt = 10, - /obj/item/clothing/under/white_skirt = 10, - /obj/item/clothing/under/yellow_skirt = 10, - /obj/item/clothing/under/rainbow_skirt = 1) - - contraband += list(/obj/item/clothing/under/prisoner_skirt = 1) - - prices += list(/obj/item/clothing/under/yellowgreen_skirt = 30, - /obj/item/clothing/under/aqua_skirt = 50, - /obj/item/clothing/under/black_skirt = 30, - /obj/item/clothing/under/blue_skirt = 50, - /obj/item/clothing/under/brown_skirt = 30, - /obj/item/clothing/under/darkblue_skirt = 50, - /obj/item/clothing/under/darkred_skirt = 50, - /obj/item/clothing/under/green_skirt = 50, - /obj/item/clothing/under/grey_skirt = 30, - /obj/item/clothing/under/lightblue_skirt = 30, - /obj/item/clothing/under/lightbrown_skirt = 30, - /obj/item/clothing/under/lightgreen_skirt = 50, - /obj/item/clothing/under/lightpurple_skirt = 50, - /obj/item/clothing/under/lightred_skirt = 50, - /obj/item/clothing/under/orange_skirt = 50, - /obj/item/clothing/under/pink_skirt = 50, - /obj/item/clothing/under/purple_skirt = 50, - /obj/item/clothing/under/red_skirt = 50, - /obj/item/clothing/under/white_skirt = 50, - /obj/item/clothing/under/yellow_skirt = 50, - /obj/item/clothing/under/prisoner_skirt = 175, - /obj/item/clothing/under/rainbow_skirt = 100) - . = ..() +/obj/machinery/economy/vending/suitdispenser/free + prices = list() /obj/machinery/economy/vending/wallmed/emergency_ntmed name = "\improper Advanced Nanomed" @@ -242,3 +196,14 @@ contraband |= list(/obj/item/clothing/shoes/clown_shoes/moffers = 1) prices |= list(/obj/item/clothing/shoes/clown_shoes/moffers = 80) . = ..() + +/obj/machinery/economy/vending/shoedispenser/free + prices = list() + +/obj/machinery/economy/vending/engidrobe/Initialize(mapload) + contraband |= list(/obj/item/clothing/gloves/color/yellow/vox = 1) + prices |= list(/obj/item/clothing/gloves/color/yellow/vox = 300) + . = ..() + +/obj/machinery/economy/vending/engidrobe/free + prices = list() diff --git a/modular_ss220/vending/code/vending_food.dm b/modular_ss220/vending/code/vending_food.dm index 758128c02a94..bfb647af2a85 100644 --- a/modular_ss220/vending/code/vending_food.dm +++ b/modular_ss220/vending/code/vending_food.dm @@ -45,6 +45,9 @@ /obj/item/poster/mac_vulpix = 3, ) +/obj/machinery/economy/vending/vulpix/free + prices = list() + // MARK: Nanotrasen Food /obj/machinery/economy/vending/nt_food name = "\improper Nanotrasen Food" diff --git a/paradise.dme b/paradise.dme index 97cc919fef08..5990a2124077 100644 --- a/paradise.dme +++ b/paradise.dme @@ -17,6 +17,7 @@ #include "code\__byond_version_compat.dm" #include "code\_compile_options.dm" #include "code\world_definition.dm" +#include "code\__DEFINES\__proc_refs.dm" #include "code\__DEFINES\_click.dm" #include "code\__DEFINES\_globals.dm" #include "code\__DEFINES\_init.dm" @@ -89,7 +90,6 @@ #include "code\__DEFINES\mecha_defines.dm" #include "code\__DEFINES\mecha_hides.dm" #include "code\__DEFINES\medal.dm" -#include "code\__DEFINES\milla.dm" #include "code\__DEFINES\misc_defines.dm" #include "code\__DEFINES\mob_defines.dm" #include "code\__DEFINES\mod.dm" @@ -102,7 +102,6 @@ #include "code\__DEFINES\pipes.dm" #include "code\__DEFINES\power_defines.dm" #include "code\__DEFINES\preferences_defines.dm" -#include "code\__DEFINES\proc_refs.dm" #include "code\__DEFINES\procpath.dm" #include "code\__DEFINES\qdel_defines.dm" #include "code\__DEFINES\radiation_defines.dm" @@ -112,6 +111,7 @@ #include "code\__DEFINES\revolution_defines.dm" #include "code\__DEFINES\role_preferences.dm" #include "code\__DEFINES\rolebans.dm" +#include "code\__DEFINES\rust.dm" #include "code\__DEFINES\rust_g.dm" #include "code\__DEFINES\shuttle_defines.dm" #include "code\__DEFINES\sight.dm" @@ -448,6 +448,7 @@ #include "code\datums\components\proximity_monitor.dm" #include "code\datums\components\radioactive.dm" #include "code\datums\components\scope.dm" +#include "code\datums\components\shelved.dm" #include "code\datums\components\shielded.dm" #include "code\datums\components\slippery.dm" #include "code\datums\components\spawner.dm" @@ -708,6 +709,7 @@ #include "code\game\area\ss13_areas\science_areas.dm" #include "code\game\area\ss13_areas\security_areas.dm" #include "code\game\area\ss13_areas\service_areas.dm" +#include "code\game\area\ss13_areas\station_area.dm" #include "code\game\area\ss13_areas\supply_areas.dm" #include "code\game\dna\dna2.dm" #include "code\game\dna\dna2_domutcheck.dm" @@ -790,8 +792,8 @@ #include "code\game\gamemodes\traitor\traitor.dm" #include "code\game\gamemodes\trifecta\trifecta.dm" #include "code\game\gamemodes\vampire\traitor_vamp.dm" -#include "code\game\gamemodes\vampire\vampire_gamemode.dm" #include "code\game\gamemodes\vampire\vampire_chan.dm" +#include "code\game\gamemodes\vampire\vampire_gamemode.dm" #include "code\game\gamemodes\wizard\artefact.dm" #include "code\game\gamemodes\wizard\godhand.dm" #include "code\game\gamemodes\wizard\magic_tarot.dm" @@ -956,11 +958,13 @@ #include "code\game\mecha\combat\phazon.dm" #include "code\game\mecha\combat\reticence.dm" #include "code\game\mecha\equipment\mecha_equipment.dm" +#include "code\game\mecha\equipment\tools\janitor_tools.dm" #include "code\game\mecha\equipment\tools\mecha_mining_tools.dm" #include "code\game\mecha\equipment\tools\medical_tools.dm" #include "code\game\mecha\equipment\tools\other_tools.dm" #include "code\game\mecha\equipment\tools\work_tools.dm" #include "code\game\mecha\equipment\weapons\weapons.dm" +#include "code\game\mecha\janitor\nkarrdem.dm" #include "code\game\mecha\medical\medical_base.dm" #include "code\game\mecha\medical\odysseus.dm" #include "code\game\mecha\working\ripley.dm" @@ -1016,6 +1020,7 @@ #include "code\game\objects\effects\effect_system\effects_smoke.dm" #include "code\game\objects\effects\effect_system\effects_sparks.dm" #include "code\game\objects\effects\effect_system\effects_water.dm" +#include "code\game\objects\effects\map_effects\mapmanip.dm" #include "code\game\objects\effects\spawners\airlock_spawner.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" #include "code\game\objects\effects\spawners\decorative_spawners.dm" @@ -1031,10 +1036,12 @@ #include "code\game\objects\effects\spawners\windowspawner.dm" #include "code\game\objects\effects\spawners\random\engineering_spawners.dm" #include "code\game\objects\effects\spawners\random\food_spawners.dm" +#include "code\game\objects\effects\spawners\random\furniture_spawners.dm" #include "code\game\objects\effects\spawners\random\maint_loot_spawners.dm" #include "code\game\objects\effects\spawners\random\misc_spawners.dm" #include "code\game\objects\effects\spawners\random\random_spawner.dm" #include "code\game\objects\effects\spawners\random\trash_spawners.dm" +#include "code\game\objects\effects\spawners\random\wall_decal_spawners.dm" #include "code\game\objects\effects\temporary_visuals\clockcult.dm" #include "code\game\objects\effects\temporary_visuals\cult_visuals.dm" #include "code\game\objects\effects\temporary_visuals\explosion_temp_visuals.dm" @@ -1205,6 +1212,7 @@ #include "code\game\objects\items\weapons\tape.dm" #include "code\game\objects\items\weapons\teleportation.dm" #include "code\game\objects\items\weapons\teleprod.dm" +#include "code\game\objects\items\weapons\thurible.dm" #include "code\game\objects\items\weapons\twohanded.dm" #include "code\game\objects\items\weapons\vending_items.dm" #include "code\game\objects\items\weapons\weaponry.dm" @@ -1319,6 +1327,7 @@ #include "code\game\objects\structures\railings.dm" #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm" +#include "code\game\objects\structures\shelves.dm" #include "code\game\objects\structures\signs.dm" #include "code\game\objects\structures\snow.dm" #include "code\game\objects\structures\spirit_board.dm" @@ -1917,7 +1926,6 @@ #include "code\modules\food_and_drinks\kitchen_machinery\cereal_maker.dm" #include "code\modules\food_and_drinks\kitchen_machinery\cooker.dm" #include "code\modules\food_and_drinks\kitchen_machinery\deep_fryer.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\food_grill.dm" #include "code\modules\food_and_drinks\kitchen_machinery\gibber.dm" #include "code\modules\food_and_drinks\kitchen_machinery\grill_new.dm" #include "code\modules\food_and_drinks\kitchen_machinery\icecream_vat.dm" @@ -1986,6 +1994,7 @@ #include "code\modules\hydroponics\grown\onion.dm" #include "code\modules\hydroponics\grown\peanut.dm" #include "code\modules\hydroponics\grown\pineapple.dm" +#include "code\modules\hydroponics\grown\plum.dm" #include "code\modules\hydroponics\grown\potato.dm" #include "code\modules\hydroponics\grown\pumpkin.dm" #include "code\modules\hydroponics\grown\random_seeds.dm" @@ -2017,6 +2026,7 @@ #include "code\modules\instruments\songs\_song_ui.dm" #include "code\modules\instruments\songs\play_legacy.dm" #include "code\modules\instruments\songs\play_synthesized.dm" +#include "code\modules\lavaland\caves_theme.dm" #include "code\modules\lavaland\lavaland_theme.dm" #include "code\modules\library\book.dm" #include "code\modules\library\library_admin.dm" @@ -2390,8 +2400,8 @@ #include "code\modules\mob\living\simple_animal\hostile\mushroom.dm" #include "code\modules\mob\living\simple_animal\hostile\netherworld.dm" #include "code\modules\mob\living\simple_animal\hostile\pirate.dm" -#include "code\modules\mob\living\simple_animal\hostile\russian.dm" #include "code\modules\mob\living\simple_animal\hostile\skeleton_mob.dm" +#include "code\modules\mob\living\simple_animal\hostile\soviet.dm" #include "code\modules\mob\living\simple_animal\hostile\syndicate_mobs.dm" #include "code\modules\mob\living\simple_animal\hostile\tree.dm" #include "code\modules\mob\living\simple_animal\hostile\venus_human_trap.dm" @@ -2872,6 +2882,7 @@ #include "code\modules\surgery\organs\robolimbs.dm" #include "code\modules\surgery\organs\skeleton_organs.dm" #include "code\modules\surgery\organs\vocal_cords.dm" +#include "code\modules\surgery\organs\organ_datums\battery_datum.dm" #include "code\modules\surgery\organs\organ_datums\heart_datum.dm" #include "code\modules\surgery\organs\organ_datums\lung_datum.dm" #include "code\modules\surgery\organs\organ_datums\organ_datum.dm" @@ -2935,6 +2946,7 @@ #include "code\modules\tgui\tgui_input\keycombo_input.dm" #include "code\modules\tgui\tgui_input\list_input.dm" #include "code\modules\tgui\tgui_input\number_input.dm" +#include "code\modules\tgui\tgui_input\ranked_list_input.dm" #include "code\modules\tgui\tgui_input\text_input.dm" #include "code\modules\tgui\tgui_panel\audio.dm" #include "code\modules\tgui\tgui_panel\telemetry.dm" diff --git a/milla/Cargo.lock b/rust/Cargo.lock similarity index 57% rename from milla/Cargo.lock rename to rust/Cargo.lock index eee0b6908eb6..a3c486a8d949 100644 --- a/milla/Cargo.lock +++ b/rust/Cargo.lock @@ -2,6 +2,31 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -17,16 +42,50 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c4b08ed8a30ff7320117c190eb4d73d47f0ac0c930ab853b8224cef7cd9a5e7" +[[package]] +name = "attribute-derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c124f12ade4e670107b132722d0ad1a5c9790bcbc1b265336369ea05626b4498" +dependencies = [ + "attribute-derive-macro", + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "attribute-derive-macro" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b217a07446e0fb086f83401a98297e2d81492122f5874db5391bd270a185f88" +dependencies = [ + "collection_literals", + "interpolator", + "proc-macro-error", + "proc-macro-utils", + "proc-macro2", + "quote", + "quote-use", + "syn 2.0.60", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + [[package]] name = "bindgen" version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags", + "bitflags 2.5.0", "cexpr", "clang-sys", - "itertools", + "itertools 0.12.1", "lazy_static", "lazycell", "log", @@ -36,16 +95,38 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn", + "syn 2.0.60", "which", ] +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +[[package]] +name = "builtins-proc-macro" +version = "0.0.0" +source = "git+https://github.com/SpaceManiac/SpacemanDMM?rev=6c5a751516ae0e8add4b2aa4388a1e84e96e7082#6c5a751516ae0e8add4b2aa4388a1e84e96e7082" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + [[package]] name = "byondapi" version = "0.4.7" @@ -67,7 +148,7 @@ source = "git+https://github.com/spacestation13/byondapi-rs.git#aa4addd95c33b666 dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.60", ] [[package]] @@ -82,6 +163,32 @@ dependencies = [ "walkdir", ] +[[package]] +name = "bytemuck" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "cexpr" version = "0.6.0" @@ -108,6 +215,72 @@ dependencies = [ "libloading", ] +[[package]] +name = "collection_literals" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186dce98367766de751c42c4f03970fc60fc012296e706ccbb9d5df9b6c1e271" + +[[package]] +name = "color_space" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52fdfaf2bee6357023bf7f95b15a8ef0b82759d2bce705cc45efcae9ae10f0ff" + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-where" +version = "1.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "dmm-tools" +version = "0.1.0" +source = "git+https://github.com/SpaceManiac/SpacemanDMM?rev=6c5a751516ae0e8add4b2aa4388a1e84e96e7082#6c5a751516ae0e8add4b2aa4388a1e84e96e7082" +dependencies = [ + "ahash", + "bumpalo", + "bytemuck", + "dreammaker", + "either", + "indexmap 1.9.3", + "inflate", + "lodepng", + "ndarray", + "rand", +] + [[package]] name = "doxygen-rs" version = "0.4.2" @@ -117,6 +290,29 @@ dependencies = [ "phf", ] +[[package]] +name = "dreammaker" +version = "0.1.0" +source = "git+https://github.com/SpaceManiac/SpacemanDMM?rev=6c5a751516ae0e8add4b2aa4388a1e84e96e7082#6c5a751516ae0e8add4b2aa4388a1e84e96e7082" +dependencies = [ + "ahash", + "bitflags 1.3.2", + "builtins-proc-macro", + "color_space", + "derivative", + "get-size", + "get-size-derive", + "indexmap 1.9.3", + "interval-tree", + "lodepng", + "ordered-float", + "phf", + "serde", + "serde_derive", + "termcolor", + "toml", +] + [[package]] name = "either" version = "1.11.0" @@ -149,6 +345,42 @@ dependencies = [ "once_cell", ] +[[package]] +name = "flate2" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "get-size" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b61e2dab7eedce93a83ab3468b919873ff16bac5a3e704011ff836d22b2120" + +[[package]] +name = "get-size-derive" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a1bcfb855c1f340d5913ab542e36f25a1c56f57de79022928297632435dec2" +dependencies = [ + "attribute-derive", + "quote", + "syn 2.0.60", +] + [[package]] name = "getrandom" version = "0.2.14" @@ -166,6 +398,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.5" @@ -187,6 +425,16 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + [[package]] name = "indexmap" version = "2.2.6" @@ -194,15 +442,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.5", ] +[[package]] +name = "inflate" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" +dependencies = [ + "adler32", +] + +[[package]] +name = "interpolator" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" + +[[package]] +name = "interval-tree" +version = "0.8.0" +source = "git+https://github.com/SpaceManiac/SpacemanDMM?rev=6c5a751516ae0e8add4b2aa4388a1e84e96e7082#6c5a751516ae0e8add4b2aa4388a1e84e96e7082" + [[package]] name = "inventory" version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -212,6 +489,12 @@ dependencies = [ "either", ] +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + [[package]] name = "lazy_static" version = "1.4.0" @@ -246,12 +529,34 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "lodepng" +version = "3.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2dea7cda68e381418c985fd8f32a9c279a21ae8c715f2376adb20c27a0fad3" +dependencies = [ + "crc32fast", + "flate2", + "libc", + "rgb", +] + [[package]] name = "log" version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +[[package]] +name = "matrixmultiply" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" +dependencies = [ + "autocfg", + "rawpointer", +] + [[package]] name = "memchr" version = "2.7.2" @@ -259,23 +564,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] -name = "milla" -version = "1.0.0" +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "atomic_float", - "bitflags", - "byondapi", - "eyre", - "rand", - "scc", - "thread-priority", + "adler2", ] [[package]] -name = "minimal-lexical" -version = "0.2.1" +name = "ndarray" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "rawpointer", +] [[package]] name = "nom" @@ -287,6 +601,33 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + [[package]] name = "num_enum" version = "0.7.2" @@ -305,7 +646,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.60", ] [[package]] @@ -314,6 +655,15 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "ordered-float" +version = "3.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +dependencies = [ + "num-traits", +] + [[package]] name = "phf" version = "0.11.2" @@ -344,7 +694,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn", + "syn 2.0.60", ] [[package]] @@ -369,7 +719,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ac2cf0f2e4f42b49f5ffd07dae8d746508ef7526c13940e5f524012ae6c6550" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.60", ] [[package]] @@ -381,6 +731,41 @@ dependencies = [ "toml_edit", ] +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-utils" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f59e109e2f795a5070e69578c4dc101068139f74616778025ae1011d4cd41a8" +dependencies = [ + "proc-macro2", + "quote", + "smallvec", +] + [[package]] name = "proc-macro2" version = "1.0.81" @@ -399,6 +784,29 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "quote-use" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7b5abe3fe82fdeeb93f44d66a7b444dedf2e4827defb0a8e69c437b2de2ef94" +dependencies = [ + "quote", + "quote-use-macros", + "syn 2.0.60", +] + +[[package]] +name = "quote-use-macros" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ea44c7e20f16017a76a245bb42188517e13d16dcb1aa18044bc406cdc3f4af" +dependencies = [ + "derive-where", + "proc-macro2", + "quote", + "syn 2.0.60", +] + [[package]] name = "rand" version = "0.8.5" @@ -429,11 +837,17 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + [[package]] name = "regex" -version = "1.10.4" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -458,6 +872,15 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +[[package]] +name = "rgb" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" +dependencies = [ + "bytemuck", +] + [[package]] name = "rustc-hash" version = "1.1.0" @@ -479,19 +902,46 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", "windows-sys", ] +[[package]] +name = "rustlibs" +version = "1.0.0" +dependencies = [ + "atomic_float", + "bitflags 2.5.0", + "byondapi", + "diff", + "dmm-tools", + "eyre", + "fxhash", + "itertools 0.10.5", + "rand", + "regex", + "scc", + "serde", + "serde_json", + "thread-priority", + "walkdir", +] + [[package]] name = "rustversion" version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + [[package]] name = "same-file" version = "1.0.6" @@ -522,6 +972,38 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +[[package]] +name = "serde" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + [[package]] name = "shlex" version = "1.3.0" @@ -534,6 +1016,23 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.60" @@ -545,13 +1044,22 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "thread-priority" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d3b04d33c9633b8662b167b847c7ab521f83d1ae20f2321b65b5b925e532e36" dependencies = [ - "bitflags", + "bitflags 2.5.0", "cfg-if", "libc", "log", @@ -559,6 +1067,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml_datetime" version = "0.6.5" @@ -571,7 +1088,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap", + "indexmap 2.2.6", "toml_datetime", "winnow", ] @@ -582,6 +1099,12 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + [[package]] name = "walkdir" version = "2.5.0" @@ -722,3 +1245,23 @@ checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] diff --git a/rust/Cargo.toml b/rust/Cargo.toml new file mode 100644 index 000000000000..06e948f3bec0 --- /dev/null +++ b/rust/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "rustlibs" +version = "1.0.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib"] + +[dependencies] +atomic_float = "1.0.0" +bitflags = "2.5.0" +byondapi = { git = "https://github.com/spacestation13/byondapi-rs.git", version = "0.4.7" } +eyre = "0.6.12" +rand = { version = "0.8.5", features = ["small_rng"] } +scc = "2.1.1" +thread-priority = "1.1.0" + +# spacemandmm, also used by strongmandmm +dmmtools = { git = "https://github.com/SpaceManiac/SpacemanDMM", rev = "6c5a751516ae0e8add4b2aa4388a1e84e96e7082", package = "dmm-tools" } +# diffs between two strings/texts/files, used in tests +diff = "0.1" +# general utility lib for iterator operations +itertools = "0.10.5" +# fast hashmap +fxhash = "0.2.1" +# interface for serialization +serde = { version = "1.0", features = ["derive"] } +# json implementation for serde +serde_json = { version = "1.0" } +# utility function for walking through a dir recursively +walkdir = "2.5.0" +# regex +regex = "1.10.5" diff --git a/rust/src/lib.rs b/rust/src/lib.rs new file mode 100644 index 000000000000..66ed4b0b1bbb --- /dev/null +++ b/rust/src/lib.rs @@ -0,0 +1,3 @@ +mod logging; +mod mapmanip; +mod milla; diff --git a/rust/src/logging/mod.rs b/rust/src/logging/mod.rs new file mode 100644 index 000000000000..fc5312ae5941 --- /dev/null +++ b/rust/src/logging/mod.rs @@ -0,0 +1,24 @@ +/// Call stack trace dm method with message. +pub(crate) fn dm_call_stack_trace(msg: String) { + let msg = byondapi::value::ByondValue::try_from(msg).unwrap(); + // this is really ugly, cause we want to get id/ref to a proc name string + // that is already allocated, and don't want to allocate a new string entirely + byondapi::global_call::call_global_id( + { + static STRING_ID: std::sync::OnceLock = std::sync::OnceLock::new(); + *STRING_ID.get_or_init(|| byondapi::byond_string::str_id_of("_stack_trace").unwrap()) + }, + &[msg], + ) + .unwrap(); +} + +/// Panic handler, called on unhandled errors. +/// Writes panic info to a text file, and calls dm stack trace proc as well. +pub(crate) fn setup_panic_handler() { + std::panic::set_hook(Box::new(|info| { + let msg = format!("Panic \n {:#?}", info); + let _ = std::fs::write("./rustlibs_panic.txt", msg.clone()); + dm_call_stack_trace(msg); + })) +} diff --git a/rust/src/mapmanip/.gitignore b/rust/src/mapmanip/.gitignore new file mode 100644 index 000000000000..99912a867148 --- /dev/null +++ b/rust/src/mapmanip/.gitignore @@ -0,0 +1 @@ +test-out/* diff --git a/rust/src/mapmanip/core/map_to_string.rs b/rust/src/mapmanip/core/map_to_string.rs new file mode 100644 index 000000000000..f931d97ac206 --- /dev/null +++ b/rust/src/mapmanip/core/map_to_string.rs @@ -0,0 +1,7 @@ +/// Turns spacemandmm map object to string. +pub fn map_to_string(map: &dmmtools::dmm::Map) -> eyre::Result { + let mut v = vec![]; + map.to_writer(&mut v)?; + let s = String::from_utf8(v)?; + Ok(s) +} diff --git a/rust/src/mapmanip/core/mod.rs b/rust/src/mapmanip/core/mod.rs new file mode 100644 index 000000000000..7aa0dd994c7b --- /dev/null +++ b/rust/src/mapmanip/core/mod.rs @@ -0,0 +1,147 @@ +pub mod to_dict_map; +pub use to_dict_map::to_dict_map; +pub mod to_grid_map; +pub use to_grid_map::to_grid_map; + +pub mod map_to_string; +pub use map_to_string::map_to_string; + +use dmmtools::dmm; +use dmmtools::dmm::Coord3; + +/// A representation of a single tile on a map that may or may not be mapped to an existing key. +#[derive(Clone, Debug, Default)] +pub struct Tile { + /// A key temporarily assigned to the tile until an appropriate new/existing + /// key can be assigned to it, or if it is already being used by a different + /// prefab list in the file. + pub key_suggestion: dmm::Key, + /// The prefabs on the tile. + pub prefabs: Vec, +} + +impl Tile { + /// Return the first /area that exists in the prefab. + pub fn get_area(&self) -> Option<&dmm::Prefab> { + self.prefabs + .iter() + .find(|prefab| prefab.path.starts_with("/area/")) + } + + /// Remove and return the first /area that exists in the prefab. + pub fn remove_area(&mut self) -> Option { + let area = self.get_area().cloned(); + if area.is_some() { + self.prefabs + .retain(|prefab| !prefab.path.starts_with("/area/")) + } + area + } + + /// Return the first /turf that exists in the prefab. + pub fn get_turf(&self) -> Option<&dmm::Prefab> { + self.prefabs + .iter() + .find(|prefab| prefab.path.starts_with("/turf/")) + } + + /// Remove and return the first /turf that exists in the prefab. + pub fn remove_turf(&mut self) -> Option { + let turf = self.get_turf().cloned(); + if turf.is_some() { + self.prefabs + .retain(|prefab| !prefab.path.starts_with("/turf/")) + } + turf + } +} + +/// Thin abstraction over a flat vec, to provide a simple hashmap-like interface, +/// and to translate between 3D dmm coords (start at 1), and 1D flat vec coords (start at 0). +/// The translation is so that it looks better in logs/errors/etc, +/// where shown coords would correspond to coords seen in game or in strongdmm. +#[derive(Clone, Debug)] +pub struct TileGrid { + pub size: Coord3, + pub grid: Vec, +} + +impl TileGrid { + pub fn new(size_x: i32, size_y: i32, size_z: i32) -> TileGrid { + Self { + size: Coord3::new(size_x, size_y, size_z), + grid: vec![Tile::default(); (size_x * size_y * size_z) as usize], + } + } + + pub fn len(&self) -> usize { + self.grid.len() + } + + fn coord_to_index(&self, coord: &Coord3) -> usize { + let coord = Coord3::new(coord.x - 1, coord.y - 1, coord.z - 1); + ((coord.x) + (coord.y * self.size.x) + (coord.z * self.size.x * self.size.y)) as usize + } + + fn index_to_coord(&self, index: usize) -> Coord3 { + let index = index as i32; + Coord3::new( + (index % self.size.x) + 1, + ((index / self.size.x) % self.size.y) + 1, + (index / (self.size.x * self.size.y)) + 1, + ) + } + + pub fn get_mut(&mut self, coord: &Coord3) -> Option<&mut Tile> { + let index = self.coord_to_index(coord); + self.grid.get_mut(index) + } + + pub fn get(&self, coord: &Coord3) -> Option<&Tile> { + self.grid.get(self.coord_to_index(coord)) + } + + pub fn insert(&mut self, coord: &Coord3, tile: Tile) { + *self.get_mut(coord).unwrap() = tile; + } + + pub fn iter(&self) -> impl Iterator { + self.grid + .iter() + .enumerate() + .map(|(i, t)| (self.index_to_coord(i), t)) + } + + pub fn keys(&self) -> impl Iterator + '_ { + self.grid + .iter() + .enumerate() + .map(|(i, _t)| self.index_to_coord(i)) + } + + pub fn values(&self) -> impl Iterator { + self.grid.iter() + } + + pub fn values_mut(&mut self) -> impl Iterator { + self.grid.iter_mut() + } +} + +/// This is analogous to `dmmtools::dmm::Map`, but instead of being structured like dmm maps are, +/// where they have a dictionary of keys-to-prefabs and a separate grid of keys, +/// this is only a direct coord-to-prefab grid. +/// It is not memory efficient, but it allows for much greater flexibility of manipulation. +#[derive(Clone, Debug)] +pub struct GridMap { + /// + pub size: dmm::Coord3, + /// + pub grid: crate::mapmanip::core::TileGrid, +} + +impl GridMap { + pub fn from_file(path: &std::path::Path) -> Option { + Some(to_grid_map(&dmm::Map::from_file(&path).ok()?)) + } +} diff --git a/rust/src/mapmanip/core/to_dict_map.rs b/rust/src/mapmanip/core/to_dict_map.rs new file mode 100644 index 000000000000..6920e6ab6db6 --- /dev/null +++ b/rust/src/mapmanip/core/to_dict_map.rs @@ -0,0 +1,71 @@ +use crate::mapmanip::GridMap; +use dmmtools::dmm::{self, Coord3}; +use eyre::ContextCompat; +use fxhash::FxHashMap; +use std::collections::BTreeSet; + +fn coord3_to_index(coord: dmm::Coord3, size: dmm::Coord3) -> (usize, usize, usize) { + ( + coord.z as usize - 1, + (size.y - coord.y) as usize, + coord.x as usize - 1, + ) +} + +fn int_to_key(i: u16) -> dmm::Key { + // Unsafe is used here to convert basic int to key type, as `dmm::Key` interior var is private. + // This is "safe", as key will always be `u16` to maintain compability with the `dmm` format. + // Could be at some point be made safe when the key type is made public in the `dmm_tools` crate. + unsafe { std::mem::transmute::(i) } +} + +pub fn to_dict_map(grid_map: &GridMap) -> eyre::Result { + let mut dict_map = dmm::Map::new( + grid_map.size.x as usize, + grid_map.size.y as usize, + grid_map.size.z as usize, + "".to_string(), + "".to_string(), + ); + dict_map.dictionary.clear(); + + let mut used_dict_keys = BTreeSet::::new(); + + let mut dictionary_reverse = FxHashMap::, dmm::Key>::default(); + + for tile in grid_map.grid.values() { + if !dictionary_reverse.contains_key(&tile.prefabs) { + if used_dict_keys.contains(&tile.key_suggestion) { + let next_free_key = (0..65534) + .map(int_to_key) + .filter(|k| !used_dict_keys.contains(k)) + .next() + .wrap_err(format!("ran out of free keys"))?; + dictionary_reverse.insert(tile.prefabs.clone(), next_free_key); + used_dict_keys.insert(next_free_key); + } else { + dictionary_reverse.insert(tile.prefabs.clone(), tile.key_suggestion.clone()); + used_dict_keys.insert(tile.key_suggestion.clone()); + } + } + } + + for x in 1..(grid_map.size.x + 1) { + for y in 1..(grid_map.size.y + 1) { + for z in 1..(grid_map.size.z + 1) { + let coord = Coord3::new(x, y, z); + if let Some(tile) = grid_map.grid.get(&coord) { + let key = dictionary_reverse.get(&tile.prefabs).unwrap().clone(); + dict_map.dictionary.insert(key, tile.prefabs.clone()); + dict_map.grid[coord3_to_index(coord, grid_map.size)] = key; + } else { + eyre::bail!("to_dict_map fail; grid map has no coord: {coord:?}"); + } + } + } + } + + dict_map.adjust_key_length(); + + Ok(dict_map) +} diff --git a/rust/src/mapmanip/core/to_grid_map.rs b/rust/src/mapmanip/core/to_grid_map.rs new file mode 100644 index 000000000000..ec8c703f8d82 --- /dev/null +++ b/rust/src/mapmanip/core/to_grid_map.rs @@ -0,0 +1,37 @@ +use super::Tile; +use crate::mapmanip::core::GridMap; +use dmmtools::dmm::{self, Coord3}; +use std::ops::Index; + +fn tuple_to_size(xyz: (usize, usize, usize)) -> Coord3 { + Coord3::new(xyz.0 as i32, xyz.1 as i32, xyz.2 as i32) +} + +pub fn to_grid_map(dict_map: &dmm::Map) -> GridMap { + let mut grid_map = GridMap { + size: tuple_to_size(dict_map.dim_xyz()), + grid: crate::mapmanip::core::TileGrid::new( + dict_map.dim_xyz().0 as i32, + dict_map.dim_xyz().1 as i32, + dict_map.dim_xyz().2 as i32, + ), + }; + + for x in 1..grid_map.size.x + 1 { + for y in 1..grid_map.size.y + 1 { + for z in 1..grid_map.size.z + 1 { + let coord = dmm::Coord3::new(x, y, z); + let key = dict_map.index(coord); + let prefabs = dict_map.dictionary[key].clone(); + let tile = Tile { + key_suggestion: *key, + prefabs, + }; + let coord = dmm::Coord3::new(coord.x, coord.y, coord.z); + grid_map.grid.insert(&coord, tile); + } + } + } + + grid_map +} diff --git a/rust/src/mapmanip/mod.rs b/rust/src/mapmanip/mod.rs new file mode 100644 index 000000000000..70bc79b8cf34 --- /dev/null +++ b/rust/src/mapmanip/mod.rs @@ -0,0 +1,282 @@ +use core::map_to_string; +use core::to_grid_map; +use core::GridMap; + +use byondapi::byond_string; +use byondapi::value::ByondValue; +use eyre::Context; +use eyre::ContextCompat; +use itertools::Itertools; +use rand::prelude::IteratorRandom; +use serde::{Deserialize, Serialize}; +use tools::extract_submap; +use tools::insert_submap; + +use crate::logging::dm_call_stack_trace; +use crate::logging::setup_panic_handler; + +mod core; +mod tools; + +#[cfg(test)] +mod test; + +/// +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "type")] +pub enum MapManipulation { + SubmapExtractInsert { + submap_size_x: i64, + submap_size_y: i64, + submap_size_z: i64, + submaps_dmm: String, + marker_extract: String, + marker_insert: String, + submaps_can_repeat: bool, + }, +} + +pub fn mapmanip_config_parse(config_path: &std::path::Path) -> eyre::Result> { + // read + let config = std::fs::read_to_string(config_path) + .wrap_err(format!("mapmanip config read err: {config_path:?}"))?; + + // strip comments + // as the jsonc format is "json with comments" + // but serde_json lib can only handle actual json + let re = regex::Regex::new(r"\/\/.*")?; + let config = re.replace_all(&config, ""); + + // parse + let config = serde_json::from_str::>(&config) + .wrap_err(format!("mapmanip config json parse err: {config_path:?}"))?; + + Ok(config) +} + +pub fn mapmanip( + map_dir_path: &std::path::Path, + map: dmmtools::dmm::Map, + config: &Vec, +) -> eyre::Result { + // convert to gridmap + let mut map = to_grid_map(&map); + + // go through all the manipulations in `.jsonc` config for this `.dmm` + for (n, manipulation) in config.iter().enumerate() { + // readable index for errors + let n = n + 1; + let config_len = config.len(); + + match manipulation { + MapManipulation::SubmapExtractInsert { + submap_size_x, + submap_size_y, + submap_size_z, + submaps_dmm, + marker_extract, + marker_insert, + submaps_can_repeat, + } => mapmanip_submap_extract_insert( + map_dir_path, + &mut map, + *submap_size_x, + *submap_size_y, + *submap_size_z, + submaps_dmm, + marker_extract, + marker_insert, + *submaps_can_repeat, + ) + .wrap_err(format!( + "submap extract insert fail; + submaps path: {submaps_dmm:?}; + markers: {marker_extract}, {marker_insert};" + )), + } + .wrap_err(format!("mapmanip fail; manip n is: {n}/{config_len}"))?; + } + + Ok(core::to_dict_map(&map).wrap_err("failed on `to_dict_map`")?) +} + +fn mapmanip_submap_extract_insert( + map_dir_path: &std::path::Path, + map: &mut GridMap, + submap_size_x: i64, + submap_size_y: i64, + submap_size_z: i64, + submaps_dmm: &String, + marker_extract: &String, + marker_insert: &String, + submaps_can_repeat: bool, +) -> eyre::Result<()> { + let submap_size = dmmtools::dmm::Coord3::new( + submap_size_x.try_into().wrap_err("invalid submap_size_x")?, + submap_size_y.try_into().wrap_err("invalid submap_size_y")?, + submap_size_z.try_into().wrap_err("invalid submap_size_z")?, + ); + + // get the submaps map + let submaps_dmm: std::path::PathBuf = submaps_dmm.try_into().wrap_err("invalid path")?; + let submaps_dmm = map_dir_path.join(submaps_dmm); + let submaps_map = GridMap::from_file(&submaps_dmm) + .wrap_err(format!("can't read and parse submap dmm: {submaps_dmm:?}"))?; + + // find all the submap extract markers + let mut marker_extract_coords = vec![]; + for (coord, tile) in submaps_map.grid.iter() { + if tile.prefabs.iter().any(|p| p.path == *marker_extract) { + marker_extract_coords.push(coord); + } + } + + // find all the insert markers + let mut marker_insert_coords = vec![]; + for (coord, tile) in map.grid.iter() { + if tile.prefabs.iter().any(|p| p.path == *marker_insert) { + marker_insert_coords.push(coord); + } + } + + // do all the extracts-inserts + for insert_coord in marker_insert_coords { + // pick a submap + let (extract_coord_index, extract_coord) = marker_extract_coords + .iter() + .cloned() + .enumerate() + .choose(&mut rand::thread_rng()) + .wrap_err(format!( + "can't pick a submap to extract; no more extract markers in the submaps dmm; marker type: {marker_extract}" + ))?; + + // if submaps should not be repeating, remove this one from the list + if !submaps_can_repeat { + marker_extract_coords.remove(extract_coord_index); + } + + // extract that submap from the submap dmm + let extracted = extract_submap(&submaps_map, extract_coord, submap_size) + .wrap_err(format!("submap extraction failed; from {extract_coord}"))?; + + // and insert the submap into the manipulated map + insert_submap(&extracted, insert_coord, map) + .wrap_err(format!("submap insertion failed; at {insert_coord}"))?; + } + + Ok(()) +} + +/// +#[byondapi::bind] +fn mapmanip_read_dmm_file(path: ByondValue) { + internal_mapmanip_read_dmm_file(path) +} + +pub(crate) fn internal_mapmanip_read_dmm_file(path: ByondValue) -> eyre::Result { + setup_panic_handler(); + + let path: String = path + .get_string() + .wrap_err(format!("path arg is not a string: {:?}", path))?; + let path: std::path::PathBuf = path + .clone() + .try_into() + .wrap_err(format!("path arg is not a valid file path: {}", path))?; + + // just return null if path is bad for whatever reason + if !path.is_file() || !path.exists() { + return Ok(ByondValue::null()); + } + + // read file and parse with spacemandmm + let mut dmm = dmmtools::dmm::Map::from_file(&path).wrap_err(format!( + "spacemandmm parsing error; dmm file path: {path:?}; see error from spacemandmm below for more information" + ))?; + + // do mapmanip if defined for this dmm + let path_mapmanip_config = { + let mut p = path.clone(); + p.set_extension("jsonc"); + p + }; + if path_mapmanip_config.exists() { + // get path for dir of this dmm + let path_dir = path.parent().wrap_err("no parent")?; + // parse config + let config = crate::mapmanip::mapmanip_config_parse(&path_mapmanip_config).wrap_err( + format!("config parse fail; path: {:?}", path_mapmanip_config), + )?; + // do actual map manipulation + dmm = crate::mapmanip::mapmanip(path_dir, dmm, &config) + .wrap_err(format!("mapmanip fail; dmm file path: {path:?}"))?; + } + + // convert the map back to a string + let dmm = crate::mapmanip::core::map_to_string(&dmm).wrap_err(format!( + "error in converting map back to string; dmm file path: {path:?}" + ))?; + + // and return it + Ok(ByondValue::new_str(dmm)?) +} + +/// +#[no_mangle] +pub unsafe extern "C" fn read_dmm_file_ffi( + argc: byondapi::sys::u4c, + argv: *mut byondapi::value::ByondValue, +) -> byondapi::value::ByondValue { + setup_panic_handler(); + let args = unsafe { ::byondapi::parse_args(argc, argv) }; + match crate::mapmanip::internal_mapmanip_read_dmm_file( + args.get(0).map(ByondValue::clone).unwrap_or_default(), + ) { + Ok(val) => val, + Err(info) => { + dm_call_stack_trace(format!("Rustlibs ERROR read_dmm_file_ffi() \n {info:#?}")); + ByondValue::null() + } + } +} + +/// To be used by the `tools/rustlib_tools/mapmanip.ps1` script. +/// Not to be called from the game server, so bad error-handling is fine. +/// This should run map manipulations on every `.dmm` map that has a `.jsonc` config file, +/// and write it to a `.mapmanipout.dmm` file in the same location. +#[no_mangle] +pub unsafe extern "C" fn all_mapmanip_configs_execute_ffi() { + let mapmanip_configs = walkdir::WalkDir::new("./_maps") + .into_iter() + .map(|d| d.unwrap().path().to_owned()) + .filter(|p| p.extension().is_some()) + .filter(|p| p.extension().unwrap() == "jsonc") + .collect_vec(); + assert_ne!(mapmanip_configs.len(), 0); + + for config_path in mapmanip_configs { + let dmm_path = { + let mut p = config_path.clone(); + p.set_extension("dmm"); + p + }; + + let path_dir: &std::path::Path = dmm_path.parent().unwrap(); + + let mut dmm = dmmtools::dmm::Map::from_file(&dmm_path).unwrap(); + + let config = crate::mapmanip::mapmanip_config_parse(&config_path).unwrap(); + + dmm = crate::mapmanip::mapmanip(path_dir, dmm, &config).unwrap(); + + let dmm = map_to_string(&dmm).unwrap(); + + let dmm_out_path = { + let mut p = dmm_path.clone(); + p.set_extension("mapmanipout.dmm"); + p + }; + std::fs::write(dmm_out_path, dmm).unwrap(); + } +} diff --git a/rust/src/mapmanip/test-in/_tiny_test_map.dmm b/rust/src/mapmanip/test-in/_tiny_test_map.dmm new file mode 100644 index 000000000000..48ad3798f2d9 --- /dev/null +++ b/rust/src/mapmanip/test-in/_tiny_test_map.dmm @@ -0,0 +1,359 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/marble, +/area/space) +"b" = ( +/obj/random/mre, +/turf/simulated/floor/shuttle, +/area/space) +"f" = ( +/obj/random/energy, +/turf/simulated/wall, +/area/space) +"j" = ( +/obj/random/energy_antag, +/turf/simulated/wall, +/area/space) +"k" = ( +/obj/random/action_figure, +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"n" = ( +/obj/random/mre, +/turf/simulated/floor/marble, +/area/space) +"o" = ( +/obj/random/mre, +/turf/simulated/wall, +/area/space) +"p" = ( +/obj/random/handgun, +/turf/simulated/floor/marble, +/area/space) +"q" = ( +/obj/random/action_figure, +/turf/simulated/floor/shuttle, +/area/space) +"r" = ( +/obj/random/action_figure, +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"s" = ( +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"u" = ( +/obj/random/handgun, +/turf/simulated/wall, +/area/space) +"y" = ( +/obj/random/glowstick, +/turf/simulated/floor/marble, +/area/space) +"z" = ( +/obj/random/firstaid, +/turf/simulated/floor/marble, +/area/space) +"B" = ( +/turf/simulated/floor/lino/diamond, +/area/space) +"E" = ( +/turf/simulated/wall, +/area/space) +"F" = ( +/turf/simulated/floor/shuttle, +/area/space) +"G" = ( +/obj/random/finances, +/turf/simulated/wall, +/area/space) +"H" = ( +/obj/random/gift, +/turf/simulated/floor/marble, +/area/space) +"J" = ( +/obj/random/chameleon, +/turf/simulated/floor/shuttle, +/area/space) +"Q" = ( +/obj/aiming_overlay, +/turf/simulated/floor/marble, +/area/space) +"S" = ( +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"U" = ( +/obj/random/mre, +/turf/simulated/floor/lino/diamond, +/area/space) +"W" = ( +/obj/random/chameleon, +/turf/simulated/floor/lino/diamond, +/area/space) +"Y" = ( +/obj/random/action_figure, +/turf/simulated/floor/marble, +/area/space) +"Z" = ( +/obj/random/chameleon, +/turf/simulated/floor/marble, +/area/space) + +(1,1,1) = {" +E +j +j +E +E +E +E +E +E +E +E +E +G +G +a +"} +(2,1,1) = {" +f +B +B +B +B +B +B +B +B +B +B +B +B +B +z +"} +(3,1,1) = {" +f +B +B +B +B +Q +a +a +a +a +a +a +a +B +z +"} +(4,1,1) = {" +E +B +B +a +a +Q +B +B +B +B +B +B +B +B +a +"} +(5,1,1) = {" +E +B +s +Y +B +S +B +B +B +B +B +s +B +F +a +"} +(6,1,1) = {" +E +s +s +Y +s +S +s +B +B +B +B +s +B +F +a +"} +(7,1,1) = {" +E +B +B +a +B +r +s +k +k +B +B +s +B +F +a +"} +(8,1,1) = {" +E +W +a +a +B +S +B +B +k +k +B +s +F +F +a +"} +(9,1,1) = {" +o +W +n +U +U +S +U +U +U +s +k +U +b +U +n +"} +(10,1,1) = {" +E +W +Z +B +B +B +B +B +B +B +k +B +F +B +a +"} +(11,1,1) = {" +E +B +Z +W +B +B +B +B +B +B +q +F +F +B +a +"} +(12,1,1) = {" +E +B +B +W +W +B +B +F +F +F +F +s +B +B +a +"} +(13,1,1) = {" +u +B +B +B +B +J +J +J +B +B +B +s +B +B +H +"} +(14,1,1) = {" +u +B +B +B +F +F +B +W +W +B +B +B +s +B +H +"} +(15,1,1) = {" +a +p +p +a +a +a +a +a +a +a +a +a +y +y +a +"} diff --git a/rust/src/mapmanip/test-in/extracted.dmm b/rust/src/mapmanip/test-in/extracted.dmm new file mode 100644 index 000000000000..4df41ac838ea --- /dev/null +++ b/rust/src/mapmanip/test-in/extracted.dmm @@ -0,0 +1,115 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/lino/diamond, +/area/space) +"b" = ( +/obj/random/action_figure, +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"k" = ( +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"p" = ( +/turf/simulated/floor/marble, +/area/space) +"u" = ( +/obj/aiming_overlay, +/turf/simulated/floor/marble, +/area/space) +"G" = ( +/obj/random/mre, +/turf/simulated/floor/lino/diamond, +/area/space) +"H" = ( +/obj/random/chameleon, +/turf/simulated/floor/shuttle, +/area/space) +"L" = ( +/obj/random/action_figure, +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"N" = ( +/turf/simulated/floor/shuttle, +/area/space) +"R" = ( +/obj/random/chameleon, +/turf/simulated/floor/lino/diamond, +/area/space) +"T" = ( +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) + +(1,1,1) = {" +p +u +a +a +a +"} +(2,1,1) = {" +a +T +a +a +a +"} +(3,1,1) = {" +k +T +k +a +a +"} +(4,1,1) = {" +a +b +k +L +L +"} +(5,1,1) = {" +a +T +a +a +L +"} +(6,1,1) = {" +G +T +G +G +G +"} +(7,1,1) = {" +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +"} +(9,1,1) = {" +R +a +a +N +N +"} +(10,1,1) = {" +a +H +H +H +a +"} diff --git a/rust/src/mapmanip/test-in/inserted.dmm b/rust/src/mapmanip/test-in/inserted.dmm new file mode 100644 index 000000000000..dad09b97a864 --- /dev/null +++ b/rust/src/mapmanip/test-in/inserted.dmm @@ -0,0 +1,355 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/marble, +/area/space) +"b" = ( +/obj/random/mre, +/turf/simulated/floor/shuttle, +/area/space) +"f" = ( +/obj/random/energy, +/turf/simulated/wall, +/area/space) +"j" = ( +/obj/random/energy_antag, +/turf/simulated/wall, +/area/space) +"k" = ( +/obj/random/action_figure, +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"n" = ( +/obj/random/mre, +/turf/simulated/floor/marble, +/area/space) +"o" = ( +/obj/random/mre, +/turf/simulated/wall, +/area/space) +"p" = ( +/obj/random/handgun, +/turf/simulated/floor/marble, +/area/space) +"r" = ( +/obj/random/action_figure, +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"s" = ( +/obj/random/action_figure, +/turf/simulated/floor/lino/diamond, +/area/space) +"u" = ( +/obj/random/handgun, +/turf/simulated/wall, +/area/space) +"y" = ( +/obj/random/glowstick, +/turf/simulated/floor/marble, +/area/space) +"z" = ( +/obj/random/firstaid, +/turf/simulated/floor/marble, +/area/space) +"B" = ( +/turf/simulated/floor/lino/diamond, +/area/space) +"E" = ( +/turf/simulated/wall, +/area/space) +"F" = ( +/turf/simulated/floor/shuttle, +/area/space) +"G" = ( +/obj/random/finances, +/turf/simulated/wall, +/area/space) +"H" = ( +/obj/random/gift, +/turf/simulated/floor/marble, +/area/space) +"J" = ( +/obj/random/chameleon, +/turf/simulated/floor/shuttle, +/area/space) +"Q" = ( +/obj/aiming_overlay, +/turf/simulated/floor/marble, +/area/space) +"S" = ( +/obj/aiming_overlay, +/turf/simulated/floor/lino/diamond, +/area/space) +"U" = ( +/obj/random/mre, +/turf/simulated/floor/lino/diamond, +/area/space) +"W" = ( +/obj/random/chameleon, +/turf/simulated/floor/lino/diamond, +/area/space) +"Y" = ( +/obj/random/action_figure, +/turf/simulated/floor/marble, +/area/space) +"Z" = ( +/obj/random/chameleon, +/turf/simulated/floor/marble, +/area/space) + +(1,1,1) = {" +E +j +j +E +E +E +E +E +E +E +E +E +G +G +a +"} +(2,1,1) = {" +f +B +B +B +B +B +B +B +B +B +B +B +B +B +z +"} +(3,1,1) = {" +f +B +B +B +B +Q +a +a +a +a +a +a +a +B +z +"} +(4,1,1) = {" +E +B +B +a +a +Q +B +B +B +B +B +B +B +B +a +"} +(5,1,1) = {" +E +B +s +Y +B +S +B +B +B +B +B +s +B +F +a +"} +(6,1,1) = {" +E +s +s +Y +s +S +s +a +Q +B +B +B +B +F +a +"} +(7,1,1) = {" +E +B +B +a +B +r +s +B +S +B +B +B +B +F +a +"} +(8,1,1) = {" +E +W +a +a +B +S +B +s +S +s +B +B +F +F +a +"} +(9,1,1) = {" +o +W +n +U +U +S +U +B +r +s +k +k +b +U +n +"} +(10,1,1) = {" +E +W +Z +B +B +B +B +B +S +B +B +k +F +B +a +"} +(11,1,1) = {" +E +B +Z +W +B +B +B +U +S +U +U +U +F +B +a +"} +(12,1,1) = {" +E +B +B +W +W +B +B +B +B +B +B +B +B +B +a +"} +(13,1,1) = {" +u +B +B +B +B +J +J +B +B +B +B +B +B +B +H +"} +(14,1,1) = {" +u +B +B +B +F +F +B +W +B +B +F +F +s +B +H +"} +(15,1,1) = {" +a +p +p +a +a +a +a +B +J +J +J +B +y +y +a +"} diff --git a/rust/src/mapmanip/test.rs b/rust/src/mapmanip/test.rs new file mode 100644 index 000000000000..5f1076d913ab --- /dev/null +++ b/rust/src/mapmanip/test.rs @@ -0,0 +1,163 @@ +use dmmtools::dmm::{self, Coord3}; +use itertools::Itertools; + +use super::all_mapmanip_configs_execute_ffi; + +fn print_diff(left: &str, right: &str) { + for (i, diff) in diff::lines(&left, &right).iter().enumerate() { + match diff { + diff::Result::Left(l) => println!("{} diff - : {}", i, l), + diff::Result::Both(l, r) => { + assert_eq!(l, r); + } + diff::Result::Right(r) => println!("{} diff + : {}", i, r), + } + } +} + +fn all_test_dmm() -> Vec { + std::fs::read_dir("src/mapmanip/test-in") + .unwrap() + .map(|r| r.unwrap().path()) + .filter(|p| p.extension().unwrap() == "dmm") + .sorted() + .collect_vec() +} + +#[test] +fn to_grid_and_back() { + for path in all_test_dmm() { + println!("path: {}", path.display()); + + let dict_map_original = dmmtools::dmm::Map::from_file(&path).unwrap(); + let grid_map = crate::mapmanip::core::to_grid_map(&dict_map_original); + let dict_map_again = crate::mapmanip::core::to_dict_map(&grid_map).unwrap(); + let map_str_original = crate::mapmanip::core::map_to_string(&dict_map_original).unwrap(); + let map_str_from_grid = crate::mapmanip::core::map_to_string(&dict_map_again).unwrap(); + + dict_map_again + .to_file(&std::path::Path::new("src/mapmanip/test-out").join(path.file_name().unwrap())) + .unwrap(); + + print_diff(&map_str_original, &map_str_from_grid); + + if map_str_original != map_str_from_grid { + assert!(false); + } + } +} + +#[test] +fn extract() { + let path_src = std::path::Path::new("src/mapmanip/test-in/_tiny_test_map.dmm"); + let path_xtr = std::path::Path::new("src/mapmanip/test-in/extracted.dmm"); + let path_xtr_out = std::path::Path::new("src/mapmanip/test-out/extracted_out.dmm"); + + let dict_map_src = dmmtools::dmm::Map::from_file(&path_src).unwrap(); + let dict_map_xtr_expected = dmmtools::dmm::Map::from_file(&path_xtr).unwrap(); + + let grid_map_src = crate::mapmanip::core::to_grid_map(&dict_map_src); + let grid_map_xtr = crate::mapmanip::tools::extract_submap( + &grid_map_src, + Coord3::new(4, 7, 1), + Coord3::new(10, 5, 1), + ) + .unwrap(); + let grid_map_xtr_expected = crate::mapmanip::core::to_grid_map(&dict_map_xtr_expected); + + let dict_map_xtr = crate::mapmanip::core::to_dict_map(&grid_map_xtr).unwrap(); + dict_map_xtr.to_file(path_xtr_out).unwrap(); + + assert_eq!( + grid_map_xtr_expected.grid.keys().collect::>(), + grid_map_xtr.grid.keys().collect::>(), + ); + + for key in grid_map_xtr_expected.grid.keys() { + let tile_xtr_expected = grid_map_xtr_expected.grid.get(&key).unwrap(); + let tile_xtr = grid_map_xtr.grid.get(&key).unwrap(); + assert_eq!(tile_xtr_expected.prefabs, tile_xtr.prefabs); + } +} + +#[test] +fn insert() { + let path_xtr = std::path::Path::new("src/mapmanip/test-in/extracted.dmm"); + let path_dst = std::path::Path::new("src/mapmanip/test-in/_tiny_test_map.dmm"); + let path_dst_expected = std::path::Path::new("src/mapmanip/test-in/inserted.dmm"); + + let grid_map_dst_expected = + crate::mapmanip::core::GridMap::from_file(&path_dst_expected).unwrap(); + let grid_map_xtr = crate::mapmanip::core::GridMap::from_file(&path_xtr).unwrap(); + let mut grid_map_dst = crate::mapmanip::core::GridMap::from_file(&path_dst).unwrap(); + crate::mapmanip::tools::insert_submap(&grid_map_xtr, Coord3::new(6, 4, 1), &mut grid_map_dst) + .unwrap(); + + assert_eq!( + grid_map_dst_expected.grid.keys().collect::>(), + grid_map_dst.grid.keys().collect::>(), + ); + + for key in grid_map_dst_expected.grid.keys() { + let tile_dst_expected = grid_map_dst_expected.grid.get(&key).unwrap(); + let tile_dst = grid_map_dst.grid.get(&key).unwrap(); + assert_eq!(tile_dst_expected.prefabs, tile_dst.prefabs); + } +} + +#[test] +fn keys_deduplicated() { + // make sure that if multiple tiles have the same key_suggestion + // they get assigned different keys + + let path_src = std::path::Path::new("src/mapmanip/test-in/_tiny_test_map.dmm"); + let dict_map_src = dmmtools::dmm::Map::from_file(&path_src).unwrap(); + let grid_map_src = crate::mapmanip::core::to_grid_map(&dict_map_src); + + let mut grid_map_out = crate::mapmanip::core::to_grid_map(&dict_map_src); + for tile in grid_map_out.grid.values_mut() { + tile.key_suggestion = dmm::Key::default(); + } + let dict_map_out = crate::mapmanip::core::to_dict_map(&grid_map_out).unwrap(); + let grid_map_out = crate::mapmanip::core::to_grid_map(&dict_map_out); + + for key in grid_map_src.grid.keys() { + let tile_src = grid_map_src.grid.get(&key).unwrap(); + let tile_out = grid_map_out.grid.get(&key).unwrap(); + assert_eq!(tile_src.prefabs, tile_out.prefabs); + } + + assert_eq!(dict_map_src.dictionary.len(), dict_map_out.dictionary.len()) +} + +#[test] +fn mapmanip_configs_parse() { + let foo = vec![crate::mapmanip::MapManipulation::SubmapExtractInsert { + submap_size_x: 1, + submap_size_y: 2, + submap_size_z: 3, + submaps_dmm: "a".to_owned(), + marker_extract: "b".to_owned(), + marker_insert: "c".to_owned(), + submaps_can_repeat: true, + }]; + dbg!(serde_json::to_string(&foo).unwrap()); + + let mapmanip_configs = walkdir::WalkDir::new("../../maps") + .into_iter() + .map(|d| d.unwrap().path().to_owned()) + .filter(|p| p.extension().is_some()) + .filter(|p| p.extension().unwrap() == "jsonc") + .collect_vec(); + assert_ne!(mapmanip_configs.len(), 0); + for config in mapmanip_configs { + let _ = crate::mapmanip::mapmanip_config_parse(&config); + } +} + +#[test] +fn mapmanip_configs_execute() { + // this is only "unsafe" cause that function is `extern "C"` + // it does not do anything actually unsafe + unsafe { all_mapmanip_configs_execute_ffi() } +} diff --git a/rust/src/mapmanip/tools/extract_submap.rs b/rust/src/mapmanip/tools/extract_submap.rs new file mode 100644 index 000000000000..30e7e9806384 --- /dev/null +++ b/rust/src/mapmanip/tools/extract_submap.rs @@ -0,0 +1,37 @@ +use crate::mapmanip::core::GridMap; +use dmmtools::dmm; +use dmmtools::dmm::Coord3; +use eyre::ContextCompat; + +/// Returns part of map of `xtr_size` and at `xtr_coord` from `src_map`. +pub fn extract_submap( + src_map: &GridMap, + xtr_coord: dmm::Coord3, + xtr_size: dmm::Coord3, +) -> eyre::Result { + let mut dst_map = GridMap { + size: xtr_size, + grid: crate::mapmanip::core::TileGrid::new(xtr_size.x, xtr_size.y, xtr_size.z), + }; + + for x in 1..(xtr_size.x + 1) { + for y in 1..(xtr_size.y + 1) { + for z in 1..(xtr_size.z + 1) { + let src_x = xtr_coord.x + x - 1; + let src_y = xtr_coord.y + y - 1; + let src_z = xtr_coord.z + z - 1; + + let tile = src_map + .grid + .get(&Coord3::new(src_x, src_y, src_z)) + .wrap_err(format!( + "cannot extract submap; coords out of bounds; x: {src_x}; y: {src_y}; z: {src_z}" + ))?; + + dst_map.grid.insert(&Coord3::new(x, y, z), tile.clone()); + } + } + } + + Ok(dst_map) +} diff --git a/rust/src/mapmanip/tools/insert_submap.rs b/rust/src/mapmanip/tools/insert_submap.rs new file mode 100644 index 000000000000..e840f9920f33 --- /dev/null +++ b/rust/src/mapmanip/tools/insert_submap.rs @@ -0,0 +1,75 @@ +use crate::mapmanip::GridMap; +use dmmtools::dmm; +use dmmtools::dmm::Coord3; +use eyre::ContextCompat; + +/// Takes `src_map` and puts it at `coord` in `dst_map`. +/// Noop area and turf have special handling: `/area/template_noop` and `/turf/template_noop`. +/// If a `src` tile has noop area, then it uses the mapped in `dst` area instead of replacing it. +/// If a `src` tile has noop turf, then it uses the mapped in `dst` turf instead of replacing it, +/// and additionally also merges `src` objects and mobs with the `dst` mapped in ones. +pub fn insert_submap( + src_map: &GridMap, + coord: dmm::Coord3, + dst_map: &mut GridMap, +) -> eyre::Result<()> { + for x in 1..(src_map.size.x + 1) { + for y in 1..(src_map.size.y + 1) { + for z in 1..(src_map.size.z + 1) { + let coord_src = Coord3::new(x, y, z); + let coord_dst = Coord3::new(coord.x + x - 1, coord.y + y - 1, coord.z + z - 1); + + // get src tile + let mut tile_src = src_map + .grid + .get(&coord_src) + .wrap_err(format!( + "src submap coord out of bounds: {coord_src}; {}; {};", + src_map.size, + src_map.grid.len(), + ))? + .clone(); + + // remove area and turf from src tile + let tile_src_area = tile_src.remove_area().wrap_err("submap tile has no area")?; + let tile_src_turf = tile_src.remove_turf().wrap_err("submap tile has no turf")?; + + let tile_src_area_is_noop = { tile_src_area.path == "/area/template_noop" }; + let tile_src_turf_is_noop = { tile_src_turf.path == "/turf/template_noop" }; + + // get dst tile + let tile_dst = dst_map.grid.get_mut(&coord_dst).wrap_err(format!( + "cannot insert submap tile; coord out of bounds; x: {x}; y: {y};" + ))?; + + // remove area and turf from dst tile + let tile_dst_area = tile_dst.remove_area().wrap_err("map tile has no area")?; + let tile_dst_turf = tile_dst.remove_turf().wrap_err("map tile has no turf")?; + + // get new area + let new_area = if tile_src_area_is_noop { + tile_dst_area + } else { + tile_src_area + }; + + // get new turf, AND, append/replace other atoms into dst tile + let new_turf = if tile_src_turf_is_noop { + tile_dst.prefabs.append(&mut tile_src.prefabs); + tile_dst_turf + } else { + tile_dst.prefabs = tile_src.prefabs; + tile_src_turf + }; + + // push selected new turf and area to dst tile + // do note that in dmm file format + // turf and area have to be the two last elements in a prefab + tile_dst.prefabs.push(new_turf); + tile_dst.prefabs.push(new_area); + } + } + } + + Ok(()) +} diff --git a/rust/src/mapmanip/tools/mod.rs b/rust/src/mapmanip/tools/mod.rs new file mode 100644 index 000000000000..c3688d31986b --- /dev/null +++ b/rust/src/mapmanip/tools/mod.rs @@ -0,0 +1,5 @@ +mod extract_submap; +pub use extract_submap::extract_submap; + +mod insert_submap; +pub use insert_submap::insert_submap; diff --git a/milla/src/api.rs b/rust/src/milla/api.rs similarity index 96% rename from milla/src/api.rs rename to rust/src/milla/api.rs index 53e63d4a17a9..b5393a58859a 100644 --- a/milla/src/api.rs +++ b/rust/src/milla/api.rs @@ -1,9 +1,9 @@ -use crate::constants::*; -use crate::conversion; use crate::logging; -use crate::model::*; -use crate::statics::*; -use crate::tick; +use crate::milla::constants::*; +use crate::milla::conversion; +use crate::milla::model::*; +use crate::milla::statics::*; +use crate::milla::tick; use byondapi::global_call::call_global; use byondapi::map::byond_xyz; use byondapi::prelude::*; @@ -14,7 +14,7 @@ use std::time::Instant; /// BYOND API for ensuring the buffers are usable. #[byondapi::bind] -fn initialize(byond_z: ByondValue) { +fn milla_initialize(byond_z: ByondValue) { logging::setup_panic_handler(); let z = f32::try_from(byond_z)? as i32 - 1; internal_initialize(z)?; @@ -36,7 +36,7 @@ pub(crate) fn internal_initialize(z: i32) -> Result<(), eyre::Error> { /// BYOND API for defining an environment that a tile can be exposed to. #[byondapi::bind] -fn create_environment( +fn milla_create_environment( oxygen: ByondValue, carbon_dioxide: ByondValue, nitrogen: ByondValue, @@ -96,7 +96,7 @@ pub(crate) fn internal_create_environment( /// BYOND API for setting the atmos details of a tile. #[byondapi::bind] -fn set_tile( +fn milla_set_tile( turf: ByondValue, airtight_north: ByondValue, airtight_east: ByondValue, @@ -143,7 +143,7 @@ fn set_tile( /// BYOND API for setting the directions a tile is airtight in. /// Like set_tile, just with a smaller set of fields. #[byondapi::bind] -fn set_tile_airtight( +fn milla_set_tile_airtight( turf: ByondValue, airtight_north: ByondValue, airtight_east: ByondValue, @@ -239,7 +239,7 @@ pub(crate) fn internal_set_tile( }; } } - 3 => tile.mode = AtmosMode::NoDecay, + 3 => tile.mode = AtmosMode::NoDecay, _ => return Err(eyre!("Invalid atmos_mode: {}", value)), } } @@ -278,7 +278,7 @@ pub(crate) fn internal_set_tile( /// BYOND API for fetching the atmos details of a tile. #[byondapi::bind] -fn get_tile(turf: ByondValue, list: ByondValue) { +fn milla_get_tile(turf: ByondValue, list: ByondValue) { logging::setup_panic_handler(); let (x, y, z) = byond_xyz(&turf)?.coordinates(); let tile = internal_get_tile(x as i32 - 1, y as i32 - 1, z as i32 - 1)?; @@ -308,7 +308,7 @@ pub(crate) fn internal_get_tile(x: i32, y: i32, z: i32) -> Result { /// * Turfs that just passed the threshold for showing plasma or sleeping gas. /// * Turfs with strong airflow out. #[byondapi::bind] -fn get_interesting_tiles() { +fn milla_get_interesting_tiles() { logging::setup_panic_handler(); let interesting_tiles = INTERESTING_TILES.lock().unwrap(); let byond_interesting_tiles = interesting_tiles @@ -320,7 +320,7 @@ fn get_interesting_tiles() { /// BYOND API for getting a single random interesting tile. #[byondapi::bind] -fn get_random_interesting_tile() { +fn milla_get_random_interesting_tile() { logging::setup_panic_handler(); let interesting_tiles = INTERESTING_TILES.lock().unwrap(); let length = interesting_tiles.len() as f32; @@ -336,7 +336,7 @@ fn get_random_interesting_tile() { /// BYOND API for capping the superconductivity of a tile. #[byondapi::bind] -fn reduce_superconductivity( +fn milla_reduce_superconductivity( turf: ByondValue, north: ByondValue, east: ByondValue, @@ -404,7 +404,7 @@ pub(crate) fn internal_reduce_superconductivity( /// BYOND API for resetting the superconductivity of a tile. #[byondapi::bind] -fn reset_superconductivity(turf: ByondValue) { +fn milla_reset_superconductivity(turf: ByondValue) { let (x, y, z) = byond_xyz(&turf)?.coordinates(); internal_reset_superconductivity(x as i32 - 1, y as i32 - 1, z as i32 - 1)?; Ok(Default::default()) @@ -436,7 +436,7 @@ pub(crate) fn internal_reset_superconductivity(x: i32, y: i32, z: i32) -> Result /// BYOND API for starting an atmos tick. #[byondapi::bind] -fn spawn_tick_thread() { +fn milla_spawn_tick_thread() { logging::setup_panic_handler(); thread::spawn(|| -> Result<(), eyre::Error> { let now = Instant::now(); @@ -454,7 +454,7 @@ fn spawn_tick_thread() { /// BYOND API for asking how long the prior tick took. #[byondapi::bind] -fn get_tick_time() { +fn milla_get_tick_time() { logging::setup_panic_handler(); Ok(ByondValue::from( TICK_TIME.load(std::sync::atomic::Ordering::Relaxed) as f32, diff --git a/milla/src/constants.rs b/rust/src/milla/constants.rs similarity index 100% rename from milla/src/constants.rs rename to rust/src/milla/constants.rs diff --git a/milla/src/conversion.rs b/rust/src/milla/conversion.rs similarity index 100% rename from milla/src/conversion.rs rename to rust/src/milla/conversion.rs diff --git a/milla/src/lib.rs b/rust/src/milla/mod.rs similarity index 97% rename from milla/src/lib.rs rename to rust/src/milla/mod.rs index 7c2e81ff85d9..d0b90b51541f 100644 --- a/milla/src/lib.rs +++ b/rust/src/milla/mod.rs @@ -6,11 +6,9 @@ //! MILLA takes the majority of atmos out of BYOND and puts it here, in Rust code. //! It stores its own model of the air distribution, and BYOND will call in to view and make //! adjustments, as well as to trigger atmos ticks. - mod api; mod constants; mod conversion; -mod logging; mod model; mod simulate; mod statics; diff --git a/milla/src/model.rs b/rust/src/milla/model.rs similarity index 99% rename from milla/src/model.rs rename to rust/src/milla/model.rs index 8f559783e27f..13044a6d879c 100644 --- a/milla/src/model.rs +++ b/rust/src/milla/model.rs @@ -1,4 +1,4 @@ -use crate::constants::*; +use crate::milla::constants::*; use atomic_float::AtomicF32; use bitflags::bitflags; use byondapi::map::{byond_locatexyz, ByondXYZ}; diff --git a/milla/src/simulate.rs b/rust/src/milla/simulate.rs similarity index 99% rename from milla/src/simulate.rs rename to rust/src/milla/simulate.rs index b8c88dc80aa6..b663b77f7081 100644 --- a/milla/src/simulate.rs +++ b/rust/src/milla/simulate.rs @@ -1,5 +1,5 @@ -use crate::constants::*; -use crate::model::*; +use crate::milla::constants::*; +use crate::milla::model::*; use byondapi::map::ByondXYZ; use eyre::eyre; use scc::Bag; @@ -437,7 +437,7 @@ pub(crate) fn apply_tile_mode( my_inactive_tile.thermal_energy *= 1.0 - SPACE_COOLING_FACTOR; } } - AtmosMode::NoDecay => {} // No special interactions + AtmosMode::NoDecay => {} // No special interactions } Ok(()) } diff --git a/milla/src/statics.rs b/rust/src/milla/statics.rs similarity index 95% rename from milla/src/statics.rs rename to rust/src/milla/statics.rs index 76a0305abfec..4ecdd702c1b8 100644 --- a/milla/src/statics.rs +++ b/rust/src/milla/statics.rs @@ -1,4 +1,4 @@ -use crate::model::*; +use crate::milla::model::*; use std::sync::{atomic::AtomicUsize, Mutex, OnceLock}; /// The buffers that contain the atmos model. diff --git a/milla/src/tick.rs b/rust/src/milla/tick.rs similarity index 99% rename from milla/src/tick.rs rename to rust/src/milla/tick.rs index b8a6991102f7..bc9afafff1f8 100644 --- a/milla/src/tick.rs +++ b/rust/src/milla/tick.rs @@ -1,7 +1,7 @@ -use crate::constants::*; -use crate::model::*; -use crate::simulate; -use crate::statics::*; +use crate::milla::constants::*; +use crate::milla::model::*; +use crate::milla::simulate; +use crate::milla::statics::*; use scc::Bag; use std::sync::RwLock; use std::thread; diff --git a/rustlibs.dll b/rustlibs.dll new file mode 100644 index 000000000000..1aca788e780f Binary files /dev/null and b/rustlibs.dll differ diff --git a/sound/AI/welcome_cerebron.ogg b/sound/AI/welcome_cerebron.ogg new file mode 100644 index 000000000000..1e928c74cfdf Binary files /dev/null and b/sound/AI/welcome_cerebron.ogg differ diff --git a/sound/AI/welcome_cyberiad.ogg b/sound/AI/welcome_cyberiad.ogg new file mode 100644 index 000000000000..a54bb7984c7c Binary files /dev/null and b/sound/AI/welcome_cyberiad.ogg differ diff --git a/sound/AI/welcome_diagoras.ogg b/sound/AI/welcome_diagoras.ogg new file mode 100644 index 000000000000..b86c2dd2e44a Binary files /dev/null and b/sound/AI/welcome_diagoras.ogg differ diff --git a/sound/AI/welcome_farragus.ogg b/sound/AI/welcome_farragus.ogg new file mode 100644 index 000000000000..916790a21a94 Binary files /dev/null and b/sound/AI/welcome_farragus.ogg differ diff --git a/sound/AI/welcome_kerberos.ogg b/sound/AI/welcome_kerberos.ogg new file mode 100644 index 000000000000..0eccf8edc424 Binary files /dev/null and b/sound/AI/welcome_kerberos.ogg differ diff --git a/sound/items/cardboard_tube.ogg b/sound/items/cardboard_tube.ogg new file mode 100644 index 000000000000..e95981029148 Binary files /dev/null and b/sound/items/cardboard_tube.ogg differ diff --git a/sound/surgery/cautery1.ogg b/sound/surgery/cautery1.ogg new file mode 100644 index 000000000000..ac15a5812666 Binary files /dev/null and b/sound/surgery/cautery1.ogg differ diff --git a/sound/surgery/cautery2.ogg b/sound/surgery/cautery2.ogg new file mode 100644 index 000000000000..334c98f6cde4 Binary files /dev/null and b/sound/surgery/cautery2.ogg differ diff --git a/sound/surgery/hemostat1.ogg b/sound/surgery/hemostat1.ogg new file mode 100644 index 000000000000..d68c82620d2a Binary files /dev/null and b/sound/surgery/hemostat1.ogg differ diff --git a/sound/surgery/organ1.ogg b/sound/surgery/organ1.ogg new file mode 100644 index 000000000000..d6cdd6271fe3 Binary files /dev/null and b/sound/surgery/organ1.ogg differ diff --git a/sound/surgery/organ2.ogg b/sound/surgery/organ2.ogg new file mode 100644 index 000000000000..9199c7d1a2db Binary files /dev/null and b/sound/surgery/organ2.ogg differ diff --git a/sound/surgery/retractor1.ogg b/sound/surgery/retractor1.ogg new file mode 100644 index 000000000000..de7c31199e3c Binary files /dev/null and b/sound/surgery/retractor1.ogg differ diff --git a/sound/surgery/retractor2.ogg b/sound/surgery/retractor2.ogg new file mode 100644 index 000000000000..620fafe035d8 Binary files /dev/null and b/sound/surgery/retractor2.ogg differ diff --git a/sound/surgery/saw.ogg b/sound/surgery/saw.ogg new file mode 100644 index 000000000000..8e7a47f0fa06 Binary files /dev/null and b/sound/surgery/saw.ogg differ diff --git a/sound/surgery/scalpel1.ogg b/sound/surgery/scalpel1.ogg new file mode 100644 index 000000000000..6c0fe5dad9fe Binary files /dev/null and b/sound/surgery/scalpel1.ogg differ diff --git a/sound/surgery/scalpel2.ogg b/sound/surgery/scalpel2.ogg new file mode 100644 index 000000000000..497672239393 Binary files /dev/null and b/sound/surgery/scalpel2.ogg differ diff --git a/tgui/package.json b/tgui/package.json index 798232a65ad4..6c4db999354a 100644 --- a/tgui/package.json +++ b/tgui/package.json @@ -47,7 +47,7 @@ "style-loader": "^4.0.0", "terser-webpack-plugin": "^5.3.10", "typescript": "^5.5.3", - "webpack": "^5.93.0", + "webpack": "^5.94.0", "webpack-bundle-analyzer": "^4.10.2", "webpack-cli": "^5.1.4" } diff --git a/tgui/packages/tgui-panel/package.json b/tgui/packages/tgui-panel/package.json index 5dc920a2b430..ad35f7c6a035 100644 --- a/tgui/packages/tgui-panel/package.json +++ b/tgui/packages/tgui-panel/package.json @@ -4,7 +4,7 @@ "version": "4.5.1-paradise", "dependencies": { "common": "workspace:*", - "dompurify": "2.5.0", + "dompurify": "2.5.4", "inferno": "^8.2.3", "tgui": "workspace:*", "tgui-dev-server": "workspace:*", diff --git a/tgui/packages/tgui-panel/styles/main.scss b/tgui/packages/tgui-panel/styles/main.scss index 4c4213b28e56..d84c6ce3af28 100644 --- a/tgui/packages/tgui-panel/styles/main.scss +++ b/tgui/packages/tgui-panel/styles/main.scss @@ -57,4 +57,4 @@ @include meta.load-css('~tgui/styles/layouts/Window.scss'); // Goonchat styles -@include meta.load-css('./tgchat/chat-dark.scss'); +@include meta.load-css('./tgchat/chat-default.scss'); diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-default.scss similarity index 61% rename from tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss rename to tgui/packages/tgui-panel/styles/tgchat/chat-default.scss index 110b24534b7b..2b755c700cf6 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-default.scss @@ -1,8 +1,4 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - +// MARK: GENERAL STUFF em { font-style: normal; font-weight: bold; @@ -23,168 +19,86 @@ img.icon { vertical-align: bottom; } -.emoji16x16 { - vertical-align: middle; -} - a { color: #397ea5; } -a.popt { - text-decoration: none; -} - -/* POPUPS */ - -.popup { - position: fixed; - top: 50%; - left: 50%; - background: #ddd; -} - -.popup .close { - position: absolute; - background: #aaa; - top: 0; - right: 0; - color: #333; - text-decoration: none; - z-index: 2; - padding: 0 10px; - height: 30px; - line-height: 30px; -} - -.popup .close:hover { - background: #999; -} - -.popup .head { - background: #999; - color: #ddd; - padding: 0 10px; - height: 30px; - line-height: 30px; - text-transform: uppercase; - font-size: 0.9em; +em { + font-style: normal; font-weight: bold; - border-bottom: 2px solid green; } -.popup input { - border: 1px solid #999; - background: #fff; - margin: 0; - padding: 5px; - outline: none; - color: #333; +h1, +h2, +h3, +h4, +h5, +h6 { + color: #a4bad6; + font-family: Georgia, Verdana, sans-serif; } -.popup input[type='text']:hover, -.popup input[type='text']:active, -.popup input[type='text']:focus { - border-color: green; +h1.alert, +h2.alert { + color: #a4bad6; } -.popup input[type='submit'] { - padding: 5px 10px; - background: #999; - color: #ddd; - text-transform: uppercase; - font-size: 0.9em; - font-weight: bold; +.emoji { + max-height: 16px; + max-width: 16px; } -.popup input[type='submit']:hover, -.popup input[type='submit']:focus, -.popup input[type='submit']:active { - background: #aaa; - cursor: pointer; +.emoji16x16 { + vertical-align: middle; } -.changeFont { - padding: 10px; +.italic, +.italics, +.emote { + font-style: italic; } -.changeFont a { - display: block; - text-decoration: none; - padding: 3px; - color: #333; +.bold { + font-weight: bold; } -.changeFont a:hover { - background: #ccc; +.bolditalics { + font-style: italic; + font-weight: bold; } -.highlightPopup { - padding: 10px; +.center { text-align: center; } -.highlightPopup input[type='text'] { - display: block; - width: 215px; - text-align: left; - margin-top: 5px; -} - -.highlightPopup input.highlightColor { - background-color: #ffff00; -} - -.highlightPopup input.highlightTermSubmit { - margin-top: 5px; -} - -/* ADMIN CONTEXT MENU */ - -.contextMenu { - background-color: #ddd; - position: fixed; - margin: 2px; - width: 150px; +.big { + font-size: 150%; } -.contextMenu a { - display: block; - padding: 2px 5px; - text-decoration: none; - color: #333; +.reallybig { + font-size: 175%; } -.contextMenu a:hover { - background-color: #ccc; +.sans { + font-family: 'Comic Sans MS', cursive, sans-serif; } -/* ADMIN FILTER MESSAGES MENU */ - -.filterMessages { - padding: 5px; +.wingdings { + font-family: Wingdings, Webdings; } -.filterMessages div { - padding: 2px 0; +.robot { + font-family: 'OCR-A', monospace; + font-size: 1.15em; + font-weight: bold; } -.icon-stack { - height: 1em; - line-height: 1em; - width: 1em; - vertical-align: middle; - margin-top: -2px; +.hidden { + display: none; + visibility: hidden; } -/***************************************** -* -* OUTPUT ACTUALLY RELATED TO MESSAGES -* -******************************************/ - -/* MOTD */ - +// MARK: MOTD .motd { color: #a4bad6; font-family: Verdana, sans-serif; @@ -208,38 +122,37 @@ a.popt { color: #a4bad6; } -/* ADD HERE FOR ITALIC */ +// MARK: MEMO +.memo { + color: #638500; + text-align: center; +} -.italic, -.italics, -.emote { - font-style: italic; +.memoedit { + text-align: center; + font-size: 75%; } -/* OUTPUT COLORS */ +// MARK: General colors +.ooc { + font-weight: bold; +} -.highlight { - background: yellow; +.looc { + color: #6699cc; + font-weight: bold; } -h1, -h2, -h3, -h4, -h5, -h6 { - color: #a4bad6; - font-family: Georgia, Verdana, sans-serif; +.discordpm { + color: #6685f5; } -h1.alert, -h2.alert { - color: #a4bad6; +.debug { + color: #6d2f83; } -em { - font-style: normal; - font-weight: bold; +.deadsay { + color: #e2c1ff; } .darkmblue { @@ -250,27 +163,27 @@ em { font-weight: bold; } -.ooc { +.name { font-weight: bold; } -.looc { - color: #6699cc; +.yell { font-weight: bold; } -.adminobserverooc { - color: #0099cc; +// MARK: Admin/Mentor +.mentorhelp { + color: #0077bb; font-weight: bold; } -.adminooc { - color: #b82e00; +.mentor_channel { + color: #775bff; font-weight: bold; } -.adminobserver { - color: #996600; +.mentor_channel_admin { + color: #a35cff; font-weight: bold; } @@ -279,50 +192,44 @@ em { font-weight: bold; } -.adminsay { - color: #9611d4; - font-weight: bold; -} - -.mentorhelp { - color: #0077bb; - font-weight: bold; -} - .adminhelp { color: #aa0000; font-weight: bold; } -.playerreply { - color: #8800bb; +.adminticket { + color: #3daf21; font-weight: bold; } -.pmsend { - color: #6685f5; -} - -.debug { - color: #6d2f83; +.adminticketalt { + color: #ccb847; + font-weight: bold; } -.name { +.admin_channel { + color: #03fc9d; font-weight: bold; } -.yell { +.all_admin_ping { + color: #12a5f4; font-weight: bold; + font-size: 120%; + text-align: center; } -.siliconsay { - font-family: 'Courier New', Courier, monospace; +.dev_channel { + color: #61b413; + font-weight: bold; } -.deadsay { - color: #e2c1ff; +.dev_channel_admin { + color: #9ef14f; + font-weight: bold; } +// MARK: Radio .radio { color: #20b142; } @@ -343,10 +250,6 @@ em { color: #998599; } -.resteamradio { - color: #18bc46; -} - .airadio { color: #ff5ed7; } @@ -383,51 +286,7 @@ em { color: #b84f92; } -.admin_channel { - color: #03fc9d; - font-weight: bold; -} - -.all_admin_ping { - color: #12a5f4; - font-weight: bold; - font-size: 120%; - text-align: center; -} - -.mentor_channel { - color: #775bff; - font-weight: bold; -} - -.mentor_channel_admin { - color: #a35cff; - font-weight: bold; -} - -.dev_channel { - color: #61b413; - font-weight: bold; -} - -.dev_channel_admin { - color: #9ef14f; - font-weight: bold; -} - -.djradio { - color: #996600; -} - -.binaryradio { - color: #1b00fb; - font-family: 'Courier New', Courier, monospace; -} - -.mommiradio { - color: #6685f5; -} - +// MARK: Alerts .alert { color: #d82020; } @@ -443,31 +302,6 @@ h2.alert { font-weight: bold; } -.emote { - font-style: italic; -} - -.selecteddna { - color: #a4bad6; - background-color: #001b1b; -} - -.attack { - color: #ff0000; -} - -.moderate { - color: #cc0000; -} - -.disarm { - color: #990000; -} - -.passive { - color: #660000; -} - .warning { color: #c51e1e; font-style: italic; @@ -484,16 +318,28 @@ h2.alert { font-weight: bold; } +.biggerdanger { + color: #ff0000; + font-weight: bold; + font-size: 150%; +} + .userdanger { color: #c51e1e; font-weight: bold; font-size: 120%; } -.biggerdanger { +.attack { color: #ff0000; - font-weight: bold; - font-size: 150%; +} + +.disarm { + color: #990000; +} + +.moderate { + color: #cc0000; } .notice { @@ -510,23 +356,46 @@ h2.alert { font-style: italic; } -.green { - color: #03bb39; +// MARK: Announcements +.announcement h1, +.announcement h2 { + color: #a4bad6; + margin: 8pt 0; + line-height: 1.2; } -.pr_announce { - color: #c51e1e; - font-weight: bold; +.announcement p { + color: #d82020; + line-height: 1.3; } -.boldannounceic { - color: #c51e1e; - font-weight: bold; +.announcement.minor h1 { + font-size: 180%; } -.boldannounceooc { - color: #c51e1e; - font-weight: bold; +.announcement.minor h2 { + font-size: 170%; +} + +.announcement.sec h1 { + color: #f00; + font-size: 180%; + font-family: Verdana, sans-serif; +} + +.boldannounceic { + color: #c51e1e; + font-weight: bold; +} + +.boldannounceooc { + color: #c51e1e; + font-weight: bold; +} + +.pr_announce { + color: #c51e1e; + font-weight: bold; } .greenannounce { @@ -534,6 +403,7 @@ h2.alert { font-weight: bold; } +// MARK: Antagonist .alien { color: #c433c4; } @@ -588,126 +458,40 @@ h2.alert { font-style: italic; } -.medal { - font-weight: bold; -} - -/* /vg/ */ .blob { - color: #006221; - font-weight: bold; + color: #ee4000; font-style: italic; } -.confirm { - color: #00af3b; -} - -.rose { - color: #ff5050; -} - -.sans { - font-family: 'Comic Sans MS', cursive, sans-serif; -} - -.wingdings { - font-family: Wingdings, Webdings; +.revennotice { + color: #6685f5; } -.robot { - font-family: 'OCR-A', monospace; - font-size: 1.15em; +.revenbignotice { + color: #6685f5; font-weight: bold; + font-size: 120%; } -.ancient { - color: #008b8b; - font-style: italic; -} - -.newscaster { - color: #cc0000; -} - -.mod { - color: #735638; - font-weight: bold; +.revenminor { + color: #823abb; } -.modooc { - color: #184880; - font-weight: bold; +.revenwarning { + color: #760fbb; + font-style: italic; } -.adminmod { - color: #f0aa14; +.revendanger { + color: #760fbb; font-weight: bold; -} - -.tajaran { - color: #803b56; -} - -.skrell { - color: #00ced1; -} - -.solcom { - color: #8282fb; -} - -.com_srus { - color: #7c4848; -} - -.soghun { - color: #228b22; + font-size: 120%; } .changeling { color: #00b4de; } -.vox { - color: #aa00aa; -} - -.diona { - color: #804000; - font-weight: bold; -} - -.trinary { - color: #727272; -} - -.kidan { - color: #c64c05; -} - -.slime { - color: #0077aa; -} - -.drask { - color: #a3d4eb; - font-family: 'Arial Black'; -} - -.moth { - color: #869b29; - font-family: 'Copperplate'; -} - -.clown { - color: #ff0000; -} - -.vulpkanin { - color: #b97a57; -} - .abductor { color: #800080; font-style: italic; @@ -720,14 +504,6 @@ h2.alert { font-style: italic; } -.rough { - font-family: 'Trebuchet MS', cursive, sans-serif; -} - -.say_quote { - font-family: Georgia, Verdana, sans-serif; -} - .cult { color: #800080; font-weight: bold; @@ -762,6 +538,12 @@ h2.alert { font-size: 200%; } +.his_grace { + color: #15d512; + font-family: 'Courier New', cursive, sans-serif; + font-style: italic; +} + .zombie { color: #7c4848; } @@ -772,234 +554,151 @@ h2.alert { font-size: 120%; } -.interface { - color: #9031c4; -} - -.big { - font-size: 150%; -} - -.reallybig { +// MARK: MEGAFAUNA +.colossus { + color: #7f282a; font-size: 175%; } -.greentext { - color: #00ff00; - font-size: 150%; -} - -.redtext { - color: #ff0000; - font-size: 150%; -} - -.bold { +.hierophant { + color: #660099; font-weight: bold; -} - -.his_grace { - color: #15d512; - font-family: 'Courier New', cursive, sans-serif; font-style: italic; } -.center { - text-align: center; -} - -.red { - color: #ff0000; -} - -.purple { - color: #9031c4; -} - -.skeleton { - color: #c8c8c8; - font-weight: bold; +.hierophant_warning { + color: #660099; font-style: italic; } -.gutter { - color: #7092be; - font-family: 'Trebuchet MS', cursive, sans-serif; -} - -.orange { - color: #ffa500; +// MARK: Languages +.tajaran { + color: #803b56; } -.orangei { - color: #ffa500; - font-style: italic; +.skrell { + color: #00ced1; } -.orangeb { - color: #ffa500; - font-weight: bold; +.solcom { + color: #8282fb; } -.resonate { - color: #298f85; +.com_srus { + color: #7c4848; } -.healthscan_oxy { - color: #5cc9ff; +.zombie { + color: #ff0000; } -.revennotice { - color: #6685f5; +.soghun { + color: #228b22; } -.revenboldnotice { - color: #6685f5; - font-weight: bold; +.vox { + color: #aa00aa; } -.revenbignotice { - color: #6685f5; +.diona { + color: #804000; font-weight: bold; - font-size: 120%; -} - -.revenminor { - color: #823abb; } -.revenwarning { - color: #760fbb; - font-style: italic; +.trinary { + color: #727272; } -.revendanger { - color: #760fbb; - font-weight: bold; - font-size: 120%; +.kidan { + color: #c64c05; } -.specialnotice { - color: #4a6f82; - font-weight: bold; - font-size: 120%; +.slime { + color: #0077aa; } -/* /vg/ */ -.good { - color: green; +.drask { + color: #a3d4eb; + font-family: 'Arial Black'; } -.average { - color: #ff8000; +.moth { + color: #869b29; + font-family: 'Copperplate'; } -.bad { +.clown { color: #ff0000; } -/* /vg/ Saycode Rewrite */ -.italics, -.talkinto { - font-style: italic; +.vulpkanin { + color: #b97a57; } -.whisper { - font-style: italic; - color: #cccccc; +.gutter { + color: #7092be; + font-family: 'Trebuchet MS', cursive, sans-serif; } -/* Recruiting stuff */ -.recruit { - color: #5c00e6; - font-weight: bold; - font-style: italic; +.tradeband { + font-family: Georgia, Verdana, sans-serif; } -.memo { - color: #638500; - text-align: center; +// MARK: Other colors +.rose { + color: #ff5050; } -.memoedit { - text-align: center; - font-size: 75%; +.interface { + color: #9031c4; } -.connectionClosed, -.fatalError { - background: red; - color: white; - padding: 5px; +.greentext { + color: #00ff00; + font-size: 150%; } -.connectionClosed.restored { - background: green; +.redtext { + color: #ff0000; + font-size: 150%; } -.internal.boldnshit { - color: #6685f5; - font-weight: bold; +.red { + color: #ff0000; } -.rebooting { - background: #2979af; - color: white; - padding: 5px; +.green { + color: #03bb39; } -.rebooting a { - color: white !important; - text-decoration-color: white !important; +.purple { + color: #9031c4; } -/* HELPER CLASSES */ -.text-normal { - font-weight: normal; - font-style: normal; +.orange { + color: #ffa500; } -.hidden { - display: none; - visibility: hidden; +.resonate { + color: #298f85; } -/* MEGAFAUNA */ -.colossus { - color: #7f282a; - font-size: 175%; +.healthscan_oxy { + color: #5cc9ff; } -.hierophant { - color: #660099; +.specialnotice { + color: #4a6f82; font-weight: bold; - font-style: italic; + font-size: 120%; } -.hierophant_warning { - color: #660099; +.whisper { font-style: italic; + color: #cccccc; } -/* EMOJI STUFF */ -.emoji { - max-height: 16px; - max-width: 16px; -} - -/* ADMIN TICKETS */ - -.adminticket { - color: #3daf21; - font-weight: bold; -} - -.adminticketalt { - color: #ccb847; - font-weight: bold; -} - -/* Syndicate codewords */ +// MARK: Syndicate codewords span.body .codephrases { color: #5555ff; } @@ -1008,95 +707,66 @@ span.body .coderesponses { color: #ff3333; } -.announcement h1, -.announcement h2 { - color: #a4bad6; - margin: 8pt 0; - line-height: 1.2; +// MARK: Gases +.oxygen { + color: #449dff; } -.announcement p { - color: #d82020; - line-height: 1.3; +.nitrogen { + color: #f94541; } -.announcement.minor h1 { - font-size: 180%; +.carbon_dioxide { + color: #cccccc; } -.announcement.minor h2 { - font-size: 170%; +.plasma { + color: #eb6b00; } -.announcement.sec h1 { - color: #f00; - font-size: 180%; - font-family: Verdana, sans-serif; +.sleeping_agent { + color: #f28b89; } -.bolditalics { - font-style: italic; - font-weight: bold; +.agent_b { + color: teal; } +// MARK: Boxed messages .boxed_message { - background: #1b1c1e; - border: 1px solid #a3b9d9; - margin: 0.5em; + background: hsl(220, 10%, 10%); + border: 1px solid hsla(220, 40%, 75%, 0.25); + border-width: 1em * calc(1px / 12px) 1em * calc(5px / 12px); + margin: 0.5em 0.25em; padding: 0.5em 0.75em; + border-radius: 0.5em; text-align: center; } -.boxed_message.left_align_text { - text-align: left; -} - .boxed_message.red_border { - background: #1e1b1b; - border-color: #aa0000; + background: hsl(0, 20%, 10%); + border-color: hsla(0, 100%, 50%, 0.5); } .boxed_message.green_border { - background: #1b1e1c; - border-color: #00ff00; + background: hsl(140, 20%, 10%); + border-color: hsla(120, 100%, 50%, 0.5); } .boxed_message.purple_border { - background: #1d1c1f; - border-color: #8000ff; + background: hsl(260, 25%, 12.5%); + border-color: hsla(260, 100%, 75%, 0.5); } .boxed_message.notice_border { - background: #1b1c1e; - border-color: #6685f5; + background: hsl(220, 20%, 10%); + border-color: hsla(225, 90%, 65%, 0.5); } .boxed_message.thick_border { - border-width: thick; + border-width: 0.5em; } -/* GASES */ - -.oxygen { - color: #449dff; -} - -.nitrogen { - color: #f94541; -} - -.carbon_dioxide { - color: #cccccc; -} - -.plasma { - color: #eb6b00; -} - -.sleeping_agent { - color: #f28b89; -} - -.agent_b { - color: teal; +.boxed_message.left_align_text { + text-align: left; } diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss index 7e366a5636ab..9fe1abdec63a 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss @@ -1,208 +1,25 @@ -/** - * Copyright (c) 2020 Aleksej Komarov - * SPDX-License-Identifier: MIT - */ - -html, -body { - padding: 0; - margin: 0; - height: 100%; - color: #000000; -} - -body { - background: #fff; - font-family: Verdana, sans-serif; - font-size: 13px; - line-height: 1.2; - overflow-x: hidden; - overflow-y: scroll; - word-wrap: break-word; -} - -em { - font-style: normal; - font-weight: bold; -} - -img { - margin: 0; - padding: 0; - line-height: 1; - -ms-interpolation-mode: nearest-neighbor; // TODO: Remove with 516 - image-rendering: pixelated; -} - -img.icon { - height: 1em; - min-height: 16px; - width: auto; - vertical-align: bottom; -} - +// MARK: GENERAL STUFF a { color: #0000ff; } -a.popt { - text-decoration: none; -} - -/* POPUPS */ - -.popup { - position: fixed; - top: 50%; - left: 50%; - background: #ddd; -} - -.popup .close { - position: absolute; - background: #aaa; - top: 0; - right: 0; - color: #333; - text-decoration: none; - z-index: 2; - padding: 0 10px; - height: 30px; - line-height: 30px; -} - -.popup .close:hover { - background: #999; -} - -.popup .head { - background: #999; - color: #ddd; - padding: 0 10px; - height: 30px; - line-height: 30px; - text-transform: uppercase; - font-size: 0.9em; - font-weight: bold; - border-bottom: 2px solid green; -} - -.popup input { - border: 1px solid #999; - background: #fff; - margin: 0; - padding: 5px; - outline: none; - color: #333; -} - -.popup input[type='text']:hover, -.popup input[type='text']:active, -.popup input[type='text']:focus { - border-color: green; -} - -.popup input[type='submit'] { - padding: 5px 10px; - background: #999; - color: #ddd; - text-transform: uppercase; - font-size: 0.9em; - font-weight: bold; -} - -.popup input[type='submit']:hover, -.popup input[type='submit']:focus, -.popup input[type='submit']:active { - background: #aaa; - cursor: pointer; -} - -.changeFont { - padding: 10px; -} - -.changeFont a { - display: block; - text-decoration: none; - padding: 3px; - color: #333; -} - -.changeFont a:hover { - background: #ccc; -} - -.highlightPopup { - padding: 10px; - text-align: center; -} - -.highlightPopup input[type='text'] { - display: block; - width: 215px; - text-align: left; - margin-top: 5px; -} - -.highlightPopup input.highlightColor { - background-color: #ffff00; -} - -.highlightPopup input.highlightTermSubmit { - margin-top: 5px; -} - -/* ADMIN CONTEXT MENU */ - -.contextMenu { - background-color: #ddd; - position: fixed; - margin: 2px; - width: 150px; -} - -.contextMenu a { - display: block; - padding: 2px 5px; - text-decoration: none; - color: #333; -} - -.contextMenu a:hover { - background-color: #ccc; -} - -/* ADMIN FILTER MESSAGES MENU */ - -.filterMessages { - padding: 5px; -} - -.filterMessages div { - padding: 2px 0; +h1, +h2, +h3, +h4, +h5, +h6 { + color: #0000ff; } -.icon-stack { - height: 1em; - line-height: 1em; - width: 1em; - vertical-align: middle; - margin-top: -2px; +h1.alert, +h2.alert { + color: #000000; } -/***************************************** -* -* OUTPUT ACTUALLY RELATED TO MESSAGES -* -******************************************/ - -/* MOTD */ - +// MARK: MOTD .motd { color: #638500; - font-family: Verdana, sans-serif; - white-space: normal; } .motd h1, @@ -212,7 +29,6 @@ a.popt { .motd h5, .motd h6 { color: #638500; - text-decoration: underline; } .motd a, @@ -222,121 +38,69 @@ a.popt { color: #638500; } -/* ADD HERE FOR ITALIC */ - -.italic, -.italics, -.emote { - font-style: italic; -} - -/* OUTPUT COLORS */ - -.highlight { - background: yellow; +// MARK: General colors +.looc { + color: #6699cc; } -h1, -h2, -h3, -h4, -h5, -h6 { +.discordpm { color: #0000ff; - font-family: Georgia, Verdana, sans-serif; } -h1.alert, -h2.alert { - color: #000000; +.debug { + color: #6d2f83; } -em { - font-style: normal; - font-weight: bold; +.deadsay { + color: #5c00e6; } .darkmblue { color: #0000ff; } -.prefix { - font-weight: bold; -} - -.ooc { - font-weight: bold; -} - -.looc { - color: #6699cc; - font-weight: bold; -} - -.adminobserverooc { - color: #0099cc; - font-weight: bold; -} - -.adminooc { - color: #b82e00; - font-weight: bold; -} - -.adminobserver { - color: #996600; - font-weight: bold; -} - -.admin { - color: #386aff; - font-weight: bold; +// MARK: Admin/Mentor +.mentorhelp { + color: #0077bb; } -.adminsay { - color: #9611d4; - font-weight: bold; +.mentor_channel { + color: #775bff; } -.mentorhelp { - color: #0077bb; - font-weight: bold; +.mentor_channel_admin { + color: #a35cff; } .adminhelp { color: #aa0000; - font-weight: bold; -} - -.playerreply { - color: #8800bb; - font-weight: bold; } -.pmsend { - color: #0000ff; +.adminticket { + color: #3e7336; } -.debug { - color: #6d2f83; +.adminticketalt { + color: #014c8a; } -.name { - font-weight: bold; +.admin_channel { + color: #9a04d1; } -.yell { - font-weight: bold; +.all_admin_ping { + color: #12a5f4; } -.siliconsay { - font-family: 'Courier New', Courier, monospace; +.dev_channel { + color: #126719; } -.deadsay { - color: #5c00e6; +.dev_channel_admin { + color: #26a419; } +// MARK: Radio .radio { color: #408010; } @@ -357,10 +121,6 @@ em { color: #686868; } -.resteamradio { - color: #18bc46; -} - .airadio { color: #ff00ff; } @@ -397,51 +157,7 @@ em { color: #e3027a; } -.admin_channel { - color: #9a04d1; - font-weight: bold; -} - -.all_admin_ping { - color: #12a5f4; - font-weight: bold; - font-size: 120%; - text-align: center; -} - -.mentor_channel { - color: #775bff; - font-weight: bold; -} - -.mentor_channel_admin { - color: #a35cff; - font-weight: bold; -} - -.dev_channel { - color: #126719; - font-weight: bold; -} - -.dev_channel_admin { - color: #26a419; - font-weight: bold; -} - -.djradio { - color: #663300; -} - -.binaryradio { - color: #0b0050; - font-family: 'Courier New', Courier, monospace; -} - -.mommiradio { - color: navy; -} - +// MARK: Alerts .alert { color: #ff0000; } @@ -453,61 +169,22 @@ h2.alert { .ghostalert { color: #5c00e6; - font-style: italic; - font-weight: bold; -} - -.emote { - font-style: italic; -} - -.selecteddna { - color: #ffffff; - background-color: #001b1b; -} - -.attack { - color: #ff0000; -} - -.moderate { - color: #cc0000; -} - -.disarm { - color: #990000; -} - -.passive { - color: #660000; } .warning { color: #ff0000; - font-style: italic; } .boldwarning { color: #ff0000; - font-style: italic; - font-weight: bold; } .danger { color: #ff0000; - font-weight: bold; } .userdanger { color: #ff0000; - font-weight: bold; - font-size: 120%; -} - -.biggerdanger { - color: #ff0000; - font-weight: bold; - font-size: 150%; } .notice { @@ -516,51 +193,39 @@ h2.alert { .boldnotice { color: #000099; - font-weight: bold; } -.suicide { - color: #ff5050; - font-style: italic; -} - -.green { - color: #03bb39; +// MARK: Announcements +.announcement h1, +.announcement h2 { + color: #000; } -.pr_announce { - color: #228b22; - font-weight: bold; +.announcement.sec h1 { + color: #f00; } .boldannounceic { color: #ff0000; - font-weight: bold; } .boldannounceooc { color: #ff0000; - font-weight: bold; +} + +.pr_announce { + color: #228b22; } .greenannounce { color: #00ff00; - font-weight: bold; } +// MARK: Antagonist .alien { color: #543354; } -.noticealien { - color: #00c000; -} - -.alertalien { - color: #00c000; - font-weight: bold; -} - .terrorspider { color: #320e32; } @@ -569,454 +234,67 @@ h2.alert { color: #6a2148; } -.chaosverygood { - color: #19e0c0; - font-weight: bold; - font-size: 120%; -} - -.chaosgood { - color: #19e0c0; - font-weight: bold; -} - -.chaosneutral { - color: #479ac0; - font-weight: bold; -} - -.chaosbad { - color: #9047c0; - font-weight: bold; -} - -.chaosverybad { - color: #9047c0; - font-weight: bold; - font-size: 120%; -} - -.sinister { - color: #800080; - font-weight: bold; - font-style: italic; -} -/* /vg/ */ -.blob { - color: #006221; - font-weight: bold; - font-style: italic; -} - -.confirm { - color: #00af3b; -} - -.rose { - color: #ff5050; -} - -.sans { - font-family: 'Comic Sans MS', cursive, sans-serif; -} - -.wingdings { - font-family: Wingdings, Webdings; -} - -.robot { - font-family: 'OCR-A', monospace; - font-size: 1.15em; - font-weight: bold; -} - -.ancient { - color: #008b8b; - font-style: italic; -} - -.newscaster { - color: #800000; -} - -.mod { - color: #735638; - font-weight: bold; -} - -.modooc { - color: #184880; - font-weight: bold; -} - -.adminmod { - color: #402a14; - font-weight: bold; -} - -.tajaran { - color: #803b56; -} - -.skrell { - color: #00ced1; -} - -.solcom { - color: #22228b; -} - -.com_srus { - color: #7c4848; +.revennotice { + color: #1d2953; } -.soghun { - color: #228b22; +.revenbignotice { + color: #1d2953; } .changeling { color: #800080; } -.vox { - color: #aa00aa; -} - -.diona { - color: #804000; - font-weight: bold; -} - -.trinary { - color: #727272; -} - -.kidan { - color: #664205; -} - -.slime { - color: #0077aa; -} - -.drask { - color: #a3d4eb; - font-family: 'Arial Black'; -} - -.moth { - color: #869b29; - font-family: 'Copperplate'; -} - -.clown { - color: #ff0000; -} - -.vulpkanin { - color: #b97a57; -} - -.abductor { - color: #800080; - font-style: italic; -} - -.mind_control { - color: #a00d6f; - font-size: 3; - font-weight: bold; - font-style: italic; -} - -.rough { - font-family: 'Trebuchet MS', cursive, sans-serif; -} - -.say_quote { - font-family: Georgia, Verdana, sans-serif; -} - -.cult { - color: #800080; - font-weight: bold; - font-style: italic; -} - .cultspeech { color: #7f0000; - font-style: italic; } .cultitalic { color: #960000; - font-style: italic; } .cultlarge { color: #960000; - font-weight: bold; - font-size: 120%; } .narsie { color: #960000; - font-weight: bold; - font-size: 300%; } .narsiesmall { color: #960000; - font-weight: bold; - font-size: 200%; } -.zombie { - color: #7c4848; -} - -.zombielarge { - color: #7c4848; - font-weight: bold; - font-size: 120%; +// MARK: Other colors +.rose { + color: #ff5050; } .interface { color: #330033; } -.big { - font-size: 150%; -} - -.reallybig { - font-size: 175%; -} - -.greentext { - color: #00ff00; - font-size: 150%; -} - -.redtext { - color: #ff0000; - font-size: 150%; -} - -.bold { - font-weight: bold; -} - -.his_grace { - color: #15d512; - font-family: 'Courier New', cursive, sans-serif; - font-style: italic; -} - -.center { - text-align: center; -} - -.red { - color: #ff0000; -} - .purple { color: #5e2d79; } -.skeleton { - color: #585858; - font-weight: bold; - font-style: italic; -} - -.gutter { - color: #7092be; - font-family: 'Trebuchet MS', cursive, sans-serif; -} - .orange { color: #ffa500; } -.orangei { - color: #ffa500; - font-style: italic; -} - -.orangeb { - color: #ffa500; - font-weight: bold; -} - -.resonate { - color: #298f85; -} - .healthscan_oxy { color: #0074bd; } -.revennotice { - color: #1d2953; -} - -.revenboldnotice { - color: #1d2953; - font-weight: bold; -} - -.revenbignotice { - color: #1d2953; - font-weight: bold; - font-size: 120%; -} - -.revenminor { - color: #823abb; -} - -.revenwarning { - color: #760fbb; - font-style: italic; -} - -.revendanger { - color: #760fbb; - font-weight: bold; - font-size: 120%; -} - -.specialnoticebold { - color: #36525e; - font-weight: bold; - font-size: 120%; -} - .specialnotice { color: #36525e; - font-size: 120%; -} - -.medal { - font-weight: bold; -} - -/* /vg/ */ -.good { - color: green; -} - -.average { - color: #ff8000; -} - -.bad { - color: #ff0000; -} - -/* /vg/ Saycode Rewrite */ -.italics, -.talkinto { - font-style: italic; } .whisper { - font-style: italic; color: #333333; } -/* Recruiting stuff */ -.recruit { - color: #5c00e6; - font-weight: bold; - font-style: italic; -} - -.memo { - color: #638500; - text-align: center; -} - -.memoedit { - text-align: center; - font-size: 75%; -} - -.connectionClosed, -.fatalError { - background: red; - color: white; - padding: 5px; -} - -.connectionClosed.restored { - background: green; -} - -.internal.boldnshit { - color: blue; - font-weight: bold; -} - -.rebooting { - background: #2979af; - color: white; - padding: 5px; -} - -.rebooting a { - color: white !important; - text-decoration-color: white !important; -} - -/* HELPER CLASSES */ -.text-normal { - font-weight: normal; - font-style: normal; -} - -.hidden { - display: none; - visibility: hidden; -} - -/* MEGAFAUNA */ -.colossus { - color: #7f282a; - font-size: 175%; -} - -.hierophant { - color: #660099; - font-weight: bold; - font-style: italic; -} - -.hierophant_warning { - color: #660099; - font-style: italic; -} - -/* EMOJI STUFF */ -.emoji { - max-height: 16px; - max-width: 16px; -} - -/* ADMIN TICKETS */ - -.adminticket { - color: #3e7336; - font-weight: bold; -} - -.adminticketalt { - color: #014c8a; - font-weight: bold; -} - /* Syndicate codewords */ span.body .codephrases { color: #0000ff; @@ -1026,95 +304,53 @@ span.body .coderesponses { color: #ff0000; } -.announcement h1, -.announcement h2 { - color: #000; - margin: 8pt 0; - line-height: 1.2; +// MARK: GASES +.oxygen { + color: #006adb; } -.announcement p { - color: #d82020; - line-height: 1.3; +.nitrogen { + color: #d00a06; } -.announcement.minor h1 { - font-size: 180%; +.carbon_dioxide { + color: #1f1f1f; } -.announcement.minor h2 { - font-size: 170%; +.plasma { + color: #853c00; } -.announcement.sec h1 { - color: #f00; - font-size: 180%; - font-family: Verdana, sans-serif; +.sleeping_agent { + color: #e82f2c; } -.bolditalics { - font-style: italic; - font-weight: bold; +.agent_b { + color: #004d4d; } +// MARK: Boxed messages .boxed_message { - background: #f7fcff; - border: 1px solid #111a26; - margin: 0.5em; - padding: 0.5em 0.75em; - text-align: center; -} - -.boxed_message.left_align_text { - text-align: left; + background: hsl(220, 100%, 97.5%); + border-color: hsla(220, 75%, 25%, 0.5); } .boxed_message.red_border { - background: #fff7f7; - border-color: #aa0000; + background: hsl(0, 100%, 97.5%); + border-color: hsla(0, 100%, 50%, 0.5); } .boxed_message.green_border { - background: #f7fff7; - border-color: #00ff00; + background: hsl(140, 100%, 97.5%); + border-color: hsl(120, 100%, 33%, 0.5); } .boxed_message.purple_border { - background: #fdf7ff; - border-color: #aa00ff; + background: hsl(260, 100%, 97.5%); + border-color: hsla(260, 100%, 50%, 0.5); } .boxed_message.notice_border { - background: #f7fdff; - border-color: #0000bf; -} - -.boxed_message.thick_border { - border-width: thick; -} - -/* GASES */ - -.oxygen { - color: #006adb; -} - -.nitrogen { - color: #d00a06; -} - -.carbon_dioxide { - color: #1f1f1f; -} - -.plasma { - color: #853c00; -} - -.sleeping_agent { - color: #e82f2c; -} - -.agent_b { - color: #004d4d; + background: hsl(220, 100%, 97.5%); + border-color: hsla(225, 100%, 50%, 0.5); } diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-ntos.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-ntos.scss index b5fdb106e59a..7841c962d5b2 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-ntos.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-ntos.scss @@ -1,35 +1,19 @@ .boxed_message { - background: #1c242e; - border: 1px solid #a3b9d9; - margin: 0.5em; - padding: 0.5em 0.75em; - text-align: center; -} - -.boxed_message.left_align_text { - text-align: left; + background: hsl(220, 25%, 15%); } .boxed_message.red_border { - background: #2e1c1c; - border-color: #aa0000; + background: hsl(0, 25%, 15%); } .boxed_message.green_border { - background: #1c2e22; - border-color: #00ff00; + background: hsl(140, 25%, 15%); } .boxed_message.purple_border { - background: #221c2e; - border-color: #8000ff; + background: hsl(260, 25%, 15%); } .boxed_message.notice_border { - background: #1f2633; - border-color: #6685f5; -} - -.boxed_message.thick_border { - border-width: thick; + background: hsl(220, 35%, 15%); } diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-paradise.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-paradise.scss index a33d3ef60ecb..45cac6f6e86e 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-paradise.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-paradise.scss @@ -7,37 +7,26 @@ } .boxed_message { - background: rgba(0, 0, 0, 0.25); - border: 1px solid #a3b9d9; - margin: 0.5em; - padding: 0.5em 0.75em; - text-align: center; -} - -.boxed_message.left_align_text { - text-align: left; + background: hsla(0, 0%, 0%, 0.25); + border-color: hsla(20, 50%, 75%, 0.25); } .boxed_message.red_border { - background: rgba(0, 0, 0, 0.25); - border-color: #aa0000; + background: hsla(0, 75%, 5%, 0.25); + border-color: hsla(0, 100%, 50%, 0.5); } .boxed_message.green_border { - background: rgba(0, 0, 0, 0.25); - border-color: #00ff00; + background: hsla(140, 75%, 5%, 0.25); + border-color: hsla(120, 100%, 50%, 0.5); } .boxed_message.purple_border { - background: rgba(0, 0, 0, 0.25); - border-color: #8000ff; + background: hsla(260, 75%, 5%, 0.25); + border-color: hsla(260, 100%, 65%, 0.5); } .boxed_message.notice_border { - background: rgba(0, 0, 0, 0.25); - border-color: #6685f5; -} - -.boxed_message.thick_border { - border-width: thick; + background: hsla(220, 75%, 5%, 0.25); + border-color: hsla(225, 90%, 65%, 0.5); } diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-syndicate.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-syndicate.scss index 9fdb11962038..e01b8154196f 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-syndicate.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-syndicate.scss @@ -7,37 +7,21 @@ } .boxed_message { - background: rgba(20, 20, 35, 0.25); - border: 1px solid #a3b9d9; - margin: 0.5em; - padding: 0.5em 0.75em; - text-align: center; -} - -.boxed_message.left_align_text { - text-align: left; + background: hsl(0, 70%, 12.5%); } .boxed_message.red_border { - background: rgba(0, 0, 0, 0.2); - border-color: #ff0000; + background: hsl(0, 100%, 12.5%); } .boxed_message.green_border { - background: rgba(0, 75, 0, 0.25); - border-color: #00ff00; + background: hsl(40, 100%, 7.5%); } .boxed_message.purple_border { - background: rgba(25, 0, 50, 0.25); - border-color: #8000ff; + background: hsl(300, 100%, 7.5%); } .boxed_message.notice_border { - background: rgba(0, 0, 75, 0.25); - border-color: #6685f5; -} - -.boxed_message.thick_border { - border-width: thick; + background: hsl(325, 100%, 7.5%); } diff --git a/tgui/packages/tgui/components/Image.tsx b/tgui/packages/tgui/components/Image.tsx index 33e3b063f696..6bf245878ea4 100644 --- a/tgui/packages/tgui/components/Image.tsx +++ b/tgui/packages/tgui/components/Image.tsx @@ -44,11 +44,11 @@ export class Image extends Component { render() { const { fixBlur = true, fixErrors = false, objectFit = 'fill', src, ...rest } = this.props; - /* Remove -ms-interpolation-mode with Byond 516. -webkit-optimize-contrast is better than pixelated */ + /* Remove -ms-interpolation-mode with Byond 516 */ const computedProps = computeBoxProps({ style: { '-ms-interpolation-mode': `${fixBlur ? 'nearest-neighbor' : 'auto'}`, - 'image-rendering': `${fixBlur ? '-webkit-optimize-contrast' : 'auto'}`, + 'image-rendering': `${fixBlur ? 'pixelated' : 'auto'}`, 'object-fit': `${objectFit}`, }, ...rest, diff --git a/tgui/packages/tgui/interfaces/AgentCard.js b/tgui/packages/tgui/interfaces/AgentCard.js index 4ec402bc89a5..4d85c3ff26d2 100644 --- a/tgui/packages/tgui/interfaces/AgentCard.js +++ b/tgui/packages/tgui/interfaces/AgentCard.js @@ -215,21 +215,22 @@ export const AgentCardInfo = (props, context) => { export const AgentCardAppearances = (props, context) => { const { act, data } = useBackend(context); const [selectedAppearance, setSelectedAppearance] = useSharedState(context, 'selectedAppearance', ''); - const { appearances } = data; + const { icon, appearances } = data; return (
- {Object.entries(appearances).map(([name, image]) => ( + {appearances.map((appearance) => ( { - setSelectedAppearance(name); - act('change_appearance', { new_appearance: name }); + setSelectedAppearance(appearance); + act('change_appearance', { new_appearance: appearance }); }} /> ))} diff --git a/tgui/packages/tgui/interfaces/BluespaceTap.js b/tgui/packages/tgui/interfaces/BluespaceTap.js index a0433fd65d88..c96c663b23b2 100644 --- a/tgui/packages/tgui/interfaces/BluespaceTap.js +++ b/tgui/packages/tgui/interfaces/BluespaceTap.js @@ -1,30 +1,68 @@ import { useBackend } from '../backend'; -import { Button, Collapsible, Stack, LabeledList, NoticeBox, Section, Slider, Box } from '../components'; +import { + Button, + Collapsible, + Stack, + LabeledList, + NoticeBox, + Section, + Slider, + Box, + NumberInput, + Dimmer, + Flex, + Icon, + Blink, +} from '../components'; import { Window } from '../layouts'; import { formatPower } from '../format'; +export const Incursion = (props, context) => { + const { data } = useBackend(context); + const { portaling } = data; + if (portaling) { + return ( + + 0.25 ? 750 + 400 * Math.random() : 290 + 150 * Math.random()} + time={60 + 150 * Math.random()} + > + + + +
+ E$#OR:& U#KN!WN IN%ERF#R_NCE +
+
+
+
+ ); + } +}; + export const BluespaceTap = (props, context) => { const { act, data } = useBackend(context); const product = data.product || []; const { - desiredLevel, - inputLevel, + desiredMiningPower, + miningPower, points, totalPoints, powerUse, availablePower, - maxLevel, emagged, - nextLevelPower, autoShutown, stabilizers, stabilizerPower, + stabilizerPriority, } = data; - const barColor = (desiredLevel > inputLevel && 'bad') || 'good'; + const barColor = (desiredMiningPower > miningPower && 'bad') || 'good'; return ( +
@@ -34,6 +72,7 @@ export const BluespaceTap = (props, context) => { color={!!autoShutown && !emagged ? 'green' : 'red'} disabled={!!emagged} tooltip="Turn auto shutdown on or off" + tooltipPosition="top" onClick={() => act('auto_shutdown')} />
@@ -147,17 +195,17 @@ export const BluespaceTap = (props, context) => { export const Alerts = (props, context) => { const { act, data } = useBackend(context); const product = data.product || []; - const { inputLevel, emagged, safeLevels, autoShutown, stabilizers, overhead } = data; + const { miningPower, stabilizerPower, emagged, safeLevels, autoShutown, stabilizers, overhead } = data; return ( <> {!autoShutown && !emagged && Auto shutdown disabled} {emagged ? ( All safeties disabled - ) : inputLevel <= safeLevels ? ( + ) : miningPower <= 15000000 ? ( '' ) : !stabilizers ? ( Stabilizers disabled, Instability likely - ) : inputLevel - overhead > safeLevels ? ( + ) : miningPower > stabilizerPower + 15000000 ? ( Stabilizers overwhelmed, Instability likely ) : ( High Power, engaging stabilizers diff --git a/tgui/packages/tgui/interfaces/FloorPainter.js b/tgui/packages/tgui/interfaces/FloorPainter.js index 6b44333a919c..f370e384b84b 100644 --- a/tgui/packages/tgui/interfaces/FloorPainter.js +++ b/tgui/packages/tgui/interfaces/FloorPainter.js @@ -1,27 +1,37 @@ import { useBackend, useLocalState } from '../backend'; -import { Button, LabeledList, Section, Table, Dropdown, Flex, Icon, Box } from '../components'; +import { Button, DmIcon, LabeledList, Section, Table, Dropdown, Flex, Icon, Box } from '../components'; import { Window } from '../layouts'; const SelectableTile = (props, context) => { const { act, data } = useBackend(context); - const { image, isSelected, onSelect } = props; + const { icon_state, direction, isSelected, onSelect } = props; + return ( - ); }; +const Dir = { + NORTH: 1, + SOUTH: 2, + EAST: 4, + WEST: 8, +}; + export const FloorPainter = (props, context) => { const { act, data } = useBackend(context); - const { availableStyles, selectedStyle, selectedDir, directionsPreview, allStylesPreview } = data; + const { availableStyles, selectedStyle, selectedDir } = data; return ( @@ -50,13 +60,13 @@ export const FloorPainter = (props, context) => { {availableStyles.map((style) => ( - + act('select_style', { style: style })} /> @@ -68,9 +78,9 @@ export const FloorPainter = (props, context) => { - {['north', '', 'south'].map((latitude) => ( + {[Dir.NORTH, null, Dir.SOUTH].map((latitude) => ( - {[latitude + 'west', latitude, latitude + 'east'].map((dir) => ( + {[latitude + Dir.WEST, latitude, latitude + Dir.EAST].map((dir) => ( { 'text-align': 'center', }} > - {dir === '' ? ( + {dir === null ? ( ) : ( act('select_direction', { direction: dir })} /> diff --git a/tgui/packages/tgui/interfaces/MiningVendor.js b/tgui/packages/tgui/interfaces/MiningVendor.js index 2f9916b3357a..a48cfeea1a28 100644 --- a/tgui/packages/tgui/interfaces/MiningVendor.js +++ b/tgui/packages/tgui/interfaces/MiningVendor.js @@ -1,6 +1,6 @@ import { createSearch } from 'common/string'; import { useBackend, useLocalState } from '../backend'; -import { Box, Button, Collapsible, Dropdown, Stack, Input, NoticeBox, Section } from '../components'; +import { Box, Button, Collapsible, Dropdown, Stack, Input, ImageButton, NoticeBox, Section } from '../components'; import { Window } from '../layouts'; const sortTypes = { @@ -10,13 +10,14 @@ const sortTypes = { }; export const MiningVendor = (_properties, _context) => { + const [gridLayout, setGridLayout] = useLocalState(_context, 'gridLayout', false); return ( - + - - + + @@ -64,6 +65,7 @@ const MiningVendorUser = (_properties, context) => { const MiningVendorItems = (_properties, context) => { const { act, data } = useBackend(context); const { has_id, id, items } = data; + const { gridLayout } = _properties; // Search thingies const [searchText, _setSearchText] = useLocalState(context, 'search', ''); const [sortOrder, _setSortOrder] = useLocalState(context, 'sort', 'Alphabetical'); @@ -89,7 +91,7 @@ const MiningVendorItems = (_properties, context) => { } has_contents = true; - return ; + return ; }); return ( @@ -101,6 +103,7 @@ const MiningVendorItems = (_properties, context) => { }; const MiningVendorSearch = (_properties, context) => { + const { gridLayout, setGridLayout } = _properties; const [_searchText, setSearchText] = useLocalState(context, 'search', ''); const [_sortOrder, setSortOrder] = useLocalState(context, 'sort', ''); const [descending, setDescending] = useLocalState(context, 'descending', false); @@ -115,6 +118,15 @@ const MiningVendorSearch = (_properties, context) => { onInput={(_e, value) => setSearchText(value)} /> + + + } + > + {item.name} + + ) + )} ); }; diff --git a/tgui/packages/tgui/interfaces/Pacman.js b/tgui/packages/tgui/interfaces/Pacman.js index 0cba4b7a40f1..e1c464c18fae 100644 --- a/tgui/packages/tgui/interfaces/Pacman.js +++ b/tgui/packages/tgui/interfaces/Pacman.js @@ -26,7 +26,7 @@ export const Pacman = (props, context) => { let fuelRatio = fuel_stored / fuel_cap; let tmpRatio = tmp_current / tmp_max; // temperature ratio let output_watts = output_set * power_gen; - let fuel_sec = Math.round(fuel_stored / fuel_usage); + let fuel_sec = Math.round((fuel_stored / fuel_usage) * 2); // Multiply by two, because one cycle is two seconds. let fuel_min = Math.round(fuel_sec / 60); let usage = fuel_sec > 120 ? `${fuel_min} minutes` : `${fuel_sec} seconds`; return ( diff --git a/tgui/packages/tgui/interfaces/RankedListInputModal.tsx b/tgui/packages/tgui/interfaces/RankedListInputModal.tsx new file mode 100644 index 000000000000..2418fd476d10 --- /dev/null +++ b/tgui/packages/tgui/interfaces/RankedListInputModal.tsx @@ -0,0 +1,116 @@ +import { Loader } from './common/Loader'; +import { InputButtons } from './common/InputButtons'; +import { Button, Section, Stack, Table } from '../components'; +import { useBackend, useLocalState } from '../backend'; +import { Window } from '../layouts'; +import { TableRow } from '../components/Table'; + +type ListInputData = { + items: string[]; + message: string; + timeout: number; + title: string; +}; + +export const RankedListInputModal = (props, context) => { + const { act, data } = useBackend(context); + const { items = [], message = '', timeout, title } = data; + const [edittedItems, setEdittedItems] = useLocalState(context, 'edittedItems', items); + + // Dynamically changes the window height based on the message. + const windowHeight = 330 + Math.ceil(message.length / 3); + + return ( + + {timeout && } + +
+ + + + + + + + +
+
+
+ ); +}; + +/** + * Displays the list of selectable items. + * If a search query is provided, filters the items. + */ +const ListDisplay = (props, context) => { + const { filteredItems, setEdittedItems } = props; + const [draggedItemIndex, setDraggedItemIndex] = useLocalState(context, 'draggedItemIndex', null); + + // Handle the drag start event + const handleDragStart = (index: number) => { + setDraggedItemIndex(index); + }; + + // Handle the drag over event + const handleDragOver = (event: DragEvent) => { + event.preventDefault(); // Required to allow dropping + }; + + // Handle the drop event for items + const handleDrop = (index: number | null = null) => { + if (draggedItemIndex === null) return; + + const updatedItems = [...filteredItems]; + const draggedItem = updatedItems.splice(draggedItemIndex, 1)[0]; // Remove dragged item + + // If no index is provided, add the item to the end of the list (used for drop on section) + if (index === null) { + updatedItems.push(draggedItem); + } else { + updatedItems.splice(index, 0, draggedItem); // Insert dragged item at new position + } + + setEdittedItems(updatedItems); + setDraggedItemIndex(null); // Reset the dragged item index + }; + + return ( +
handleDrop(null)} // Handle drop on Section + onDragOver={handleDragOver} // Allow dropping on Section + > +
+ {filteredItems.map((item, index) => ( + handleDragStart(index)} + onDragOver={handleDragOver} + onDrop={() => handleDrop(index)} + style={{ + padding: '8px', + }} + > + + + ))} +
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/Vending.js b/tgui/packages/tgui/interfaces/Vending.js index 59629205aa77..2930a6809abd 100644 --- a/tgui/packages/tgui/interfaces/Vending.js +++ b/tgui/packages/tgui/interfaces/Vending.js @@ -1,10 +1,10 @@ import { useBackend } from '../backend'; -import { Box, Button, Section, Stack, Table } from '../components'; +import { Box, Button, DmIcon, Section, Stack, Table, Icon } from '../components'; import { Window } from '../layouts'; const VendingRow = (props, context) => { const { act, data } = useBackend(context); - const { product, productStock, productImage } = props; + const { product, productStock, productIcon, productIconState } = props; const { chargesMoney, user, usermoney, inserted_cash, vend_ready, inserted_item_name } = data; const free = !chargesMoney || product.price === 0; let buttonText = 'ERROR!'; @@ -21,14 +21,11 @@ const VendingRow = (props, context) => { return ( - } /> {product.name} @@ -69,7 +66,6 @@ export const Vending = (props, context) => { inserted_item_name, panel_open, speaker, - imagelist, } = data; let inventory; @@ -148,7 +144,8 @@ export const Vending = (props, context) => { key={product.name} product={product} productStock={stock[product.name]} - productImage={imagelist[product.path]} + productIcon={product.icon} + productIconState={product.icon_state} /> ))} diff --git a/tgui/packages/tgui/package.json b/tgui/packages/tgui/package.json index 203b22705c4b..b491d41ca5c8 100644 --- a/tgui/packages/tgui/package.json +++ b/tgui/packages/tgui/package.json @@ -7,7 +7,7 @@ "@types/marked": "^6.0.0", "common": "workspace:*", "csstype": "^3.1.3", - "dompurify": "2.5.0", + "dompurify": "2.5.4", "highlight.js": "^11.10.0", "inferno": "^8.2.3", "inferno-vnode-flags": "^8.2.3", diff --git a/tgui/public/tgui-panel.bundle.css b/tgui/public/tgui-panel.bundle.css index 5e10cab9035d..2d7922fdaa74 100644 --- a/tgui/public/tgui-panel.bundle.css +++ b/tgui/public/tgui-panel.bundle.css @@ -1 +1 @@ -html,body{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-gold{color:#f3b22f!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.color-bg-gold{background-color:#d6920c!important}.color-border-black{border-color:#1a1a1a!important}.color-border-white{border-color:#fff!important}.color-border-red{border-color:#df3e3e!important}.color-border-orange{border-color:#f37f33!important}.color-border-yellow{border-color:#fbda21!important}.color-border-olive{border-color:#cbe41c!important}.color-border-green{border-color:#25ca4c!important}.color-border-teal{border-color:#00d6cc!important}.color-border-blue{border-color:#2e93de!important}.color-border-violet{border-color:#7349cf!important}.color-border-purple{border-color:#ad45d0!important}.color-border-pink{border-color:#e34da1!important}.color-border-brown{border-color:#b97447!important}.color-border-grey{border-color:#848484!important}.color-border-good{border-color:#68c22d!important}.color-border-average{border-color:#f29a29!important}.color-border-bad{border-color:#df3e3e!important}.color-border-label{border-color:#8b9bb0!important}.color-border-gold{border-color:#f3b22f!important}.debug-layout,.debug-layout *:not(g):not(path){color:rgba(255,255,255,.9)!important;background:rgba(0,0,0,0)!important;outline:1px solid rgba(255,255,255,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout *:not(g):not(path):hover{outline-color:rgba(255,255,255,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.outline-color-gold{outline:.167rem solid #f3b22f!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .fas,.Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .fas,.Button--hasContent .far{margin-right:.25em}.Button--hasContent.Button--iconRight .fa,.Button--hasContent.Button--iconRight .fas,.Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--multiLine{white-space:normal;word-wrap:break-word}.Button--modal{float:right;z-index:1;margin-top:-.5rem}.Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.Button--color--black:hover{background-color:#101010;color:#fff}.Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.Button--color--white:hover{background-color:#f8f8f8;color:#000}.Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--red:hover{background-color:#d93f3f;color:#fff}.Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.Button--color--orange:hover{background-color:#ef7e33;color:#fff}.Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--yellow:hover{background-color:#f5d523;color:#000}.Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.Button--color--olive:hover{background-color:#bdd327;color:#fff}.Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--color--green:hover{background-color:#2fb94f;color:#fff}.Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.Button--color--teal:hover{background-color:#10bdb6;color:#fff}.Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.Button--color--blue:hover{background-color:#308fd6;color:#fff}.Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.Button--color--violet:hover{background-color:#7249ca;color:#fff}.Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.Button--color--purple:hover{background-color:#aa46ca;color:#fff}.Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.Button--color--pink:hover{background-color:#e04ca0;color:#fff}.Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.Button--color--brown:hover{background-color:#ae724c;color:#fff}.Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.Button--color--grey:hover{background-color:#818181;color:#fff}.Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.Button--color--good:hover{background-color:#67b335;color:#fff}.Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.Button--color--average:hover{background-color:#eb972b;color:#fff}.Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--bad:hover{background-color:#d93f3f;color:#fff}.Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.Button--color--label:hover{background-color:#8a9aae;color:#fff}.Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.Button--color--gold:hover{background-color:#eeaf30;color:#fff}.Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.Button--color--transparent{background-color:rgba(32,32,32,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--transparent:hover{background-color:rgba(50,50,50,.81);color:#fff}.Button--color--default{background-color:#3e6189;color:#fff;transition:color .2s,background-color .2s}.Button--color--default:hover{background-color:#567daa;color:#fff}.Button--color--default--translucent{background-color:rgba(40,40,40,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--default--translucent:hover{background-color:rgba(61,61,61,.5);color:#fff}.Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--caution:hover{background-color:#f5d523;color:#000}.Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--danger:hover{background-color:#d93f3f;color:#fff}.Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.Button--selected,.Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--selected:hover,.Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Dropdown{position:relative;align-items:center}.Dropdown__control{display:inline-block;align-items:center;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.3333333333em;-ms-user-select:none;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.35em;width:1.2em;height:1.8333333333em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;align-items:center;z-index:5;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-scroll{overflow-y:scroll}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s ease-out}.Dropdown__menuentry.selected{background-color:rgba(255,255,255,.5)!important;transition:background-color 0ms}.Dropdown__menuentry:hover{background-color:rgba(255,255,255,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.Dropdown__selected-text{display:inline-block;text-overflow:ellipsis;white-space:nowrap;height:1.4166666667em;width:calc(100% - 1.2em);text-align:left;padding-top:2.5px}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:block}.Flex--iefix.Flex--inline,.Flex__item--iefix{display:inline-block}.Flex--iefix--column>.Flex__item--iefix{display:block}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue,.Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Knob__popupValue--right{top:.25rem;right:-50%}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.LabeledList__breakContents{word-break:break-all;word-wrap:break-word}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem;scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--color--gold{color:#fff;background-color:#825d13}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--disabled{border:1px solid #999}.ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.Section .Section:first-child{margin-top:-.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Slider:not(.Slider__disabled){cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--zebra>.Stack__item:nth-child(2n){background-color:#131313}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#131313}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075);transition:background-color 0}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.Tabs--vertical .Tab--selected{border-left:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#8b9bb0}.Tab--selected.Tab--color--gold{color:#f6c563}.Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#f3b22f}.Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#f3b22f}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:opacity .15s ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid rgba(140,140,140,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;top:1em;left:.75em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}html,body{scrollbar-color:#363636 #181818}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.Layout__content--flexRow{display:flex;flex-flow:row}.Layout__content--flexColumn{display:flex;flex-flow:column}.Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.Layout__content--noMargin{margin:0}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(to bottom,#202020,#202020)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.emoji16x16{vertical-align:middle}a{color:#397ea5}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover{background:#999}.popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:hover,.popup input[type=text]:active,.popup input[type=text]:focus{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:hover,.popup input[type=submit]:focus,.popup input[type=submit]:active{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:link,.motd a:active,.motd a:hover{color:#a4bad6}.italic,.italics,.emote{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}em{font-style:normal;font-weight:700}.darkmblue{color:#6685f5}.prefix,.ooc{font-weight:700}.looc{color:#69c;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#b82e00;font-weight:700}.adminobserver{color:#960;font-weight:700}.admin{color:#386aff;font-weight:700}.adminsay{color:#9611d4;font-weight:700}.mentorhelp{color:#07b;font-weight:700}.adminhelp{color:#a00;font-weight:700}.playerreply{color:#80b;font-weight:700}.pmsend{color:#6685f5}.debug{color:#6d2f83}.name,.yell{font-weight:700}.siliconsay{font-family:Courier New,Courier,monospace}.deadsay{color:#e2c1ff}.radio{color:#20b142}.deptradio{color:#939}.comradio{color:#5f5cff}.syndradio{color:#8f4a4b}.dsquadradio{color:#998599}.resteamradio{color:#18bc46}.airadio{color:#ff5ed7}.centradio{color:#2681a5}.secradio{color:#dd3535}.engradio{color:#feac20}.medradio{color:#00b5ad}.sciradio{color:#c68cfa}.supradio{color:#b88646}.srvradio{color:#bbd164}.proradio{color:#b84f92}.admin_channel{color:#03fc9d;font-weight:700}.all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.mentor_channel{color:#775bff;font-weight:700}.mentor_channel_admin{color:#a35cff;font-weight:700}.dev_channel{color:#61b413;font-weight:700}.dev_channel_admin{color:#9ef14f;font-weight:700}.djradio{color:#960}.binaryradio{color:#1b00fb;font-family:Courier New,Courier,monospace}.mommiradio{color:#6685f5}.alert{color:#d82020}h1.alert,h2.alert{color:#a4bad6}.ghostalert{color:#cc00c6;font-style:italic;font-weight:700}.emote{font-style:italic}.selecteddna{color:#a4bad6;background-color:#001b1b}.attack{color:red}.moderate{color:#c00}.disarm{color:#900}.passive{color:#600}.warning{color:#c51e1e;font-style:italic}.boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.danger{color:#c51e1e;font-weight:700}.userdanger{color:#c51e1e;font-weight:700;font-size:120%}.biggerdanger{color:red;font-weight:700;font-size:150%}.notice{color:#6685f5}.boldnotice{color:#6685f5;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#03bb39}.pr_announce,.boldannounceic,.boldannounceooc{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.alien{color:#c433c4}.noticealien{color:#00c000}.alertalien{color:#00c000;font-weight:700}.terrorspider{color:#cf52fa}.dantalion{color:#8b2c5e}.chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.chaosgood{color:#19e0c0;font-weight:700}.chaosneutral{color:#479ac0;font-weight:700}.chaosbad{color:#9047c0;font-weight:700}.chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.sinister{color:purple;font-weight:700;font-style:italic}.medal{font-weight:700}.blob{color:#006221;font-weight:700;font-style:italic}.confirm{color:#00af3b}.rose{color:#ff5050}.sans{font-family:Comic Sans MS,cursive,sans-serif}.wingdings{font-family:Wingdings,Webdings}.robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.ancient{color:#008b8b;font-style:italic}.newscaster{color:#c00}.mod{color:#735638;font-weight:700}.modooc{color:#184880;font-weight:700}.adminmod{color:#f0aa14;font-weight:700}.tajaran{color:#803b56}.skrell{color:#00ced1}.solcom{color:#8282fb}.com_srus{color:#7c4848}.soghun{color:#228b22}.changeling{color:#00b4de}.vox{color:#a0a}.diona{color:#804000;font-weight:700}.trinary{color:#727272}.kidan{color:#c64c05}.slime{color:#07a}.drask{color:#a3d4eb;font-family:Arial Black}.moth{color:#869b29;font-family:Copperplate}.clown{color:red}.vulpkanin{color:#b97a57}.abductor{color:purple;font-style:italic}.mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.rough{font-family:Trebuchet MS,cursive,sans-serif}.say_quote{font-family:Georgia,Verdana,sans-serif}.cult{color:purple;font-weight:700;font-style:italic}.cultspeech{color:#af0000;font-style:italic}.cultitalic{color:#a60000;font-style:italic}.cultlarge{color:#a60000;font-weight:700;font-size:120%}.narsie{color:#a60000;font-weight:700;font-size:300%}.narsiesmall{color:#a60000;font-weight:700;font-size:200%}.zombie{color:#7c4848}.zombielarge{color:#7c4848;font-weight:700;font-size:120%}.interface{color:#9031c4}.big{font-size:150%}.reallybig{font-size:175%}.greentext{color:#0f0;font-size:150%}.redtext{color:red;font-size:150%}.bold{font-weight:700}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.center{text-align:center}.red{color:red}.purple{color:#9031c4}.skeleton{color:#c8c8c8;font-weight:700;font-style:italic}.gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.orange{color:orange}.orangei{color:orange;font-style:italic}.orangeb{color:orange;font-weight:700}.resonate{color:#298f85}.healthscan_oxy{color:#5cc9ff}.revennotice{color:#6685f5}.revenboldnotice{color:#6685f5;font-weight:700}.revenbignotice{color:#6685f5;font-weight:700;font-size:120%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:120%}.specialnotice{color:#4a6f82;font-weight:700;font-size:120%}.good{color:green}.average{color:#ff8000}.bad{color:red}.italics,.talkinto{font-style:italic}.whisper{font-style:italic;color:#ccc}.recruit{color:#5c00e6;font-weight:700;font-style:italic}.memo{color:#638500;text-align:center}.memoedit{text-align:center;font-size:75%}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#6685f5;font-weight:700}.rebooting{background:#2979af;color:#fff;padding:5px}.rebooting a{color:#fff!important;text-decoration-color:#fff!important}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.colossus{color:#7f282a;font-size:175%}.hierophant{color:#609;font-weight:700;font-style:italic}.hierophant_warning{color:#609;font-style:italic}.emoji{max-height:16px;max-width:16px}.adminticket{color:#3daf21;font-weight:700}.adminticketalt{color:#ccb847;font-weight:700}span.body .codephrases{color:#55f}span.body .coderesponses{color:#f33}.announcement h1,.announcement h2{color:#a4bad6;margin:8pt 0;line-height:1.2}.announcement p{color:#d82020;line-height:1.3}.announcement.minor h1{font-size:180%}.announcement.minor h2{font-size:170%}.announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.bolditalics{font-style:italic;font-weight:700}.boxed_message{background:#1b1c1e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.boxed_message.left_align_text{text-align:left}.boxed_message.red_border{background:#1e1b1b;border-color:#a00}.boxed_message.green_border{background:#1b1e1c;border-color:#0f0}.boxed_message.purple_border{background:#1d1c1f;border-color:#8000ff}.boxed_message.notice_border{background:#1b1c1e;border-color:#6685f5}.boxed_message.thick_border{border-width:thick}.oxygen{color:#449dff}.nitrogen{color:#f94541}.carbon_dioxide{color:#ccc}.plasma{color:#eb6b00}.sleeping_agent{color:#f28b89}.agent_b{color:teal}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-gold{color:#e39b0d!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .color-bg-gold{background-color:#bd810b!important}.theme-light .color-border-black{border-color:#000!important}.theme-light .color-border-white{border-color:#e6e6e6!important}.theme-light .color-border-red{border-color:#c82121!important}.theme-light .color-border-orange{border-color:#e6630d!important}.theme-light .color-border-yellow{border-color:#e5c304!important}.theme-light .color-border-olive{border-color:#a3b816!important}.theme-light .color-border-green{border-color:#1d9f3b!important}.theme-light .color-border-teal{border-color:#00a39c!important}.theme-light .color-border-blue{border-color:#1e78bb!important}.theme-light .color-border-violet{border-color:#5a30b5!important}.theme-light .color-border-purple{border-color:#932eb4!important}.theme-light .color-border-pink{border-color:#db228a!important}.theme-light .color-border-brown{border-color:#955d39!important}.theme-light .color-border-grey{border-color:#e6e6e6!important}.theme-light .color-border-good{border-color:#529923!important}.theme-light .color-border-average{border-color:#da810e!important}.theme-light .color-border-bad{border-color:#c82121!important}.theme-light .color-border-label{border-color:#353535!important}.theme-light .color-border-gold{border-color:#e39b0d!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-light .Tabs--fill{height:100%}.theme-light .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-light .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-light .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-light .Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.theme-light .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.theme-light .Tab:not(.Tab--selected):hover{background-color:rgba(0,0,0,.075);transition:background-color 0}.theme-light .Tab--selected{background-color:rgba(0,0,0,.125);color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.theme-light .Tabs--vertical .Tab--selected{border-left:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#353535}.theme-light .Tab--selected.Tab--color--gold{color:#f4b73f}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#e39b0d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#e39b0d}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__rest{position:relative}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill>.Section__rest{flex-grow:1}.theme-light .Section--fill>.Section__rest>.Section__content{height:100%}.theme-light .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-light .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-light .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-light .Section .Section:first-child{margin-top:-.5em}.theme-light .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-light .Section .Section .Section .Section__titleText{font-size:1em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .fas,.theme-light .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .fas,.theme-light .Button--hasContent .far{margin-right:.25em}.theme-light .Button--hasContent.Button--iconRight .fa,.theme-light .Button--hasContent.Button--iconRight .fas,.theme-light .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-light .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-light .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--black:hover{background-color:#101010;color:#fff}.theme-light .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-light .Button--color--white{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--white:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--white--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--white--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--red{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--red:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--red--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--red--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--orange{background-color:#c0530b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--orange:hover{background-color:#e76d1d;color:#fff}.theme-light .Button--color--orange--translucent{background-color:rgba(192,83,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--orange--translucent:hover{background-color:rgba(231,109,29,.5);color:#fff}.theme-light .Button--color--yellow{background-color:#bfa303;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--yellow:hover{background-color:#e7c714;color:#fff}.theme-light .Button--color--yellow--translucent{background-color:rgba(191,163,3,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--yellow--translucent:hover{background-color:rgba(231,199,20,.5);color:#fff}.theme-light .Button--color--olive{background-color:#889912;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--olive:hover{background-color:#a9bc25;color:#fff}.theme-light .Button--color--olive--translucent{background-color:rgba(136,153,18,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--olive--translucent:hover{background-color:rgba(169,188,37,.5);color:#fff}.theme-light .Button--color--green{background-color:#188532;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--green:hover{background-color:#2ba648;color:#fff}.theme-light .Button--color--green--translucent{background-color:rgba(24,133,50,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--green--translucent:hover{background-color:rgba(43,166,72,.5);color:#fff}.theme-light .Button--color--teal{background-color:#008882;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--teal:hover{background-color:#10a9a2;color:#fff}.theme-light .Button--color--teal--translucent{background-color:rgba(0,136,130,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--teal--translucent:hover{background-color:rgba(16,169,162,.5);color:#fff}.theme-light .Button--color--blue{background-color:#19649c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--blue:hover{background-color:#2c81c0;color:#fff}.theme-light .Button--color--blue--translucent{background-color:rgba(25,100,156,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--blue--translucent:hover{background-color:rgba(44,129,192,.5);color:#fff}.theme-light .Button--color--violet{background-color:#4b2897;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--violet:hover{background-color:#653db9;color:#fff}.theme-light .Button--color--violet--translucent{background-color:rgba(75,40,151,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--violet--translucent:hover{background-color:rgba(101,61,185,.5);color:#fff}.theme-light .Button--color--purple{background-color:#7a2696;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--purple:hover{background-color:#9a3bb9;color:#fff}.theme-light .Button--color--purple--translucent{background-color:rgba(122,38,150,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--purple--translucent:hover{background-color:rgba(154,59,185,.5);color:#fff}.theme-light .Button--color--pink{background-color:#b61d73;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--pink:hover{background-color:#d93591;color:#fff}.theme-light .Button--color--pink--translucent{background-color:rgba(182,29,115,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--pink--translucent:hover{background-color:rgba(217,53,145,.5);color:#fff}.theme-light .Button--color--brown{background-color:#7c4d2f;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--brown:hover{background-color:#9c6745;color:#fff}.theme-light .Button--color--brown--translucent{background-color:rgba(124,77,47,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--brown--translucent:hover{background-color:rgba(156,103,69,.5);color:#fff}.theme-light .Button--color--grey{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--grey:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--grey--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--grey--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--good{background-color:#44801d;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--good:hover{background-color:#5d9f31;color:#fff}.theme-light .Button--color--good--translucent{background-color:rgba(68,128,29,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--good--translucent:hover{background-color:rgba(93,159,49,.5);color:#fff}.theme-light .Button--color--average{background-color:#b56b0b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--average:hover{background-color:#dc891d;color:#fff}.theme-light .Button--color--average--translucent{background-color:rgba(181,107,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--average--translucent:hover{background-color:rgba(220,137,29,.5);color:#fff}.theme-light .Button--color--bad{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--bad:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--bad--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--bad--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--label{background-color:#2c2c2c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--label:hover{background-color:#424242;color:#fff}.theme-light .Button--color--label--translucent{background-color:rgba(44,44,44,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--label--translucent:hover{background-color:rgba(66,66,66,.5);color:#fff}.theme-light .Button--color--gold{background-color:#bd810b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--gold:hover{background-color:#e5a11c;color:#fff}.theme-light .Button--color--gold--translucent{background-color:rgba(189,129,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--gold--translucent:hover{background-color:rgba(229,161,28,.5);color:#fff}.theme-light .Button--color--transparent{background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--transparent:hover{background-color:rgba(255,255,255,.81);color:#000}.theme-light .Button--color--default{background-color:#bbb;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--default:hover{background-color:#e3e3e3;color:#000}.theme-light .Button--color--default--translucent{background-color:rgba(251,251,251,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--default--translucent:hover{background-color:rgba(254,254,254,.5);color:#fff}.theme-light .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-light .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-light .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-light .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-light .Button--disabled{background-color:#363636!important;color:rgba(0,0,0,.75)!important}.theme-light .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(0,0,0,.5)!important}.theme-light .Button--selected,.theme-light .Button--selected--translucent{background-color:#0668b8;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--selected:hover,.theme-light .Button--selected--translucent:hover{background-color:#1785df;color:#fff}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#e6e6e6;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#e6e6e6;color:#000;text-align:right}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#e6e6e6;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-light .Input--disabled{color:#777;border-color:#000;border-color:rgba(0,0,0,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-light .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-light .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#e6e6e6;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-light .Knob__popupValue,.theme-light .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .Knob__popupValue--right{top:.25rem;right:-50%}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Knob--color--gold .Knob__ringFill{stroke:#e39b0d}.theme-light .Slider:not(.Slider__disabled){cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--disabled{border:1px solid #999}.theme-light .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .ProgressBar--color--gold{border:.0833333333em solid #bd810b!important}.theme-light .ProgressBar--color--gold .ProgressBar__fill{background-color:#bd810b}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light html,.theme-light body{scrollbar-color:#a7a7a7 #f2f2f2}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-light .Layout__content--flexRow{display:flex;flex-flow:row}.theme-light .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-light .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-light .Layout__content--noMargin{margin:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light html,.theme-light body{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#fff;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:hover,.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:hover,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:active{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:link,.theme-light .motd a:active,.theme-light .motd a:hover{color:#638500}.theme-light .italic,.theme-light .italics,.theme-light .emote{font-style:italic}.theme-light .highlight{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .darkmblue{color:#00f}.theme-light .prefix,.theme-light .ooc{font-weight:700}.theme-light .looc{color:#69c;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#b82e00;font-weight:700}.theme-light .adminobserver{color:#960;font-weight:700}.theme-light .admin{color:#386aff;font-weight:700}.theme-light .adminsay{color:#9611d4;font-weight:700}.theme-light .mentorhelp{color:#07b;font-weight:700}.theme-light .adminhelp{color:#a00;font-weight:700}.theme-light .playerreply{color:#80b;font-weight:700}.theme-light .pmsend{color:#00f}.theme-light .debug{color:#6d2f83}.theme-light .name,.theme-light .yell{font-weight:700}.theme-light .siliconsay{font-family:Courier New,Courier,monospace}.theme-light .deadsay{color:#5c00e6}.theme-light .radio{color:#408010}.theme-light .deptradio{color:#939}.theme-light .comradio{color:#204090}.theme-light .syndradio{color:#6d3f40}.theme-light .dsquadradio{color:#686868}.theme-light .resteamradio{color:#18bc46}.theme-light .airadio{color:#f0f}.theme-light .centradio{color:#5c5c7c}.theme-light .secradio{color:#a30000}.theme-light .engradio{color:#a66300}.theme-light .medradio{color:#009190}.theme-light .sciradio{color:#939}.theme-light .supradio{color:#7f6539}.theme-light .srvradio{color:#80a000}.theme-light .proradio{color:#e3027a}.theme-light .admin_channel{color:#9a04d1;font-weight:700}.theme-light .all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.theme-light .mentor_channel{color:#775bff;font-weight:700}.theme-light .mentor_channel_admin{color:#a35cff;font-weight:700}.theme-light .dev_channel{color:#126719;font-weight:700}.theme-light .dev_channel_admin{color:#26a419;font-weight:700}.theme-light .djradio{color:#630}.theme-light .binaryradio{color:#0b0050;font-family:Courier New,Courier,monospace}.theme-light .mommiradio{color:navy}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .emote{font-style:italic}.theme-light .selecteddna{color:#fff;background-color:#001b1b}.theme-light .attack{color:red}.theme-light .moderate{color:#c00}.theme-light .disarm{color:#900}.theme-light .passive{color:#600}.theme-light .warning{color:red;font-style:italic}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .danger{color:red;font-weight:700}.theme-light .userdanger{color:red;font-weight:700;font-size:120%}.theme-light .biggerdanger{color:red;font-weight:700;font-size:150%}.theme-light .notice{color:#009}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03bb39}.theme-light .pr_announce{color:#228b22;font-weight:700}.theme-light .boldannounceic,.theme-light .boldannounceooc{color:red;font-weight:700}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .alien{color:#543354}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .terrorspider{color:#320e32}.theme-light .dantalion{color:#6a2148}.theme-light .chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.theme-light .chaosgood{color:#19e0c0;font-weight:700}.theme-light .chaosneutral{color:#479ac0;font-weight:700}.theme-light .chaosbad{color:#9047c0;font-weight:700}.theme-light .chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.theme-light .sinister{color:purple;font-weight:700;font-style:italic}.theme-light .blob{color:#006221;font-weight:700;font-style:italic}.theme-light .confirm{color:#00af3b}.theme-light .rose{color:#ff5050}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .wingdings{font-family:Wingdings,Webdings}.theme-light .robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.theme-light .ancient{color:#008b8b;font-style:italic}.theme-light .newscaster{color:maroon}.theme-light .mod{color:#735638;font-weight:700}.theme-light .modooc{color:#184880;font-weight:700}.theme-light .adminmod{color:#402a14;font-weight:700}.theme-light .tajaran{color:#803b56}.theme-light .skrell{color:#00ced1}.theme-light .solcom{color:#22228b}.theme-light .com_srus{color:#7c4848}.theme-light .soghun{color:#228b22}.theme-light .changeling{color:purple}.theme-light .vox{color:#a0a}.theme-light .diona{color:#804000;font-weight:700}.theme-light .trinary{color:#727272}.theme-light .kidan{color:#664205}.theme-light .slime{color:#07a}.theme-light .drask{color:#a3d4eb;font-family:Arial Black}.theme-light .moth{color:#869b29;font-family:Copperplate}.theme-light .clown{color:red}.theme-light .vulpkanin{color:#b97a57}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.theme-light .rough{font-family:Trebuchet MS,cursive,sans-serif}.theme-light .say_quote{font-family:Georgia,Verdana,sans-serif}.theme-light .cult{color:purple;font-weight:700;font-style:italic}.theme-light .cultspeech{color:#7f0000;font-style:italic}.theme-light .cultitalic{color:#960000;font-style:italic}.theme-light .cultlarge{color:#960000;font-weight:700;font-size:120%}.theme-light .narsie{color:#960000;font-weight:700;font-size:300%}.theme-light .narsiesmall{color:#960000;font-weight:700;font-size:200%}.theme-light .zombie{color:#7c4848}.theme-light .zombielarge{color:#7c4848;font-weight:700;font-size:120%}.theme-light .interface{color:#303}.theme-light .big{font-size:150%}.theme-light .reallybig{font-size:175%}.theme-light .greentext{color:#0f0;font-size:150%}.theme-light .redtext{color:red;font-size:150%}.theme-light .bold{font-weight:700}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .center{text-align:center}.theme-light .red{color:red}.theme-light .purple{color:#5e2d79}.theme-light .skeleton{color:#585858;font-weight:700;font-style:italic}.theme-light .gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.theme-light .orange{color:orange}.theme-light .orangei{color:orange;font-style:italic}.theme-light .orangeb{color:orange;font-weight:700}.theme-light .resonate{color:#298f85}.theme-light .healthscan_oxy{color:#0074bd}.theme-light .revennotice{color:#1d2953}.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{color:#1d2953;font-weight:700;font-size:120%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:120%}.theme-light .specialnoticebold{color:#36525e;font-weight:700;font-size:120%}.theme-light .specialnotice{color:#36525e;font-size:120%}.theme-light .medal{font-weight:700}.theme-light .good{color:green}.theme-light .average{color:#ff8000}.theme-light .bad{color:red}.theme-light .italics,.theme-light .talkinto{font-style:italic}.theme-light .whisper{font-style:italic;color:#333}.theme-light .recruit{color:#5c00e6;font-weight:700;font-style:italic}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:75%}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .rebooting{background:#2979af;color:#fff;padding:5px}.theme-light .rebooting a{color:#fff!important;text-decoration-color:#fff!important}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .colossus{color:#7f282a;font-size:175%}.theme-light .hierophant{color:#609;font-weight:700;font-style:italic}.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .emoji{max-height:16px;max-width:16px}.theme-light .adminticket{color:#3e7336;font-weight:700}.theme-light .adminticketalt{color:#014c8a;font-weight:700}.theme-light span.body .codephrases{color:#00f}.theme-light span.body .coderesponses{color:red}.theme-light .announcement h1,.theme-light .announcement h2{color:#000;margin:8pt 0;line-height:1.2}.theme-light .announcement p{color:#d82020;line-height:1.3}.theme-light .announcement.minor h1{font-size:180%}.theme-light .announcement.minor h2{font-size:170%}.theme-light .announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.theme-light .bolditalics{font-style:italic;font-weight:700}.theme-light .boxed_message{background:#f7fcff;border:1px solid #111a26;margin:.5em;padding:.5em .75em;text-align:center}.theme-light .boxed_message.left_align_text{text-align:left}.theme-light .boxed_message.red_border{background:#fff7f7;border-color:#a00}.theme-light .boxed_message.green_border{background:#f7fff7;border-color:#0f0}.theme-light .boxed_message.purple_border{background:#fdf7ff;border-color:#a0f}.theme-light .boxed_message.notice_border{background:#f7fdff;border-color:#0000bf}.theme-light .boxed_message.thick_border{border-width:thick}.theme-light .oxygen{color:#006adb}.theme-light .nitrogen{color:#d00a06}.theme-light .carbon_dioxide{color:#1f1f1f}.theme-light .plasma{color:#853c00}.theme-light .sleeping_agent{color:#e82f2c}.theme-light .agent_b{color:#004d4d}.theme-ntos .color-black{color:#1a1a1a!important}.theme-ntos .color-white{color:#fff!important}.theme-ntos .color-red{color:#df3e3e!important}.theme-ntos .color-orange{color:#f37f33!important}.theme-ntos .color-yellow{color:#fbda21!important}.theme-ntos .color-olive{color:#cbe41c!important}.theme-ntos .color-green{color:#25ca4c!important}.theme-ntos .color-teal{color:#00d6cc!important}.theme-ntos .color-blue{color:#2e93de!important}.theme-ntos .color-violet{color:#7349cf!important}.theme-ntos .color-purple{color:#ad45d0!important}.theme-ntos .color-pink{color:#e34da1!important}.theme-ntos .color-brown{color:#b97447!important}.theme-ntos .color-grey{color:#848484!important}.theme-ntos .color-good{color:#68c22d!important}.theme-ntos .color-average{color:#f29a29!important}.theme-ntos .color-bad{color:#df3e3e!important}.theme-ntos .color-label{color:#8b9bb0!important}.theme-ntos .color-gold{color:#f3b22f!important}.theme-ntos .color-bg-black{background-color:#000!important}.theme-ntos .color-bg-white{background-color:#d9d9d9!important}.theme-ntos .color-bg-red{background-color:#bd2020!important}.theme-ntos .color-bg-orange{background-color:#d95e0c!important}.theme-ntos .color-bg-yellow{background-color:#d9b804!important}.theme-ntos .color-bg-olive{background-color:#9aad14!important}.theme-ntos .color-bg-green{background-color:#1b9638!important}.theme-ntos .color-bg-teal{background-color:#009a93!important}.theme-ntos .color-bg-blue{background-color:#1c71b1!important}.theme-ntos .color-bg-violet{background-color:#552dab!important}.theme-ntos .color-bg-purple{background-color:#8b2baa!important}.theme-ntos .color-bg-pink{background-color:#cf2082!important}.theme-ntos .color-bg-brown{background-color:#8c5836!important}.theme-ntos .color-bg-grey{background-color:#646464!important}.theme-ntos .color-bg-good{background-color:#4d9121!important}.theme-ntos .color-bg-average{background-color:#cd7a0d!important}.theme-ntos .color-bg-bad{background-color:#bd2020!important}.theme-ntos .color-bg-label{background-color:#657a94!important}.theme-ntos .color-bg-gold{background-color:#d6920c!important}.theme-ntos .color-border-black{border-color:#1a1a1a!important}.theme-ntos .color-border-white{border-color:#fff!important}.theme-ntos .color-border-red{border-color:#df3e3e!important}.theme-ntos .color-border-orange{border-color:#f37f33!important}.theme-ntos .color-border-yellow{border-color:#fbda21!important}.theme-ntos .color-border-olive{border-color:#cbe41c!important}.theme-ntos .color-border-green{border-color:#25ca4c!important}.theme-ntos .color-border-teal{border-color:#00d6cc!important}.theme-ntos .color-border-blue{border-color:#2e93de!important}.theme-ntos .color-border-violet{border-color:#7349cf!important}.theme-ntos .color-border-purple{border-color:#ad45d0!important}.theme-ntos .color-border-pink{border-color:#e34da1!important}.theme-ntos .color-border-brown{border-color:#b97447!important}.theme-ntos .color-border-grey{border-color:#848484!important}.theme-ntos .color-border-good{border-color:#68c22d!important}.theme-ntos .color-border-average{border-color:#f29a29!important}.theme-ntos .color-border-bad{border-color:#df3e3e!important}.theme-ntos .color-border-label{border-color:#8b9bb0!important}.theme-ntos .color-border-gold{border-color:#f3b22f!important}.theme-ntos .Section{position:relative;margin-bottom:.5em;background-color:#121922;box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-ntos .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-ntos .Section__rest{position:relative}.theme-ntos .Section__content{padding:.66em .5em}.theme-ntos .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-ntos .Section--fill{display:flex;flex-direction:column;height:100%}.theme-ntos .Section--fill>.Section__rest{flex-grow:1}.theme-ntos .Section--fill>.Section__rest>.Section__content{height:100%}.theme-ntos .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-ntos .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-ntos .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-ntos .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-ntos .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-ntos .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-ntos .Section .Section:first-child{margin-top:-.5em}.theme-ntos .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-ntos .Section .Section .Section .Section__titleText{font-size:1em}.theme-ntos .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0;margin-bottom:0}.theme-ntos .Button .fa,.theme-ntos .Button .fas,.theme-ntos .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .fas,.theme-ntos .Button--hasContent .far{margin-right:.25em}.theme-ntos .Button--hasContent.Button--iconRight .fa,.theme-ntos .Button--hasContent.Button--iconRight .fas,.theme-ntos .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--circular{border-radius:50%}.theme-ntos .Button--compact{padding:0 .25em;line-height:1.333em}.theme-ntos .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-ntos .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-ntos .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--black:hover{background-color:#101010;color:#fff}.theme-ntos .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-ntos .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-ntos .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-ntos .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-ntos .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-ntos .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-ntos .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-ntos .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-ntos .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-ntos .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-ntos .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-ntos .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-ntos .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-ntos .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-ntos .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-ntos .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-ntos .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-ntos .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-ntos .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-ntos .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-ntos .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-ntos .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-ntos .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-ntos .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-ntos .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-ntos .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-ntos .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-ntos .Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.theme-ntos .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-ntos .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-ntos .Button--color--transparent{background-color:rgba(27,38,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--transparent:hover{background-color:rgba(44,57,73,.81);color:#fff}.theme-ntos .Button--color--default{background-color:#384e68;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--default:hover{background-color:#4f6885;color:#fff}.theme-ntos .Button--color--default--translucent{background-color:rgba(35,47,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--default--translucent:hover{background-color:rgba(56,69,84,.5);color:#fff}.theme-ntos .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-ntos .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-ntos .Button--selected,.theme-ntos .Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--selected:hover,.theme-ntos .Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.theme-ntos .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-ntos .NumberInput--fluid{display:block}.theme-ntos .NumberInput__content{margin-left:.5em}.theme-ntos .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-ntos .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.theme-ntos .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-ntos .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-ntos .Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-ntos .Input--fluid{display:block;width:auto}.theme-ntos .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-ntos .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-ntos .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-ntos .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-ntos .TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-ntos .TextArea--fluid{display:block;width:auto;height:auto}.theme-ntos .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-ntos .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-ntos .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-ntos .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-ntos .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-ntos .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-ntos .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-ntos .Knob__popupValue,.theme-ntos .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .Knob__popupValue--right{top:.25rem;right:-50%}.theme-ntos .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-ntos .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-ntos .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-ntos .Knob__ringFillPivot{transform:rotate(135deg)}.theme-ntos .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-ntos .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-ntos .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-ntos .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-ntos .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-ntos .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-ntos .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-ntos .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-ntos .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-ntos .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-ntos .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-ntos .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-ntos .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-ntos .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-ntos .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-ntos .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-ntos .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-ntos .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-ntos .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-ntos .Slider:not(.Slider__disabled){cursor:e-resize}.theme-ntos .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-ntos .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-ntos .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-ntos .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-ntos .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:.0833333333em solid #3e6189}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.theme-ntos .ProgressBar--color--disabled{border:1px solid #999}.theme-ntos .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-ntos .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-ntos .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-ntos .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-ntos .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-ntos .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-ntos .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-ntos .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-ntos .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-ntos .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-ntos .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-ntos .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-ntos .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-ntos .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-ntos .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-ntos .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-ntos .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-ntos .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-ntos .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-ntos .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-ntos .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-ntos .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-ntos .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-ntos .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-ntos .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-ntos .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-ntos .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-ntos .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-ntos .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-ntos .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-ntos .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-ntos .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-ntos .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-ntos .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-ntos .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-ntos .Chat{color:#abc6ec}.theme-ntos .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-ntos .Chat__badge:before{content:"x"}.theme-ntos .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-ntos .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-ntos .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-ntos .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#121922}.theme-ntos .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-ntos .Chat__highlight{color:#000}.theme-ntos .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-ntos .ChatMessage{word-wrap:break-word}.theme-ntos .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-ntos .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-ntos html,.theme-ntos body{scrollbar-color:#2a3b4f #141d26}.theme-ntos .Layout,.theme-ntos .Layout *{scrollbar-base-color:#141d26;scrollbar-face-color:#2a3b4f;scrollbar-3dlight-color:#1b2633;scrollbar-highlight-color:#1b2633;scrollbar-track-color:#141d26;scrollbar-arrow-color:#7290b4;scrollbar-shadow-color:#2a3b4f}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-ntos .Layout__content--flexRow{display:flex;flex-flow:row}.theme-ntos .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-ntos .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-ntos .Layout__content--noMargin{margin:0}.theme-ntos .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b2633;background-image:linear-gradient(to bottom,#1b2633,#1b2633)}.theme-ntos .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-ntos .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-ntos .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-ntos .Window__contentPadding:after{height:0}.theme-ntos .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-ntos .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,63,78,.25);pointer-events:none}.theme-ntos .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-ntos .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-ntos .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-ntos .TitleBar{background-color:#1b2633;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#1b2633;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-ntos .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-ntos .boxed_message{background:#1c242e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-ntos .boxed_message.left_align_text{text-align:left}.theme-ntos .boxed_message.red_border{background:#2e1c1c;border-color:#a00}.theme-ntos .boxed_message.green_border{background:#1c2e22;border-color:#0f0}.theme-ntos .boxed_message.purple_border{background:#221c2e;border-color:#8000ff}.theme-ntos .boxed_message.notice_border{background:#1f2633;border-color:#6685f5}.theme-ntos .boxed_message.thick_border{border-width:thick}.theme-syndicate .color-black{color:#1a1a1a!important}.theme-syndicate .color-white{color:#fff!important}.theme-syndicate .color-red{color:#df3e3e!important}.theme-syndicate .color-orange{color:#f37f33!important}.theme-syndicate .color-yellow{color:#fbda21!important}.theme-syndicate .color-olive{color:#cbe41c!important}.theme-syndicate .color-green{color:#25ca4c!important}.theme-syndicate .color-teal{color:#00d6cc!important}.theme-syndicate .color-blue{color:#2e93de!important}.theme-syndicate .color-violet{color:#7349cf!important}.theme-syndicate .color-purple{color:#ad45d0!important}.theme-syndicate .color-pink{color:#e34da1!important}.theme-syndicate .color-brown{color:#b97447!important}.theme-syndicate .color-grey{color:#848484!important}.theme-syndicate .color-good{color:#68c22d!important}.theme-syndicate .color-average{color:#f29a29!important}.theme-syndicate .color-bad{color:#df3e3e!important}.theme-syndicate .color-label{color:#b89797!important}.theme-syndicate .color-gold{color:#f3b22f!important}.theme-syndicate .color-bg-black{background-color:#000!important}.theme-syndicate .color-bg-white{background-color:#d9d9d9!important}.theme-syndicate .color-bg-red{background-color:#bd2020!important}.theme-syndicate .color-bg-orange{background-color:#d95e0c!important}.theme-syndicate .color-bg-yellow{background-color:#d9b804!important}.theme-syndicate .color-bg-olive{background-color:#9aad14!important}.theme-syndicate .color-bg-green{background-color:#1b9638!important}.theme-syndicate .color-bg-teal{background-color:#009a93!important}.theme-syndicate .color-bg-blue{background-color:#1c71b1!important}.theme-syndicate .color-bg-violet{background-color:#552dab!important}.theme-syndicate .color-bg-purple{background-color:#8b2baa!important}.theme-syndicate .color-bg-pink{background-color:#cf2082!important}.theme-syndicate .color-bg-brown{background-color:#8c5836!important}.theme-syndicate .color-bg-grey{background-color:#646464!important}.theme-syndicate .color-bg-good{background-color:#4d9121!important}.theme-syndicate .color-bg-average{background-color:#cd7a0d!important}.theme-syndicate .color-bg-bad{background-color:#bd2020!important}.theme-syndicate .color-bg-label{background-color:#9d6f6f!important}.theme-syndicate .color-bg-gold{background-color:#d6920c!important}.theme-syndicate .color-border-black{border-color:#1a1a1a!important}.theme-syndicate .color-border-white{border-color:#fff!important}.theme-syndicate .color-border-red{border-color:#df3e3e!important}.theme-syndicate .color-border-orange{border-color:#f37f33!important}.theme-syndicate .color-border-yellow{border-color:#fbda21!important}.theme-syndicate .color-border-olive{border-color:#cbe41c!important}.theme-syndicate .color-border-green{border-color:#25ca4c!important}.theme-syndicate .color-border-teal{border-color:#00d6cc!important}.theme-syndicate .color-border-blue{border-color:#2e93de!important}.theme-syndicate .color-border-violet{border-color:#7349cf!important}.theme-syndicate .color-border-purple{border-color:#ad45d0!important}.theme-syndicate .color-border-pink{border-color:#e34da1!important}.theme-syndicate .color-border-brown{border-color:#b97447!important}.theme-syndicate .color-border-grey{border-color:#848484!important}.theme-syndicate .color-border-good{border-color:#68c22d!important}.theme-syndicate .color-border-average{border-color:#f29a29!important}.theme-syndicate .color-border-bad{border-color:#df3e3e!important}.theme-syndicate .color-border-label{border-color:#b89797!important}.theme-syndicate .color-border-gold{border-color:#f3b22f!important}.theme-syndicate .Section{position:relative;margin-bottom:.5em;background-color:#2b0101;box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #397439}.theme-syndicate .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-syndicate .Section__rest{position:relative}.theme-syndicate .Section__content{padding:.66em .5em}.theme-syndicate .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-syndicate .Section--fill{display:flex;flex-direction:column;height:100%}.theme-syndicate .Section--fill>.Section__rest{flex-grow:1}.theme-syndicate .Section--fill>.Section__rest>.Section__content{height:100%}.theme-syndicate .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-syndicate .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-syndicate .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-syndicate .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-syndicate .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-syndicate .Section .Section:first-child{margin-top:-.5em}.theme-syndicate .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-syndicate .Section .Section .Section .Section__titleText{font-size:1em}.theme-syndicate .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0;margin-bottom:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .fas,.theme-syndicate .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .fas,.theme-syndicate .Button--hasContent .far{margin-right:.25em}.theme-syndicate .Button--hasContent.Button--iconRight .fa,.theme-syndicate .Button--hasContent.Button--iconRight .fas,.theme-syndicate .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--circular{border-radius:50%}.theme-syndicate .Button--compact{padding:0 .25em;line-height:1.333em}.theme-syndicate .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-syndicate .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-syndicate .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black:hover{background-color:#101010;color:#fff}.theme-syndicate .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-syndicate .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-syndicate .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-syndicate .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-syndicate .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-syndicate .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-syndicate .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-syndicate .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-syndicate .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-syndicate .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-syndicate .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-syndicate .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-syndicate .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-syndicate .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-syndicate .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-syndicate .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-syndicate .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-syndicate .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-syndicate .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-syndicate .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-syndicate .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-syndicate .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-syndicate .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-syndicate .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-syndicate .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-syndicate .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-syndicate .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-syndicate .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-syndicate .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-syndicate .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--label{background-color:#9d6f6f;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label:hover{background-color:#b89696;color:#fff}.theme-syndicate .Button--color--label--translucent{background-color:rgba(157,111,111,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label--translucent:hover{background-color:rgba(184,150,150,.5);color:#fff}.theme-syndicate .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-syndicate .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-syndicate .Button--color--transparent{background-color:rgba(77,2,2,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--transparent:hover{background-color:rgba(103,14,14,.81);color:#fff}.theme-syndicate .Button--color--default{background-color:#397439;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default:hover{background-color:#509350;color:#fff}.theme-syndicate .Button--color--default--translucent{background-color:rgba(88,8,8,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default--translucent:hover{background-color:rgba(115,25,25,.5);color:#fff}.theme-syndicate .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-syndicate .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-syndicate .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-syndicate .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important;color:rgba(255,255,255,.75)!important}.theme-syndicate .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-syndicate .Button--selected,.theme-syndicate .Button--selected--translucent{background-color:#9d0808;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--selected:hover,.theme-syndicate .Button--selected--translucent:hover{background-color:#c11919;color:#fff}.theme-syndicate .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#910101;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.theme-syndicate .NoticeBox--color--black{color:#fff;background-color:#000}.theme-syndicate .NoticeBox--color--white{color:#000;background-color:#b3b3b3}.theme-syndicate .NoticeBox--color--red{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--orange{color:#fff;background-color:#854114}.theme-syndicate .NoticeBox--color--yellow{color:#000;background-color:#83710d}.theme-syndicate .NoticeBox--color--olive{color:#000;background-color:#576015}.theme-syndicate .NoticeBox--color--green{color:#fff;background-color:#174e24}.theme-syndicate .NoticeBox--color--teal{color:#fff;background-color:#064845}.theme-syndicate .NoticeBox--color--blue{color:#fff;background-color:#1b4565}.theme-syndicate .NoticeBox--color--violet{color:#fff;background-color:#3b2864}.theme-syndicate .NoticeBox--color--purple{color:#fff;background-color:#542663}.theme-syndicate .NoticeBox--color--pink{color:#fff;background-color:#802257}.theme-syndicate .NoticeBox--color--brown{color:#fff;background-color:#4c3729}.theme-syndicate .NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.theme-syndicate .NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.theme-syndicate .NoticeBox--color--average{color:#fff;background-color:#7b4e13}.theme-syndicate .NoticeBox--color--bad{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--label{color:#fff;background-color:#635c5c}.theme-syndicate .NoticeBox--color--gold{color:#fff;background-color:#825d13}.theme-syndicate .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-syndicate .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-syndicate .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-syndicate .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#87ce87;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:.5em}.theme-syndicate .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-syndicate .Input--disabled{color:#777;border-color:#6b6b6b;border-color:rgba(107,107,107,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-syndicate .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-syndicate .TextArea{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-syndicate .TextArea--fluid{display:block;width:auto;height:auto}.theme-syndicate .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-syndicate .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-syndicate .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-syndicate .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-syndicate .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-syndicate .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-syndicate .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-syndicate .Knob__popupValue,.theme-syndicate .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .Knob__popupValue--right{top:.25rem;right:-50%}.theme-syndicate .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-syndicate .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-syndicate .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-syndicate .Knob__ringFillPivot{transform:rotate(135deg)}.theme-syndicate .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-syndicate .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-syndicate .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-syndicate .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-syndicate .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-syndicate .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-syndicate .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-syndicate .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-syndicate .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-syndicate .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-syndicate .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-syndicate .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-syndicate .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-syndicate .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-syndicate .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-syndicate .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-syndicate .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-syndicate .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--label .Knob__ringFill{stroke:#b89797}.theme-syndicate .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-syndicate .Slider:not(.Slider__disabled){cursor:e-resize}.theme-syndicate .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-syndicate .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-syndicate .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-syndicate .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-syndicate .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:.0833333333em solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .ProgressBar--color--disabled{border:1px solid #999}.theme-syndicate .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-syndicate .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-syndicate .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-syndicate .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-syndicate .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-syndicate .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-syndicate .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-syndicate .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-syndicate .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-syndicate .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-syndicate .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-syndicate .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-syndicate .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-syndicate .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-syndicate .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-syndicate .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-syndicate .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-syndicate .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-syndicate .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-syndicate .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-syndicate .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-syndicate .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-syndicate .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-syndicate .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-syndicate .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-syndicate .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-syndicate .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-syndicate .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-syndicate .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-syndicate .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-syndicate .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-syndicate .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--label{border:.0833333333em solid #9d6f6f!important}.theme-syndicate .ProgressBar--color--label .ProgressBar__fill{background-color:#9d6f6f}.theme-syndicate .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-syndicate .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-syndicate .Chat{color:#abc6ec}.theme-syndicate .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-syndicate .Chat__badge:before{content:"x"}.theme-syndicate .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-syndicate .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-syndicate .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-syndicate .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#2b0101}.theme-syndicate .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-syndicate .Chat__highlight{color:#000}.theme-syndicate .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-syndicate .ChatMessage{word-wrap:break-word}.theme-syndicate .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-syndicate .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-syndicate html,.theme-syndicate body{scrollbar-color:#770303 #3a0202}.theme-syndicate .Layout,.theme-syndicate .Layout *{scrollbar-base-color:#3a0202;scrollbar-face-color:#770303;scrollbar-3dlight-color:#4d0202;scrollbar-highlight-color:#4d0202;scrollbar-track-color:#3a0202;scrollbar-arrow-color:#fa2d2d;scrollbar-shadow-color:#770303}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-syndicate .Layout__content--flexRow{display:flex;flex-flow:row}.theme-syndicate .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-syndicate .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-syndicate .Layout__content--noMargin{margin:0}.theme-syndicate .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#4d0202;background-image:linear-gradient(to bottom,#4d0202,#4d0202)}.theme-syndicate .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-syndicate .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-syndicate .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-syndicate .Window__contentPadding:after{height:0}.theme-syndicate .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-syndicate .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(108,22,22,.25);pointer-events:none}.theme-syndicate .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-syndicate .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-syndicate .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-syndicate .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-syndicate .adminooc{color:#29ccbe}.theme-syndicate .debug{color:#8f39e6}.theme-syndicate .boxed_message{background:rgba(20,20,35,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-syndicate .boxed_message.left_align_text{text-align:left}.theme-syndicate .boxed_message.red_border{background:rgba(0,0,0,.2);border-color:red}.theme-syndicate .boxed_message.green_border{background:rgba(0,75,0,.25);border-color:#0f0}.theme-syndicate .boxed_message.purple_border{background:rgba(25,0,50,.25);border-color:#8000ff}.theme-syndicate .boxed_message.notice_border{background:rgba(0,0,75,.25);border-color:#6685f5}.theme-syndicate .boxed_message.thick_border{border-width:thick}.theme-paradise .color-black{color:#1a1a1a!important}.theme-paradise .color-white{color:#fff!important}.theme-paradise .color-red{color:#df3e3e!important}.theme-paradise .color-orange{color:#f37f33!important}.theme-paradise .color-yellow{color:#fbda21!important}.theme-paradise .color-olive{color:#cbe41c!important}.theme-paradise .color-green{color:#25ca4c!important}.theme-paradise .color-teal{color:#00d6cc!important}.theme-paradise .color-blue{color:#2e93de!important}.theme-paradise .color-violet{color:#7349cf!important}.theme-paradise .color-purple{color:#ad45d0!important}.theme-paradise .color-pink{color:#e34da1!important}.theme-paradise .color-brown{color:#b97447!important}.theme-paradise .color-grey{color:#848484!important}.theme-paradise .color-good{color:#68c22d!important}.theme-paradise .color-average{color:#f29a29!important}.theme-paradise .color-bad{color:#df3e3e!important}.theme-paradise .color-label{color:#b8a497!important}.theme-paradise .color-gold{color:#f3b22f!important}.theme-paradise .color-bg-black{background-color:#000!important}.theme-paradise .color-bg-white{background-color:#d9d9d9!important}.theme-paradise .color-bg-red{background-color:#bd2020!important}.theme-paradise .color-bg-orange{background-color:#d95e0c!important}.theme-paradise .color-bg-yellow{background-color:#d9b804!important}.theme-paradise .color-bg-olive{background-color:#9aad14!important}.theme-paradise .color-bg-green{background-color:#1b9638!important}.theme-paradise .color-bg-teal{background-color:#009a93!important}.theme-paradise .color-bg-blue{background-color:#1c71b1!important}.theme-paradise .color-bg-violet{background-color:#552dab!important}.theme-paradise .color-bg-purple{background-color:#8b2baa!important}.theme-paradise .color-bg-pink{background-color:#cf2082!important}.theme-paradise .color-bg-brown{background-color:#8c5836!important}.theme-paradise .color-bg-grey{background-color:#646464!important}.theme-paradise .color-bg-good{background-color:#4d9121!important}.theme-paradise .color-bg-average{background-color:#cd7a0d!important}.theme-paradise .color-bg-bad{background-color:#bd2020!important}.theme-paradise .color-bg-label{background-color:#9d826f!important}.theme-paradise .color-bg-gold{background-color:#d6920c!important}.theme-paradise .color-border-black{border-color:#1a1a1a!important}.theme-paradise .color-border-white{border-color:#fff!important}.theme-paradise .color-border-red{border-color:#df3e3e!important}.theme-paradise .color-border-orange{border-color:#f37f33!important}.theme-paradise .color-border-yellow{border-color:#fbda21!important}.theme-paradise .color-border-olive{border-color:#cbe41c!important}.theme-paradise .color-border-green{border-color:#25ca4c!important}.theme-paradise .color-border-teal{border-color:#00d6cc!important}.theme-paradise .color-border-blue{border-color:#2e93de!important}.theme-paradise .color-border-violet{border-color:#7349cf!important}.theme-paradise .color-border-purple{border-color:#ad45d0!important}.theme-paradise .color-border-pink{border-color:#e34da1!important}.theme-paradise .color-border-brown{border-color:#b97447!important}.theme-paradise .color-border-grey{border-color:#848484!important}.theme-paradise .color-border-good{border-color:#68c22d!important}.theme-paradise .color-border-average{border-color:#f29a29!important}.theme-paradise .color-border-bad{border-color:#df3e3e!important}.theme-paradise .color-border-label{border-color:#b8a497!important}.theme-paradise .color-border-gold{border-color:#f3b22f!important}.theme-paradise .Section{position:relative;margin-bottom:.5em;background-color:#40071a;background-color:rgba(0,0,0,.5);box-sizing:border-box}.theme-paradise .Section:last-child{margin-bottom:0}.theme-paradise .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #208080}.theme-paradise .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-paradise .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-paradise .Section__rest{position:relative}.theme-paradise .Section__content{padding:.66em .5em}.theme-paradise .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-paradise .Section--fill{display:flex;flex-direction:column;height:100%}.theme-paradise .Section--fill>.Section__rest{flex-grow:1}.theme-paradise .Section--fill>.Section__rest>.Section__content{height:100%}.theme-paradise .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-paradise .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-paradise .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-paradise .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-paradise .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-paradise .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-paradise .Section .Section:first-child{margin-top:-.5em}.theme-paradise .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-paradise .Section .Section .Section .Section__titleText{font-size:1em}.theme-paradise .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-paradise .Button:last-child{margin-right:0;margin-bottom:0}.theme-paradise .Button .fa,.theme-paradise .Button .fas,.theme-paradise .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-paradise .Button--hasContent .fa,.theme-paradise .Button--hasContent .fas,.theme-paradise .Button--hasContent .far{margin-right:.25em}.theme-paradise .Button--hasContent.Button--iconRight .fa,.theme-paradise .Button--hasContent.Button--iconRight .fas,.theme-paradise .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-paradise .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-paradise .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-paradise .Button--circular{border-radius:50%}.theme-paradise .Button--compact{padding:0 .25em;line-height:1.333em}.theme-paradise .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-paradise .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-paradise .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--black:hover{background-color:#101010;color:#fff}.theme-paradise .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-paradise .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-paradise .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-paradise .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-paradise .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-paradise .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-paradise .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-paradise .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-paradise .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-paradise .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-paradise .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-paradise .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-paradise .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-paradise .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-paradise .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-paradise .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-paradise .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-paradise .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-paradise .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-paradise .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-paradise .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-paradise .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-paradise .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-paradise .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-paradise .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-paradise .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-paradise .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-paradise .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--label{background-color:#9d826f;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--label:hover{background-color:#b8a396;color:#fff}.theme-paradise .Button--color--label--translucent{background-color:rgba(157,130,111,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--label--translucent:hover{background-color:rgba(184,163,150,.5);color:#fff}.theme-paradise .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-paradise .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-paradise .Button--color--transparent{background-color:rgba(128,13,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--transparent:hover{background-color:rgba(164,27,73,.81);color:#fff}.theme-paradise .Button--color--default{background-color:#208080;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--default:hover{background-color:#34a0a0;color:#fff}.theme-paradise .Button--color--default--translucent{background-color:rgba(141,20,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--default--translucent:hover{background-color:rgba(175,39,84,.5);color:#fff}.theme-paradise .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--danger{background-color:#8c1eff;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger:hover{background-color:#ae61ff;color:#fff}.theme-paradise .Button--color--danger--translucent{background-color:rgba(140,30,255,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger--translucent:hover{background-color:rgba(174,97,255,.5);color:#fff}.theme-paradise .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-paradise .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-paradise .Button--selected,.theme-paradise .Button--selected--translucent{background-color:#bf6030;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--selected:hover,.theme-paradise .Button--selected--translucent:hover{background-color:#d4835a;color:#fff}.theme-paradise .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;color:#e65c2e;background-color:rgba(0,0,0,.25);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-paradise .NumberInput--fluid{display:block}.theme-paradise .NumberInput__content{margin-left:.5em}.theme-paradise .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-paradise .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #e65c2e;background-color:#e65c2e}.theme-paradise .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,.25);color:#fff;text-align:right}.theme-paradise .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-paradise .Input--disabled{color:#777;border-color:#4a4a4a;border-color:rgba(74,74,74,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-paradise .Input--fluid{display:block;width:auto}.theme-paradise .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-paradise .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-paradise .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-paradise .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-paradise .TextArea{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-paradise .TextArea--fluid{display:block;width:auto;height:auto}.theme-paradise .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-paradise .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-paradise .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-paradise .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-paradise .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-paradise .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-paradise .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-paradise .Knob__popupValue,.theme-paradise .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .Knob__popupValue--right{top:.25rem;right:-50%}.theme-paradise .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-paradise .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-paradise .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-paradise .Knob__ringFillPivot{transform:rotate(135deg)}.theme-paradise .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-paradise .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-paradise .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-paradise .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-paradise .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-paradise .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-paradise .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-paradise .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-paradise .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-paradise .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-paradise .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-paradise .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-paradise .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-paradise .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-paradise .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-paradise .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-paradise .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-paradise .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--label .Knob__ringFill{stroke:#b8a497}.theme-paradise .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-paradise .Slider:not(.Slider__disabled){cursor:e-resize}.theme-paradise .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-paradise .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-paradise .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-paradise .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-paradise .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-paradise .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-paradise .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-paradise .ProgressBar--color--default{border:.0833333333em solid #1b6d6d}.theme-paradise .ProgressBar--color--default .ProgressBar__fill{background-color:#1b6d6d}.theme-paradise .ProgressBar--color--disabled{border:1px solid #999}.theme-paradise .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-paradise .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-paradise .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-paradise .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-paradise .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-paradise .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-paradise .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-paradise .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-paradise .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-paradise .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-paradise .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-paradise .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-paradise .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-paradise .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-paradise .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-paradise .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-paradise .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-paradise .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-paradise .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-paradise .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-paradise .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-paradise .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-paradise .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-paradise .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-paradise .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-paradise .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-paradise .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-paradise .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-paradise .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-paradise .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-paradise .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-paradise .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--label{border:.0833333333em solid #9d826f!important}.theme-paradise .ProgressBar--color--label .ProgressBar__fill{background-color:#9d826f}.theme-paradise .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-paradise .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-paradise .Chat{color:#abc6ec}.theme-paradise .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-paradise .Chat__badge:before{content:"x"}.theme-paradise .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-paradise .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-paradise .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-paradise .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#fff;background-color:#db2828}.theme-paradise .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-paradise .Chat__highlight{color:#000}.theme-paradise .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-paradise .ChatMessage{word-wrap:break-word}.theme-paradise .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-paradise .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-paradise html,.theme-paradise body{scrollbar-color:#cb1551 #680b29}.theme-paradise .Layout,.theme-paradise .Layout *{scrollbar-base-color:#680b29;scrollbar-face-color:#99103d;scrollbar-3dlight-color:#800d33;scrollbar-highlight-color:#800d33;scrollbar-track-color:#680b29;scrollbar-arrow-color:#ea2e6c;scrollbar-shadow-color:#99103d}.theme-paradise .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-paradise .Layout__content--flexRow{display:flex;flex-flow:row}.theme-paradise .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-paradise .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-paradise .Layout__content--noMargin{margin:0}.theme-paradise .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#800d33;background-image:linear-gradient(to bottom,#80014b,#80460d)}.theme-paradise .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-paradise .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-paradise .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-paradise .Window__contentPadding:after{height:0}.theme-paradise .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-paradise .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(166,34,78,.25);pointer-events:none}.theme-paradise .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-paradise .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-paradise .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-paradise .TitleBar{background-color:#800d33;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-paradise .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#800d33;transition:color .25s,background-color .25s}.theme-paradise .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-paradise .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-paradise .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-paradise .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-paradise .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-paradise .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-paradise .adminooc{color:#29ccbe}.theme-paradise .debug{color:#8f39e6}.theme-paradise .boxed_message{background:rgba(0,0,0,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-paradise .boxed_message.left_align_text{text-align:left}.theme-paradise .boxed_message.red_border{background:rgba(0,0,0,.25);border-color:#a00}.theme-paradise .boxed_message.green_border{background:rgba(0,0,0,.25);border-color:#0f0}.theme-paradise .boxed_message.purple_border{background:rgba(0,0,0,.25);border-color:#8000ff}.theme-paradise .boxed_message.notice_border{background:rgba(0,0,0,.25);border-color:#6685f5}.theme-paradise .boxed_message.thick_border{border-width:thick} +html,body{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-gold{color:#f3b22f!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.color-bg-gold{background-color:#d6920c!important}.color-border-black{border-color:#1a1a1a!important}.color-border-white{border-color:#fff!important}.color-border-red{border-color:#df3e3e!important}.color-border-orange{border-color:#f37f33!important}.color-border-yellow{border-color:#fbda21!important}.color-border-olive{border-color:#cbe41c!important}.color-border-green{border-color:#25ca4c!important}.color-border-teal{border-color:#00d6cc!important}.color-border-blue{border-color:#2e93de!important}.color-border-violet{border-color:#7349cf!important}.color-border-purple{border-color:#ad45d0!important}.color-border-pink{border-color:#e34da1!important}.color-border-brown{border-color:#b97447!important}.color-border-grey{border-color:#848484!important}.color-border-good{border-color:#68c22d!important}.color-border-average{border-color:#f29a29!important}.color-border-bad{border-color:#df3e3e!important}.color-border-label{border-color:#8b9bb0!important}.color-border-gold{border-color:#f3b22f!important}.debug-layout,.debug-layout *:not(g):not(path){color:rgba(255,255,255,.9)!important;background:rgba(0,0,0,0)!important;outline:1px solid rgba(255,255,255,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout *:not(g):not(path):hover{outline-color:rgba(255,255,255,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.outline-color-gold{outline:.167rem solid #f3b22f!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .fas,.Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .fas,.Button--hasContent .far{margin-right:.25em}.Button--hasContent.Button--iconRight .fa,.Button--hasContent.Button--iconRight .fas,.Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--multiLine{white-space:normal;word-wrap:break-word}.Button--modal{float:right;z-index:1;margin-top:-.5rem}.Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.Button--color--black:hover{background-color:#101010;color:#fff}.Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.Button--color--white:hover{background-color:#f8f8f8;color:#000}.Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--red:hover{background-color:#d93f3f;color:#fff}.Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.Button--color--orange:hover{background-color:#ef7e33;color:#fff}.Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--yellow:hover{background-color:#f5d523;color:#000}.Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.Button--color--olive:hover{background-color:#bdd327;color:#fff}.Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--color--green:hover{background-color:#2fb94f;color:#fff}.Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.Button--color--teal:hover{background-color:#10bdb6;color:#fff}.Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.Button--color--blue:hover{background-color:#308fd6;color:#fff}.Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.Button--color--violet:hover{background-color:#7249ca;color:#fff}.Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.Button--color--purple:hover{background-color:#aa46ca;color:#fff}.Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.Button--color--pink:hover{background-color:#e04ca0;color:#fff}.Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.Button--color--brown:hover{background-color:#ae724c;color:#fff}.Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.Button--color--grey:hover{background-color:#818181;color:#fff}.Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.Button--color--good:hover{background-color:#67b335;color:#fff}.Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.Button--color--average:hover{background-color:#eb972b;color:#fff}.Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--bad:hover{background-color:#d93f3f;color:#fff}.Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.Button--color--label:hover{background-color:#8a9aae;color:#fff}.Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.Button--color--gold:hover{background-color:#eeaf30;color:#fff}.Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.Button--color--transparent{background-color:rgba(32,32,32,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--transparent:hover{background-color:rgba(50,50,50,.81);color:#fff}.Button--color--default{background-color:#3e6189;color:#fff;transition:color .2s,background-color .2s}.Button--color--default:hover{background-color:#567daa;color:#fff}.Button--color--default--translucent{background-color:rgba(40,40,40,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--default--translucent:hover{background-color:rgba(61,61,61,.5);color:#fff}.Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--caution:hover{background-color:#f5d523;color:#000}.Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--danger:hover{background-color:#d93f3f;color:#fff}.Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.Button--selected,.Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--selected:hover,.Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Dropdown{position:relative;align-items:center}.Dropdown__control{display:inline-block;align-items:center;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.3333333333em;-ms-user-select:none;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.35em;width:1.2em;height:1.8333333333em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;align-items:center;z-index:5;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-scroll{overflow-y:scroll}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s ease-out}.Dropdown__menuentry.selected{background-color:rgba(255,255,255,.5)!important;transition:background-color 0ms}.Dropdown__menuentry:hover{background-color:rgba(255,255,255,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.Dropdown__selected-text{display:inline-block;text-overflow:ellipsis;white-space:nowrap;height:1.4166666667em;width:calc(100% - 1.2em);text-align:left;padding-top:2.5px}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:block}.Flex--iefix.Flex--inline,.Flex__item--iefix{display:inline-block}.Flex--iefix--column>.Flex__item--iefix{display:block}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue,.Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Knob__popupValue--right{top:.25rem;right:-50%}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.LabeledList__breakContents{word-break:break-all;word-wrap:break-word}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem;scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--color--gold{color:#fff;background-color:#825d13}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--disabled{border:1px solid #999}.ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.Section .Section:first-child{margin-top:-.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Slider:not(.Slider__disabled){cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--zebra>.Stack__item:nth-child(2n){background-color:#131313}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#131313}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075);transition:background-color 0}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.Tabs--vertical .Tab--selected{border-left:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#8b9bb0}.Tab--selected.Tab--color--gold{color:#f6c563}.Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#f3b22f}.Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#f3b22f}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:opacity .15s ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid rgba(140,140,140,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;top:1em;left:.75em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}html,body{scrollbar-color:#363636 #181818}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.Layout__content--flexRow{display:flex;flex-flow:row}.Layout__content--flexColumn{display:flex;flex-flow:column}.Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.Layout__content--noMargin{margin:0}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(to bottom,#202020,#202020)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}a{color:#397ea5}em{font-style:normal;font-weight:700}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}.emoji{max-height:16px;max-width:16px}.emoji16x16{vertical-align:middle}.italic,.italics,.emote{font-style:italic}.bold{font-weight:700}.bolditalics{font-style:italic;font-weight:700}.center{text-align:center}.big{font-size:150%}.reallybig{font-size:175%}.sans{font-family:Comic Sans MS,cursive,sans-serif}.wingdings{font-family:Wingdings,Webdings}.robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.hidden{display:none;visibility:hidden}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:link,.motd a:active,.motd a:hover{color:#a4bad6}.memo{color:#638500;text-align:center}.memoedit{text-align:center;font-size:75%}.ooc{font-weight:700}.looc{color:#69c;font-weight:700}.discordpm{color:#6685f5}.debug{color:#6d2f83}.deadsay{color:#e2c1ff}.darkmblue{color:#6685f5}.prefix,.name,.yell{font-weight:700}.mentorhelp{color:#07b;font-weight:700}.mentor_channel{color:#775bff;font-weight:700}.mentor_channel_admin{color:#a35cff;font-weight:700}.admin{color:#386aff;font-weight:700}.adminhelp{color:#a00;font-weight:700}.adminticket{color:#3daf21;font-weight:700}.adminticketalt{color:#ccb847;font-weight:700}.admin_channel{color:#03fc9d;font-weight:700}.all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.dev_channel{color:#61b413;font-weight:700}.dev_channel_admin{color:#9ef14f;font-weight:700}.radio{color:#20b142}.deptradio{color:#939}.comradio{color:#5f5cff}.syndradio{color:#8f4a4b}.dsquadradio{color:#998599}.airadio{color:#ff5ed7}.centradio{color:#2681a5}.secradio{color:#dd3535}.engradio{color:#feac20}.medradio{color:#00b5ad}.sciradio{color:#c68cfa}.supradio{color:#b88646}.srvradio{color:#bbd164}.proradio{color:#b84f92}.alert{color:#d82020}h1.alert,h2.alert{color:#a4bad6}.ghostalert{color:#cc00c6;font-style:italic;font-weight:700}.warning{color:#c51e1e;font-style:italic}.boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.danger{color:#c51e1e;font-weight:700}.biggerdanger{color:red;font-weight:700;font-size:150%}.userdanger{color:#c51e1e;font-weight:700;font-size:120%}.attack{color:red}.disarm{color:#900}.moderate{color:#c00}.notice{color:#6685f5}.boldnotice{color:#6685f5;font-weight:700}.suicide{color:#ff5050;font-style:italic}.announcement h1,.announcement h2{color:#a4bad6;margin:8pt 0;line-height:1.2}.announcement p{color:#d82020;line-height:1.3}.announcement.minor h1{font-size:180%}.announcement.minor h2{font-size:170%}.announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.boldannounceic,.boldannounceooc,.pr_announce{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.alien{color:#c433c4}.noticealien{color:#00c000}.alertalien{color:#00c000;font-weight:700}.terrorspider{color:#cf52fa}.dantalion{color:#8b2c5e}.chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.chaosgood{color:#19e0c0;font-weight:700}.chaosneutral{color:#479ac0;font-weight:700}.chaosbad{color:#9047c0;font-weight:700}.chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.sinister{color:purple;font-weight:700;font-style:italic}.blob{color:#ee4000;font-style:italic}.revennotice{color:#6685f5}.revenbignotice{color:#6685f5;font-weight:700;font-size:120%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:120%}.changeling{color:#00b4de}.abductor{color:purple;font-style:italic}.mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.cult{color:purple;font-weight:700;font-style:italic}.cultspeech{color:#af0000;font-style:italic}.cultitalic{color:#a60000;font-style:italic}.cultlarge{color:#a60000;font-weight:700;font-size:120%}.narsie{color:#a60000;font-weight:700;font-size:300%}.narsiesmall{color:#a60000;font-weight:700;font-size:200%}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.zombie{color:#7c4848}.zombielarge{color:#7c4848;font-weight:700;font-size:120%}.colossus{color:#7f282a;font-size:175%}.hierophant{color:#609;font-weight:700;font-style:italic}.hierophant_warning{color:#609;font-style:italic}.tajaran{color:#803b56}.skrell{color:#00ced1}.solcom{color:#8282fb}.com_srus{color:#7c4848}.zombie{color:red}.soghun{color:#228b22}.vox{color:#a0a}.diona{color:#804000;font-weight:700}.trinary{color:#727272}.kidan{color:#c64c05}.slime{color:#07a}.drask{color:#a3d4eb;font-family:Arial Black}.moth{color:#869b29;font-family:Copperplate}.clown{color:red}.vulpkanin{color:#b97a57}.gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.tradeband{font-family:Georgia,Verdana,sans-serif}.rose{color:#ff5050}.interface{color:#9031c4}.greentext{color:#0f0;font-size:150%}.redtext{color:red;font-size:150%}.red{color:red}.green{color:#03bb39}.purple{color:#9031c4}.orange{color:orange}.resonate{color:#298f85}.healthscan_oxy{color:#5cc9ff}.specialnotice{color:#4a6f82;font-weight:700;font-size:120%}.whisper{font-style:italic;color:#ccc}span.body .codephrases{color:#55f}span.body .coderesponses{color:#f33}.oxygen{color:#449dff}.nitrogen{color:#f94541}.carbon_dioxide{color:#ccc}.plasma{color:#eb6b00}.sleeping_agent{color:#f28b89}.agent_b{color:teal}.boxed_message{background:#17191c;border:1px solid rgba(166,183,217,.25);border-width:.0833333333em .4166666667em;margin:.5em .25em;padding:.5em .75em;border-radius:.5em;text-align:center}.boxed_message.red_border{background:#1f1414;border-color:rgba(255,0,0,.5)}.boxed_message.green_border{background:#141f18;border-color:rgba(0,255,0,.5)}.boxed_message.purple_border{background:#1d1828;border-color:rgba(170,128,255,.5)}.boxed_message.notice_border{background:#14181f;border-color:rgba(85,126,246,.5)}.boxed_message.thick_border{border-width:.5em}.boxed_message.left_align_text{text-align:left}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-gold{color:#e39b0d!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .color-bg-gold{background-color:#bd810b!important}.theme-light .color-border-black{border-color:#000!important}.theme-light .color-border-white{border-color:#e6e6e6!important}.theme-light .color-border-red{border-color:#c82121!important}.theme-light .color-border-orange{border-color:#e6630d!important}.theme-light .color-border-yellow{border-color:#e5c304!important}.theme-light .color-border-olive{border-color:#a3b816!important}.theme-light .color-border-green{border-color:#1d9f3b!important}.theme-light .color-border-teal{border-color:#00a39c!important}.theme-light .color-border-blue{border-color:#1e78bb!important}.theme-light .color-border-violet{border-color:#5a30b5!important}.theme-light .color-border-purple{border-color:#932eb4!important}.theme-light .color-border-pink{border-color:#db228a!important}.theme-light .color-border-brown{border-color:#955d39!important}.theme-light .color-border-grey{border-color:#e6e6e6!important}.theme-light .color-border-good{border-color:#529923!important}.theme-light .color-border-average{border-color:#da810e!important}.theme-light .color-border-bad{border-color:#c82121!important}.theme-light .color-border-label{border-color:#353535!important}.theme-light .color-border-gold{border-color:#e39b0d!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-light .Tabs--fill{height:100%}.theme-light .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-light .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-light .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-light .Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.theme-light .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.theme-light .Tab:not(.Tab--selected):hover{background-color:rgba(0,0,0,.075);transition:background-color 0}.theme-light .Tab--selected{background-color:rgba(0,0,0,.125);color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.theme-light .Tabs--vertical .Tab--selected{border-left:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#353535}.theme-light .Tab--selected.Tab--color--gold{color:#f4b73f}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#e39b0d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#e39b0d}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__rest{position:relative}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill>.Section__rest{flex-grow:1}.theme-light .Section--fill>.Section__rest>.Section__content{height:100%}.theme-light .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-light .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-light .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-light .Section .Section:first-child{margin-top:-.5em}.theme-light .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-light .Section .Section .Section .Section__titleText{font-size:1em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .fas,.theme-light .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .fas,.theme-light .Button--hasContent .far{margin-right:.25em}.theme-light .Button--hasContent.Button--iconRight .fa,.theme-light .Button--hasContent.Button--iconRight .fas,.theme-light .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-light .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-light .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--black:hover{background-color:#101010;color:#fff}.theme-light .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-light .Button--color--white{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--white:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--white--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--white--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--red{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--red:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--red--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--red--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--orange{background-color:#c0530b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--orange:hover{background-color:#e76d1d;color:#fff}.theme-light .Button--color--orange--translucent{background-color:rgba(192,83,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--orange--translucent:hover{background-color:rgba(231,109,29,.5);color:#fff}.theme-light .Button--color--yellow{background-color:#bfa303;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--yellow:hover{background-color:#e7c714;color:#fff}.theme-light .Button--color--yellow--translucent{background-color:rgba(191,163,3,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--yellow--translucent:hover{background-color:rgba(231,199,20,.5);color:#fff}.theme-light .Button--color--olive{background-color:#889912;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--olive:hover{background-color:#a9bc25;color:#fff}.theme-light .Button--color--olive--translucent{background-color:rgba(136,153,18,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--olive--translucent:hover{background-color:rgba(169,188,37,.5);color:#fff}.theme-light .Button--color--green{background-color:#188532;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--green:hover{background-color:#2ba648;color:#fff}.theme-light .Button--color--green--translucent{background-color:rgba(24,133,50,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--green--translucent:hover{background-color:rgba(43,166,72,.5);color:#fff}.theme-light .Button--color--teal{background-color:#008882;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--teal:hover{background-color:#10a9a2;color:#fff}.theme-light .Button--color--teal--translucent{background-color:rgba(0,136,130,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--teal--translucent:hover{background-color:rgba(16,169,162,.5);color:#fff}.theme-light .Button--color--blue{background-color:#19649c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--blue:hover{background-color:#2c81c0;color:#fff}.theme-light .Button--color--blue--translucent{background-color:rgba(25,100,156,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--blue--translucent:hover{background-color:rgba(44,129,192,.5);color:#fff}.theme-light .Button--color--violet{background-color:#4b2897;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--violet:hover{background-color:#653db9;color:#fff}.theme-light .Button--color--violet--translucent{background-color:rgba(75,40,151,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--violet--translucent:hover{background-color:rgba(101,61,185,.5);color:#fff}.theme-light .Button--color--purple{background-color:#7a2696;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--purple:hover{background-color:#9a3bb9;color:#fff}.theme-light .Button--color--purple--translucent{background-color:rgba(122,38,150,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--purple--translucent:hover{background-color:rgba(154,59,185,.5);color:#fff}.theme-light .Button--color--pink{background-color:#b61d73;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--pink:hover{background-color:#d93591;color:#fff}.theme-light .Button--color--pink--translucent{background-color:rgba(182,29,115,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--pink--translucent:hover{background-color:rgba(217,53,145,.5);color:#fff}.theme-light .Button--color--brown{background-color:#7c4d2f;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--brown:hover{background-color:#9c6745;color:#fff}.theme-light .Button--color--brown--translucent{background-color:rgba(124,77,47,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--brown--translucent:hover{background-color:rgba(156,103,69,.5);color:#fff}.theme-light .Button--color--grey{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--grey:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--grey--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--grey--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--good{background-color:#44801d;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--good:hover{background-color:#5d9f31;color:#fff}.theme-light .Button--color--good--translucent{background-color:rgba(68,128,29,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--good--translucent:hover{background-color:rgba(93,159,49,.5);color:#fff}.theme-light .Button--color--average{background-color:#b56b0b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--average:hover{background-color:#dc891d;color:#fff}.theme-light .Button--color--average--translucent{background-color:rgba(181,107,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--average--translucent:hover{background-color:rgba(220,137,29,.5);color:#fff}.theme-light .Button--color--bad{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--bad:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--bad--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--bad--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--label{background-color:#2c2c2c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--label:hover{background-color:#424242;color:#fff}.theme-light .Button--color--label--translucent{background-color:rgba(44,44,44,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--label--translucent:hover{background-color:rgba(66,66,66,.5);color:#fff}.theme-light .Button--color--gold{background-color:#bd810b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--gold:hover{background-color:#e5a11c;color:#fff}.theme-light .Button--color--gold--translucent{background-color:rgba(189,129,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--gold--translucent:hover{background-color:rgba(229,161,28,.5);color:#fff}.theme-light .Button--color--transparent{background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--transparent:hover{background-color:rgba(255,255,255,.81);color:#000}.theme-light .Button--color--default{background-color:#bbb;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--default:hover{background-color:#e3e3e3;color:#000}.theme-light .Button--color--default--translucent{background-color:rgba(251,251,251,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--default--translucent:hover{background-color:rgba(254,254,254,.5);color:#fff}.theme-light .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-light .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-light .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-light .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-light .Button--disabled{background-color:#363636!important;color:rgba(0,0,0,.75)!important}.theme-light .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(0,0,0,.5)!important}.theme-light .Button--selected,.theme-light .Button--selected--translucent{background-color:#0668b8;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--selected:hover,.theme-light .Button--selected--translucent:hover{background-color:#1785df;color:#fff}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#e6e6e6;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#e6e6e6;color:#000;text-align:right}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#e6e6e6;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-light .Input--disabled{color:#777;border-color:#000;border-color:rgba(0,0,0,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-light .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-light .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#e6e6e6;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-light .Knob__popupValue,.theme-light .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .Knob__popupValue--right{top:.25rem;right:-50%}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Knob--color--gold .Knob__ringFill{stroke:#e39b0d}.theme-light .Slider:not(.Slider__disabled){cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--disabled{border:1px solid #999}.theme-light .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .ProgressBar--color--gold{border:.0833333333em solid #bd810b!important}.theme-light .ProgressBar--color--gold .ProgressBar__fill{background-color:#bd810b}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light html,.theme-light body{scrollbar-color:#a7a7a7 #f2f2f2}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-light .Layout__content--flexRow{display:flex;flex-flow:row}.theme-light .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-light .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-light .Layout__content--noMargin{margin:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light a,.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f}.theme-light .motd,.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6,.theme-light .motd a,.theme-light .motd a:link,.theme-light .motd a:active,.theme-light .motd a:hover{color:#638500}.theme-light .looc{color:#69c}.theme-light .discordpm{color:#00f}.theme-light .debug{color:#6d2f83}.theme-light .deadsay{color:#5c00e6}.theme-light .darkmblue{color:#00f}.theme-light .mentorhelp{color:#07b}.theme-light .mentor_channel{color:#775bff}.theme-light .mentor_channel_admin{color:#a35cff}.theme-light .adminhelp{color:#a00}.theme-light .adminticket{color:#3e7336}.theme-light .adminticketalt{color:#014c8a}.theme-light .admin_channel{color:#9a04d1}.theme-light .all_admin_ping{color:#12a5f4}.theme-light .dev_channel{color:#126719}.theme-light .dev_channel_admin{color:#26a419}.theme-light .radio{color:#408010}.theme-light .deptradio{color:#939}.theme-light .comradio{color:#204090}.theme-light .syndradio{color:#6d3f40}.theme-light .dsquadradio{color:#686868}.theme-light .airadio{color:#f0f}.theme-light .centradio{color:#5c5c7c}.theme-light .secradio{color:#a30000}.theme-light .engradio{color:#a66300}.theme-light .medradio{color:#009190}.theme-light .sciradio{color:#939}.theme-light .supradio{color:#7f6539}.theme-light .srvradio{color:#80a000}.theme-light .proradio{color:#e3027a}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .ghostalert{color:#5c00e6}.theme-light .warning,.theme-light .boldwarning,.theme-light .danger,.theme-light .userdanger{color:red}.theme-light .notice,.theme-light .boldnotice{color:#009}.theme-light .announcement h1,.theme-light .announcement h2{color:#000}.theme-light .announcement.sec h1,.theme-light .boldannounceic,.theme-light .boldannounceooc{color:red}.theme-light .pr_announce{color:#228b22}.theme-light .greenannounce{color:#0f0}.theme-light .alien{color:#543354}.theme-light .terrorspider{color:#320e32}.theme-light .dantalion{color:#6a2148}.theme-light .revennotice,.theme-light .revenbignotice{color:#1d2953}.theme-light .changeling{color:purple}.theme-light .cultspeech{color:#7f0000}.theme-light .cultitalic,.theme-light .cultlarge,.theme-light .narsie,.theme-light .narsiesmall{color:#960000}.theme-light .rose{color:#ff5050}.theme-light .interface{color:#303}.theme-light .purple{color:#5e2d79}.theme-light .orange{color:orange}.theme-light .healthscan_oxy{color:#0074bd}.theme-light .specialnotice{color:#36525e}.theme-light .whisper{color:#333}.theme-light span.body .codephrases{color:#00f}.theme-light span.body .coderesponses{color:red}.theme-light .oxygen{color:#006adb}.theme-light .nitrogen{color:#d00a06}.theme-light .carbon_dioxide{color:#1f1f1f}.theme-light .plasma{color:#853c00}.theme-light .sleeping_agent{color:#e82f2c}.theme-light .agent_b{color:#004d4d}.theme-light .boxed_message{background:#f2f7ff;border-color:rgba(16,48,112,.5)}.theme-light .boxed_message.red_border{background:#fff2f2;border-color:rgba(255,0,0,.5)}.theme-light .boxed_message.green_border{background:#f2fff7;border-color:rgba(0,168,0,.5)}.theme-light .boxed_message.purple_border{background:#f7f2ff;border-color:rgba(85,0,255,.5)}.theme-light .boxed_message.notice_border{background:#f2f7ff;border-color:rgba(0,64,255,.5)}.theme-ntos .color-black{color:#1a1a1a!important}.theme-ntos .color-white{color:#fff!important}.theme-ntos .color-red{color:#df3e3e!important}.theme-ntos .color-orange{color:#f37f33!important}.theme-ntos .color-yellow{color:#fbda21!important}.theme-ntos .color-olive{color:#cbe41c!important}.theme-ntos .color-green{color:#25ca4c!important}.theme-ntos .color-teal{color:#00d6cc!important}.theme-ntos .color-blue{color:#2e93de!important}.theme-ntos .color-violet{color:#7349cf!important}.theme-ntos .color-purple{color:#ad45d0!important}.theme-ntos .color-pink{color:#e34da1!important}.theme-ntos .color-brown{color:#b97447!important}.theme-ntos .color-grey{color:#848484!important}.theme-ntos .color-good{color:#68c22d!important}.theme-ntos .color-average{color:#f29a29!important}.theme-ntos .color-bad{color:#df3e3e!important}.theme-ntos .color-label{color:#8b9bb0!important}.theme-ntos .color-gold{color:#f3b22f!important}.theme-ntos .color-bg-black{background-color:#000!important}.theme-ntos .color-bg-white{background-color:#d9d9d9!important}.theme-ntos .color-bg-red{background-color:#bd2020!important}.theme-ntos .color-bg-orange{background-color:#d95e0c!important}.theme-ntos .color-bg-yellow{background-color:#d9b804!important}.theme-ntos .color-bg-olive{background-color:#9aad14!important}.theme-ntos .color-bg-green{background-color:#1b9638!important}.theme-ntos .color-bg-teal{background-color:#009a93!important}.theme-ntos .color-bg-blue{background-color:#1c71b1!important}.theme-ntos .color-bg-violet{background-color:#552dab!important}.theme-ntos .color-bg-purple{background-color:#8b2baa!important}.theme-ntos .color-bg-pink{background-color:#cf2082!important}.theme-ntos .color-bg-brown{background-color:#8c5836!important}.theme-ntos .color-bg-grey{background-color:#646464!important}.theme-ntos .color-bg-good{background-color:#4d9121!important}.theme-ntos .color-bg-average{background-color:#cd7a0d!important}.theme-ntos .color-bg-bad{background-color:#bd2020!important}.theme-ntos .color-bg-label{background-color:#657a94!important}.theme-ntos .color-bg-gold{background-color:#d6920c!important}.theme-ntos .color-border-black{border-color:#1a1a1a!important}.theme-ntos .color-border-white{border-color:#fff!important}.theme-ntos .color-border-red{border-color:#df3e3e!important}.theme-ntos .color-border-orange{border-color:#f37f33!important}.theme-ntos .color-border-yellow{border-color:#fbda21!important}.theme-ntos .color-border-olive{border-color:#cbe41c!important}.theme-ntos .color-border-green{border-color:#25ca4c!important}.theme-ntos .color-border-teal{border-color:#00d6cc!important}.theme-ntos .color-border-blue{border-color:#2e93de!important}.theme-ntos .color-border-violet{border-color:#7349cf!important}.theme-ntos .color-border-purple{border-color:#ad45d0!important}.theme-ntos .color-border-pink{border-color:#e34da1!important}.theme-ntos .color-border-brown{border-color:#b97447!important}.theme-ntos .color-border-grey{border-color:#848484!important}.theme-ntos .color-border-good{border-color:#68c22d!important}.theme-ntos .color-border-average{border-color:#f29a29!important}.theme-ntos .color-border-bad{border-color:#df3e3e!important}.theme-ntos .color-border-label{border-color:#8b9bb0!important}.theme-ntos .color-border-gold{border-color:#f3b22f!important}.theme-ntos .Section{position:relative;margin-bottom:.5em;background-color:#121922;box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-ntos .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-ntos .Section__rest{position:relative}.theme-ntos .Section__content{padding:.66em .5em}.theme-ntos .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-ntos .Section--fill{display:flex;flex-direction:column;height:100%}.theme-ntos .Section--fill>.Section__rest{flex-grow:1}.theme-ntos .Section--fill>.Section__rest>.Section__content{height:100%}.theme-ntos .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-ntos .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-ntos .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-ntos .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-ntos .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-ntos .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-ntos .Section .Section:first-child{margin-top:-.5em}.theme-ntos .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-ntos .Section .Section .Section .Section__titleText{font-size:1em}.theme-ntos .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0;margin-bottom:0}.theme-ntos .Button .fa,.theme-ntos .Button .fas,.theme-ntos .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .fas,.theme-ntos .Button--hasContent .far{margin-right:.25em}.theme-ntos .Button--hasContent.Button--iconRight .fa,.theme-ntos .Button--hasContent.Button--iconRight .fas,.theme-ntos .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--circular{border-radius:50%}.theme-ntos .Button--compact{padding:0 .25em;line-height:1.333em}.theme-ntos .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-ntos .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-ntos .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--black:hover{background-color:#101010;color:#fff}.theme-ntos .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-ntos .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-ntos .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-ntos .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-ntos .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-ntos .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-ntos .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-ntos .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-ntos .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-ntos .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-ntos .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-ntos .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-ntos .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-ntos .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-ntos .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-ntos .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-ntos .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-ntos .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-ntos .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-ntos .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-ntos .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-ntos .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-ntos .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-ntos .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-ntos .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-ntos .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-ntos .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-ntos .Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.theme-ntos .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-ntos .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-ntos .Button--color--transparent{background-color:rgba(27,38,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--transparent:hover{background-color:rgba(44,57,73,.81);color:#fff}.theme-ntos .Button--color--default{background-color:#384e68;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--default:hover{background-color:#4f6885;color:#fff}.theme-ntos .Button--color--default--translucent{background-color:rgba(35,47,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--default--translucent:hover{background-color:rgba(56,69,84,.5);color:#fff}.theme-ntos .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-ntos .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-ntos .Button--selected,.theme-ntos .Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--selected:hover,.theme-ntos .Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.theme-ntos .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-ntos .NumberInput--fluid{display:block}.theme-ntos .NumberInput__content{margin-left:.5em}.theme-ntos .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-ntos .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.theme-ntos .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-ntos .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-ntos .Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-ntos .Input--fluid{display:block;width:auto}.theme-ntos .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-ntos .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-ntos .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-ntos .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-ntos .TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-ntos .TextArea--fluid{display:block;width:auto;height:auto}.theme-ntos .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-ntos .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-ntos .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-ntos .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-ntos .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-ntos .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-ntos .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-ntos .Knob__popupValue,.theme-ntos .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .Knob__popupValue--right{top:.25rem;right:-50%}.theme-ntos .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-ntos .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-ntos .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-ntos .Knob__ringFillPivot{transform:rotate(135deg)}.theme-ntos .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-ntos .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-ntos .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-ntos .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-ntos .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-ntos .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-ntos .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-ntos .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-ntos .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-ntos .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-ntos .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-ntos .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-ntos .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-ntos .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-ntos .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-ntos .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-ntos .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-ntos .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-ntos .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-ntos .Slider:not(.Slider__disabled){cursor:e-resize}.theme-ntos .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-ntos .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-ntos .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-ntos .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-ntos .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:.0833333333em solid #3e6189}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.theme-ntos .ProgressBar--color--disabled{border:1px solid #999}.theme-ntos .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-ntos .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-ntos .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-ntos .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-ntos .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-ntos .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-ntos .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-ntos .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-ntos .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-ntos .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-ntos .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-ntos .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-ntos .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-ntos .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-ntos .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-ntos .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-ntos .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-ntos .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-ntos .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-ntos .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-ntos .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-ntos .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-ntos .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-ntos .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-ntos .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-ntos .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-ntos .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-ntos .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-ntos .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-ntos .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-ntos .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-ntos .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-ntos .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-ntos .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-ntos .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-ntos .Chat{color:#abc6ec}.theme-ntos .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-ntos .Chat__badge:before{content:"x"}.theme-ntos .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-ntos .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-ntos .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-ntos .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#121922}.theme-ntos .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-ntos .Chat__highlight{color:#000}.theme-ntos .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-ntos .ChatMessage{word-wrap:break-word}.theme-ntos .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-ntos .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-ntos html,.theme-ntos body{scrollbar-color:#2a3b4f #141d26}.theme-ntos .Layout,.theme-ntos .Layout *{scrollbar-base-color:#141d26;scrollbar-face-color:#2a3b4f;scrollbar-3dlight-color:#1b2633;scrollbar-highlight-color:#1b2633;scrollbar-track-color:#141d26;scrollbar-arrow-color:#7290b4;scrollbar-shadow-color:#2a3b4f}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-ntos .Layout__content--flexRow{display:flex;flex-flow:row}.theme-ntos .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-ntos .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-ntos .Layout__content--noMargin{margin:0}.theme-ntos .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b2633;background-image:linear-gradient(to bottom,#1b2633,#1b2633)}.theme-ntos .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-ntos .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-ntos .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-ntos .Window__contentPadding:after{height:0}.theme-ntos .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-ntos .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,63,78,.25);pointer-events:none}.theme-ntos .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-ntos .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-ntos .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-ntos .TitleBar{background-color:#1b2633;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#1b2633;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-ntos .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-ntos .boxed_message{background:#1d2330}.theme-ntos .boxed_message.red_border{background:#301d1d}.theme-ntos .boxed_message.green_border{background:#1d3023}.theme-ntos .boxed_message.purple_border{background:#231d30}.theme-ntos .boxed_message.notice_border{background:#192234}.theme-syndicate .color-black{color:#1a1a1a!important}.theme-syndicate .color-white{color:#fff!important}.theme-syndicate .color-red{color:#df3e3e!important}.theme-syndicate .color-orange{color:#f37f33!important}.theme-syndicate .color-yellow{color:#fbda21!important}.theme-syndicate .color-olive{color:#cbe41c!important}.theme-syndicate .color-green{color:#25ca4c!important}.theme-syndicate .color-teal{color:#00d6cc!important}.theme-syndicate .color-blue{color:#2e93de!important}.theme-syndicate .color-violet{color:#7349cf!important}.theme-syndicate .color-purple{color:#ad45d0!important}.theme-syndicate .color-pink{color:#e34da1!important}.theme-syndicate .color-brown{color:#b97447!important}.theme-syndicate .color-grey{color:#848484!important}.theme-syndicate .color-good{color:#68c22d!important}.theme-syndicate .color-average{color:#f29a29!important}.theme-syndicate .color-bad{color:#df3e3e!important}.theme-syndicate .color-label{color:#b89797!important}.theme-syndicate .color-gold{color:#f3b22f!important}.theme-syndicate .color-bg-black{background-color:#000!important}.theme-syndicate .color-bg-white{background-color:#d9d9d9!important}.theme-syndicate .color-bg-red{background-color:#bd2020!important}.theme-syndicate .color-bg-orange{background-color:#d95e0c!important}.theme-syndicate .color-bg-yellow{background-color:#d9b804!important}.theme-syndicate .color-bg-olive{background-color:#9aad14!important}.theme-syndicate .color-bg-green{background-color:#1b9638!important}.theme-syndicate .color-bg-teal{background-color:#009a93!important}.theme-syndicate .color-bg-blue{background-color:#1c71b1!important}.theme-syndicate .color-bg-violet{background-color:#552dab!important}.theme-syndicate .color-bg-purple{background-color:#8b2baa!important}.theme-syndicate .color-bg-pink{background-color:#cf2082!important}.theme-syndicate .color-bg-brown{background-color:#8c5836!important}.theme-syndicate .color-bg-grey{background-color:#646464!important}.theme-syndicate .color-bg-good{background-color:#4d9121!important}.theme-syndicate .color-bg-average{background-color:#cd7a0d!important}.theme-syndicate .color-bg-bad{background-color:#bd2020!important}.theme-syndicate .color-bg-label{background-color:#9d6f6f!important}.theme-syndicate .color-bg-gold{background-color:#d6920c!important}.theme-syndicate .color-border-black{border-color:#1a1a1a!important}.theme-syndicate .color-border-white{border-color:#fff!important}.theme-syndicate .color-border-red{border-color:#df3e3e!important}.theme-syndicate .color-border-orange{border-color:#f37f33!important}.theme-syndicate .color-border-yellow{border-color:#fbda21!important}.theme-syndicate .color-border-olive{border-color:#cbe41c!important}.theme-syndicate .color-border-green{border-color:#25ca4c!important}.theme-syndicate .color-border-teal{border-color:#00d6cc!important}.theme-syndicate .color-border-blue{border-color:#2e93de!important}.theme-syndicate .color-border-violet{border-color:#7349cf!important}.theme-syndicate .color-border-purple{border-color:#ad45d0!important}.theme-syndicate .color-border-pink{border-color:#e34da1!important}.theme-syndicate .color-border-brown{border-color:#b97447!important}.theme-syndicate .color-border-grey{border-color:#848484!important}.theme-syndicate .color-border-good{border-color:#68c22d!important}.theme-syndicate .color-border-average{border-color:#f29a29!important}.theme-syndicate .color-border-bad{border-color:#df3e3e!important}.theme-syndicate .color-border-label{border-color:#b89797!important}.theme-syndicate .color-border-gold{border-color:#f3b22f!important}.theme-syndicate .Section{position:relative;margin-bottom:.5em;background-color:#2b0101;box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #397439}.theme-syndicate .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-syndicate .Section__rest{position:relative}.theme-syndicate .Section__content{padding:.66em .5em}.theme-syndicate .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-syndicate .Section--fill{display:flex;flex-direction:column;height:100%}.theme-syndicate .Section--fill>.Section__rest{flex-grow:1}.theme-syndicate .Section--fill>.Section__rest>.Section__content{height:100%}.theme-syndicate .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-syndicate .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-syndicate .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-syndicate .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-syndicate .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-syndicate .Section .Section:first-child{margin-top:-.5em}.theme-syndicate .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-syndicate .Section .Section .Section .Section__titleText{font-size:1em}.theme-syndicate .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0;margin-bottom:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .fas,.theme-syndicate .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .fas,.theme-syndicate .Button--hasContent .far{margin-right:.25em}.theme-syndicate .Button--hasContent.Button--iconRight .fa,.theme-syndicate .Button--hasContent.Button--iconRight .fas,.theme-syndicate .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--circular{border-radius:50%}.theme-syndicate .Button--compact{padding:0 .25em;line-height:1.333em}.theme-syndicate .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-syndicate .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-syndicate .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black:hover{background-color:#101010;color:#fff}.theme-syndicate .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-syndicate .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-syndicate .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-syndicate .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-syndicate .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-syndicate .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-syndicate .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-syndicate .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-syndicate .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-syndicate .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-syndicate .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-syndicate .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-syndicate .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-syndicate .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-syndicate .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-syndicate .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-syndicate .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-syndicate .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-syndicate .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-syndicate .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-syndicate .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-syndicate .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-syndicate .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-syndicate .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-syndicate .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-syndicate .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-syndicate .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-syndicate .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-syndicate .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-syndicate .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--label{background-color:#9d6f6f;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label:hover{background-color:#b89696;color:#fff}.theme-syndicate .Button--color--label--translucent{background-color:rgba(157,111,111,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label--translucent:hover{background-color:rgba(184,150,150,.5);color:#fff}.theme-syndicate .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-syndicate .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-syndicate .Button--color--transparent{background-color:rgba(77,2,2,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--transparent:hover{background-color:rgba(103,14,14,.81);color:#fff}.theme-syndicate .Button--color--default{background-color:#397439;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default:hover{background-color:#509350;color:#fff}.theme-syndicate .Button--color--default--translucent{background-color:rgba(88,8,8,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default--translucent:hover{background-color:rgba(115,25,25,.5);color:#fff}.theme-syndicate .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-syndicate .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-syndicate .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-syndicate .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important;color:rgba(255,255,255,.75)!important}.theme-syndicate .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-syndicate .Button--selected,.theme-syndicate .Button--selected--translucent{background-color:#9d0808;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--selected:hover,.theme-syndicate .Button--selected--translucent:hover{background-color:#c11919;color:#fff}.theme-syndicate .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#910101;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.theme-syndicate .NoticeBox--color--black{color:#fff;background-color:#000}.theme-syndicate .NoticeBox--color--white{color:#000;background-color:#b3b3b3}.theme-syndicate .NoticeBox--color--red{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--orange{color:#fff;background-color:#854114}.theme-syndicate .NoticeBox--color--yellow{color:#000;background-color:#83710d}.theme-syndicate .NoticeBox--color--olive{color:#000;background-color:#576015}.theme-syndicate .NoticeBox--color--green{color:#fff;background-color:#174e24}.theme-syndicate .NoticeBox--color--teal{color:#fff;background-color:#064845}.theme-syndicate .NoticeBox--color--blue{color:#fff;background-color:#1b4565}.theme-syndicate .NoticeBox--color--violet{color:#fff;background-color:#3b2864}.theme-syndicate .NoticeBox--color--purple{color:#fff;background-color:#542663}.theme-syndicate .NoticeBox--color--pink{color:#fff;background-color:#802257}.theme-syndicate .NoticeBox--color--brown{color:#fff;background-color:#4c3729}.theme-syndicate .NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.theme-syndicate .NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.theme-syndicate .NoticeBox--color--average{color:#fff;background-color:#7b4e13}.theme-syndicate .NoticeBox--color--bad{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--label{color:#fff;background-color:#635c5c}.theme-syndicate .NoticeBox--color--gold{color:#fff;background-color:#825d13}.theme-syndicate .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-syndicate .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-syndicate .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-syndicate .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#87ce87;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:.5em}.theme-syndicate .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-syndicate .Input--disabled{color:#777;border-color:#6b6b6b;border-color:rgba(107,107,107,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-syndicate .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-syndicate .TextArea{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-syndicate .TextArea--fluid{display:block;width:auto;height:auto}.theme-syndicate .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-syndicate .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-syndicate .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-syndicate .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-syndicate .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-syndicate .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-syndicate .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-syndicate .Knob__popupValue,.theme-syndicate .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .Knob__popupValue--right{top:.25rem;right:-50%}.theme-syndicate .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-syndicate .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-syndicate .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-syndicate .Knob__ringFillPivot{transform:rotate(135deg)}.theme-syndicate .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-syndicate .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-syndicate .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-syndicate .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-syndicate .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-syndicate .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-syndicate .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-syndicate .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-syndicate .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-syndicate .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-syndicate .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-syndicate .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-syndicate .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-syndicate .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-syndicate .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-syndicate .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-syndicate .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-syndicate .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--label .Knob__ringFill{stroke:#b89797}.theme-syndicate .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-syndicate .Slider:not(.Slider__disabled){cursor:e-resize}.theme-syndicate .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-syndicate .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-syndicate .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-syndicate .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-syndicate .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:.0833333333em solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .ProgressBar--color--disabled{border:1px solid #999}.theme-syndicate .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-syndicate .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-syndicate .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-syndicate .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-syndicate .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-syndicate .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-syndicate .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-syndicate .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-syndicate .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-syndicate .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-syndicate .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-syndicate .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-syndicate .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-syndicate .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-syndicate .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-syndicate .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-syndicate .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-syndicate .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-syndicate .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-syndicate .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-syndicate .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-syndicate .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-syndicate .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-syndicate .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-syndicate .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-syndicate .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-syndicate .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-syndicate .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-syndicate .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-syndicate .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-syndicate .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-syndicate .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--label{border:.0833333333em solid #9d6f6f!important}.theme-syndicate .ProgressBar--color--label .ProgressBar__fill{background-color:#9d6f6f}.theme-syndicate .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-syndicate .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-syndicate .Chat{color:#abc6ec}.theme-syndicate .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-syndicate .Chat__badge:before{content:"x"}.theme-syndicate .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-syndicate .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-syndicate .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-syndicate .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#2b0101}.theme-syndicate .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-syndicate .Chat__highlight{color:#000}.theme-syndicate .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-syndicate .ChatMessage{word-wrap:break-word}.theme-syndicate .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-syndicate .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-syndicate html,.theme-syndicate body{scrollbar-color:#770303 #3a0202}.theme-syndicate .Layout,.theme-syndicate .Layout *{scrollbar-base-color:#3a0202;scrollbar-face-color:#770303;scrollbar-3dlight-color:#4d0202;scrollbar-highlight-color:#4d0202;scrollbar-track-color:#3a0202;scrollbar-arrow-color:#fa2d2d;scrollbar-shadow-color:#770303}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-syndicate .Layout__content--flexRow{display:flex;flex-flow:row}.theme-syndicate .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-syndicate .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-syndicate .Layout__content--noMargin{margin:0}.theme-syndicate .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#4d0202;background-image:linear-gradient(to bottom,#4d0202,#4d0202)}.theme-syndicate .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-syndicate .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-syndicate .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-syndicate .Window__contentPadding:after{height:0}.theme-syndicate .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-syndicate .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(108,22,22,.25);pointer-events:none}.theme-syndicate .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-syndicate .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-syndicate .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-syndicate .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-syndicate .adminooc{color:#29ccbe}.theme-syndicate .debug{color:#8f39e6}.theme-syndicate .boxed_message{background:#360a0a}.theme-syndicate .boxed_message.red_border{background:#400000}.theme-syndicate .boxed_message.green_border{background:#261a00}.theme-syndicate .boxed_message.purple_border{background:#260026}.theme-syndicate .boxed_message.notice_border{background:#260016}.theme-paradise .color-black{color:#1a1a1a!important}.theme-paradise .color-white{color:#fff!important}.theme-paradise .color-red{color:#df3e3e!important}.theme-paradise .color-orange{color:#f37f33!important}.theme-paradise .color-yellow{color:#fbda21!important}.theme-paradise .color-olive{color:#cbe41c!important}.theme-paradise .color-green{color:#25ca4c!important}.theme-paradise .color-teal{color:#00d6cc!important}.theme-paradise .color-blue{color:#2e93de!important}.theme-paradise .color-violet{color:#7349cf!important}.theme-paradise .color-purple{color:#ad45d0!important}.theme-paradise .color-pink{color:#e34da1!important}.theme-paradise .color-brown{color:#b97447!important}.theme-paradise .color-grey{color:#848484!important}.theme-paradise .color-good{color:#68c22d!important}.theme-paradise .color-average{color:#f29a29!important}.theme-paradise .color-bad{color:#df3e3e!important}.theme-paradise .color-label{color:#b8a497!important}.theme-paradise .color-gold{color:#f3b22f!important}.theme-paradise .color-bg-black{background-color:#000!important}.theme-paradise .color-bg-white{background-color:#d9d9d9!important}.theme-paradise .color-bg-red{background-color:#bd2020!important}.theme-paradise .color-bg-orange{background-color:#d95e0c!important}.theme-paradise .color-bg-yellow{background-color:#d9b804!important}.theme-paradise .color-bg-olive{background-color:#9aad14!important}.theme-paradise .color-bg-green{background-color:#1b9638!important}.theme-paradise .color-bg-teal{background-color:#009a93!important}.theme-paradise .color-bg-blue{background-color:#1c71b1!important}.theme-paradise .color-bg-violet{background-color:#552dab!important}.theme-paradise .color-bg-purple{background-color:#8b2baa!important}.theme-paradise .color-bg-pink{background-color:#cf2082!important}.theme-paradise .color-bg-brown{background-color:#8c5836!important}.theme-paradise .color-bg-grey{background-color:#646464!important}.theme-paradise .color-bg-good{background-color:#4d9121!important}.theme-paradise .color-bg-average{background-color:#cd7a0d!important}.theme-paradise .color-bg-bad{background-color:#bd2020!important}.theme-paradise .color-bg-label{background-color:#9d826f!important}.theme-paradise .color-bg-gold{background-color:#d6920c!important}.theme-paradise .color-border-black{border-color:#1a1a1a!important}.theme-paradise .color-border-white{border-color:#fff!important}.theme-paradise .color-border-red{border-color:#df3e3e!important}.theme-paradise .color-border-orange{border-color:#f37f33!important}.theme-paradise .color-border-yellow{border-color:#fbda21!important}.theme-paradise .color-border-olive{border-color:#cbe41c!important}.theme-paradise .color-border-green{border-color:#25ca4c!important}.theme-paradise .color-border-teal{border-color:#00d6cc!important}.theme-paradise .color-border-blue{border-color:#2e93de!important}.theme-paradise .color-border-violet{border-color:#7349cf!important}.theme-paradise .color-border-purple{border-color:#ad45d0!important}.theme-paradise .color-border-pink{border-color:#e34da1!important}.theme-paradise .color-border-brown{border-color:#b97447!important}.theme-paradise .color-border-grey{border-color:#848484!important}.theme-paradise .color-border-good{border-color:#68c22d!important}.theme-paradise .color-border-average{border-color:#f29a29!important}.theme-paradise .color-border-bad{border-color:#df3e3e!important}.theme-paradise .color-border-label{border-color:#b8a497!important}.theme-paradise .color-border-gold{border-color:#f3b22f!important}.theme-paradise .Section{position:relative;margin-bottom:.5em;background-color:#40071a;background-color:rgba(0,0,0,.5);box-sizing:border-box}.theme-paradise .Section:last-child{margin-bottom:0}.theme-paradise .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #208080}.theme-paradise .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-paradise .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-paradise .Section__rest{position:relative}.theme-paradise .Section__content{padding:.66em .5em}.theme-paradise .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-paradise .Section--fill{display:flex;flex-direction:column;height:100%}.theme-paradise .Section--fill>.Section__rest{flex-grow:1}.theme-paradise .Section--fill>.Section__rest>.Section__content{height:100%}.theme-paradise .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-paradise .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-paradise .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-paradise .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-paradise .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-paradise .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-paradise .Section .Section:first-child{margin-top:-.5em}.theme-paradise .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-paradise .Section .Section .Section .Section__titleText{font-size:1em}.theme-paradise .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-paradise .Button:last-child{margin-right:0;margin-bottom:0}.theme-paradise .Button .fa,.theme-paradise .Button .fas,.theme-paradise .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-paradise .Button--hasContent .fa,.theme-paradise .Button--hasContent .fas,.theme-paradise .Button--hasContent .far{margin-right:.25em}.theme-paradise .Button--hasContent.Button--iconRight .fa,.theme-paradise .Button--hasContent.Button--iconRight .fas,.theme-paradise .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-paradise .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-paradise .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-paradise .Button--circular{border-radius:50%}.theme-paradise .Button--compact{padding:0 .25em;line-height:1.333em}.theme-paradise .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-paradise .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-paradise .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--black:hover{background-color:#101010;color:#fff}.theme-paradise .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-paradise .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-paradise .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-paradise .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-paradise .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-paradise .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-paradise .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-paradise .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-paradise .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-paradise .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-paradise .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-paradise .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-paradise .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-paradise .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-paradise .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-paradise .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-paradise .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-paradise .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-paradise .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-paradise .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-paradise .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-paradise .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-paradise .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-paradise .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-paradise .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-paradise .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-paradise .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-paradise .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--label{background-color:#9d826f;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--label:hover{background-color:#b8a396;color:#fff}.theme-paradise .Button--color--label--translucent{background-color:rgba(157,130,111,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--label--translucent:hover{background-color:rgba(184,163,150,.5);color:#fff}.theme-paradise .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-paradise .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-paradise .Button--color--transparent{background-color:rgba(128,13,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--transparent:hover{background-color:rgba(164,27,73,.81);color:#fff}.theme-paradise .Button--color--default{background-color:#208080;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--default:hover{background-color:#34a0a0;color:#fff}.theme-paradise .Button--color--default--translucent{background-color:rgba(141,20,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--default--translucent:hover{background-color:rgba(175,39,84,.5);color:#fff}.theme-paradise .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--danger{background-color:#8c1eff;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger:hover{background-color:#ae61ff;color:#fff}.theme-paradise .Button--color--danger--translucent{background-color:rgba(140,30,255,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger--translucent:hover{background-color:rgba(174,97,255,.5);color:#fff}.theme-paradise .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-paradise .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-paradise .Button--selected,.theme-paradise .Button--selected--translucent{background-color:#bf6030;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--selected:hover,.theme-paradise .Button--selected--translucent:hover{background-color:#d4835a;color:#fff}.theme-paradise .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;color:#e65c2e;background-color:rgba(0,0,0,.25);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-paradise .NumberInput--fluid{display:block}.theme-paradise .NumberInput__content{margin-left:.5em}.theme-paradise .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-paradise .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #e65c2e;background-color:#e65c2e}.theme-paradise .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,.25);color:#fff;text-align:right}.theme-paradise .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-paradise .Input--disabled{color:#777;border-color:#4a4a4a;border-color:rgba(74,74,74,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-paradise .Input--fluid{display:block;width:auto}.theme-paradise .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-paradise .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-paradise .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-paradise .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-paradise .TextArea{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-paradise .TextArea--fluid{display:block;width:auto;height:auto}.theme-paradise .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-paradise .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-paradise .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-paradise .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-paradise .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-paradise .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-paradise .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-paradise .Knob__popupValue,.theme-paradise .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .Knob__popupValue--right{top:.25rem;right:-50%}.theme-paradise .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-paradise .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-paradise .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-paradise .Knob__ringFillPivot{transform:rotate(135deg)}.theme-paradise .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-paradise .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-paradise .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-paradise .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-paradise .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-paradise .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-paradise .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-paradise .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-paradise .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-paradise .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-paradise .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-paradise .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-paradise .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-paradise .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-paradise .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-paradise .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-paradise .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-paradise .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--label .Knob__ringFill{stroke:#b8a497}.theme-paradise .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-paradise .Slider:not(.Slider__disabled){cursor:e-resize}.theme-paradise .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-paradise .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-paradise .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-paradise .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-paradise .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-paradise .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-paradise .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-paradise .ProgressBar--color--default{border:.0833333333em solid #1b6d6d}.theme-paradise .ProgressBar--color--default .ProgressBar__fill{background-color:#1b6d6d}.theme-paradise .ProgressBar--color--disabled{border:1px solid #999}.theme-paradise .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-paradise .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-paradise .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-paradise .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-paradise .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-paradise .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-paradise .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-paradise .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-paradise .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-paradise .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-paradise .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-paradise .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-paradise .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-paradise .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-paradise .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-paradise .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-paradise .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-paradise .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-paradise .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-paradise .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-paradise .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-paradise .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-paradise .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-paradise .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-paradise .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-paradise .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-paradise .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-paradise .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-paradise .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-paradise .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-paradise .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-paradise .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--label{border:.0833333333em solid #9d826f!important}.theme-paradise .ProgressBar--color--label .ProgressBar__fill{background-color:#9d826f}.theme-paradise .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-paradise .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-paradise .Chat{color:#abc6ec}.theme-paradise .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-paradise .Chat__badge:before{content:"x"}.theme-paradise .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-paradise .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-paradise .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-paradise .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#fff;background-color:#db2828}.theme-paradise .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-paradise .Chat__highlight{color:#000}.theme-paradise .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-paradise .ChatMessage{word-wrap:break-word}.theme-paradise .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-paradise .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-paradise html,.theme-paradise body{scrollbar-color:#cb1551 #680b29}.theme-paradise .Layout,.theme-paradise .Layout *{scrollbar-base-color:#680b29;scrollbar-face-color:#99103d;scrollbar-3dlight-color:#800d33;scrollbar-highlight-color:#800d33;scrollbar-track-color:#680b29;scrollbar-arrow-color:#ea2e6c;scrollbar-shadow-color:#99103d}.theme-paradise .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-paradise .Layout__content--flexRow{display:flex;flex-flow:row}.theme-paradise .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-paradise .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-paradise .Layout__content--noMargin{margin:0}.theme-paradise .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#800d33;background-image:linear-gradient(to bottom,#80014b,#80460d)}.theme-paradise .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-paradise .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-paradise .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-paradise .Window__contentPadding:after{height:0}.theme-paradise .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-paradise .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(166,34,78,.25);pointer-events:none}.theme-paradise .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-paradise .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-paradise .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-paradise .TitleBar{background-color:#800d33;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-paradise .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#800d33;transition:color .25s,background-color .25s}.theme-paradise .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-paradise .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-paradise .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-paradise .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-paradise .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-paradise .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-paradise .adminooc{color:#29ccbe}.theme-paradise .debug{color:#8f39e6}.theme-paradise .boxed_message{background:rgba(0,0,0,.25);border-color:rgba(223,181,159,.25)}.theme-paradise .boxed_message.red_border{background:rgba(22,3,3,.25);border-color:rgba(255,0,0,.5)}.theme-paradise .boxed_message.green_border{background:rgba(3,22,10,.25);border-color:rgba(0,255,0,.5)}.theme-paradise .boxed_message.purple_border{background:rgba(10,3,22,.25);border-color:rgba(136,77,255,.5)}.theme-paradise .boxed_message.notice_border{background:rgba(3,10,22,.25);border-color:rgba(85,126,246,.5)} diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js index 5dab3346d725..0fdead75f105 100644 --- a/tgui/public/tgui-panel.bundle.js +++ b/tgui/public/tgui-panel.bundle.js @@ -1,8 +1,8 @@ -(function(){(function(){var xn={96376:function(E,n,t){"use strict";n.__esModule=!0,n.createPopper=void 0,n.popperGenerator=g;var e=i(t(74758)),r=i(t(28811)),o=i(t(98309)),a=i(t(44896)),s=i(t(33118)),u=i(t(10579)),c=i(t(56500)),p=i(t(17633));n.detectOverflow=p.default;var d=t(75573);function i(h){return h&&h.__esModule?h:{default:h}}var v={placement:"bottom",modifiers:[],strategy:"absolute"};function l(){for(var h=arguments.length,m=new Array(h),C=0;C0&&(0,r.round)(i.width)/c.offsetWidth||1,l=c.offsetHeight>0&&(0,r.round)(i.height)/c.offsetHeight||1);var g=(0,e.isElement)(c)?(0,o.default)(c):window,f=g.visualViewport,h=!(0,a.default)()&&d,m=(i.left+(h&&f?f.offsetLeft:0))/v,C=(i.top+(h&&f?f.offsetTop:0))/l,I=i.width/v,O=i.height/l;return{width:I,height:O,top:C,right:m+I,bottom:C+O,left:m,x:m,y:C}}},49035:function(E,n,t){"use strict";n.__esModule=!0,n.default=O;var e=t(46206),r=h(t(87991)),o=h(t(79752)),a=h(t(98309)),s=h(t(44896)),u=h(t(40600)),c=h(t(16599)),p=t(75573),d=h(t(37786)),i=h(t(57819)),v=h(t(4206)),l=h(t(12972)),g=h(t(81666)),f=t(63618);function h(T){return T&&T.__esModule?T:{default:T}}function m(T,y){var S=(0,d.default)(T,!1,y==="fixed");return S.top=S.top+T.clientTop,S.left=S.left+T.clientLeft,S.bottom=S.top+T.clientHeight,S.right=S.left+T.clientWidth,S.width=T.clientWidth,S.height=T.clientHeight,S.x=S.left,S.y=S.top,S}function C(T,y,S){return y===e.viewport?(0,g.default)((0,r.default)(T,S)):(0,p.isElement)(y)?m(y,S):(0,g.default)((0,o.default)((0,u.default)(T)))}function I(T){var y=(0,a.default)((0,i.default)(T)),S=["absolute","fixed"].indexOf((0,c.default)(T).position)>=0,b=S&&(0,p.isHTMLElement)(T)?(0,s.default)(T):T;return(0,p.isElement)(b)?y.filter(function(N){return(0,p.isElement)(N)&&(0,v.default)(N,b)&&(0,l.default)(N)!=="body"}):[]}function O(T,y,S,b){var N=y==="clippingParents"?I(T):[].concat(y),M=[].concat(N,[S]),w=M[0],R=M.reduce(function(B,x){var j=C(T,x,b);return B.top=(0,f.max)(j.top,B.top),B.right=(0,f.min)(j.right,B.right),B.bottom=(0,f.min)(j.bottom,B.bottom),B.left=(0,f.max)(j.left,B.left),B},C(T,w,b));return R.width=R.right-R.left,R.height=R.bottom-R.top,R.x=R.left,R.y=R.top,R}},74758:function(E,n,t){"use strict";n.__esModule=!0,n.default=v;var e=d(t(37786)),r=d(t(13390)),o=d(t(12972)),a=t(75573),s=d(t(79697)),u=d(t(40600)),c=d(t(10798)),p=t(63618);function d(l){return l&&l.__esModule?l:{default:l}}function i(l){var g=l.getBoundingClientRect(),f=(0,p.round)(g.width)/l.offsetWidth||1,h=(0,p.round)(g.height)/l.offsetHeight||1;return f!==1||h!==1}function v(l,g,f){f===void 0&&(f=!1);var h=(0,a.isHTMLElement)(g),m=(0,a.isHTMLElement)(g)&&i(g),C=(0,u.default)(g),I=(0,e.default)(l,m,f),O={scrollLeft:0,scrollTop:0},T={x:0,y:0};return(h||!h&&!f)&&(((0,o.default)(g)!=="body"||(0,c.default)(C))&&(O=(0,r.default)(g)),(0,a.isHTMLElement)(g)?(T=(0,e.default)(g,!0),T.x+=g.clientLeft,T.y+=g.clientTop):C&&(T.x=(0,s.default)(C))),{x:I.left+O.scrollLeft-T.x,y:I.top+O.scrollTop-T.y,width:I.width,height:I.height}}},16599:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(95115));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return(0,e.default)(a).getComputedStyle(a)}},40600:function(E,n,t){"use strict";n.__esModule=!0,n.default=r;var e=t(75573);function r(o){return(((0,e.isElement)(o)?o.ownerDocument:o.document)||window.document).documentElement}},79752:function(E,n,t){"use strict";n.__esModule=!0,n.default=c;var e=u(t(40600)),r=u(t(16599)),o=u(t(79697)),a=u(t(43750)),s=t(63618);function u(p){return p&&p.__esModule?p:{default:p}}function c(p){var d,i=(0,e.default)(p),v=(0,a.default)(p),l=(d=p.ownerDocument)==null?void 0:d.body,g=(0,s.max)(i.scrollWidth,i.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),f=(0,s.max)(i.scrollHeight,i.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),h=-v.scrollLeft+(0,o.default)(p),m=-v.scrollTop;return(0,r.default)(l||i).direction==="rtl"&&(h+=(0,s.max)(i.clientWidth,l?l.clientWidth:0)-g),{width:g,height:f,x:h,y:m}}},3073:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}},28811:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(37786));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var s=(0,e.default)(a),u=a.offsetWidth,c=a.offsetHeight;return Math.abs(s.width-u)<=1&&(u=s.width),Math.abs(s.height-c)<=1&&(c=s.height),{x:a.offsetLeft,y:a.offsetTop,width:u,height:c}}},12972:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return e?(e.nodeName||"").toLowerCase():null}},13390:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(43750)),r=s(t(95115)),o=t(75573),a=s(t(3073));function s(c){return c&&c.__esModule?c:{default:c}}function u(c){return c===(0,r.default)(c)||!(0,o.isHTMLElement)(c)?(0,e.default)(c):(0,a.default)(c)}},44896:function(E,n,t){"use strict";n.__esModule=!0,n.default=v;var e=p(t(95115)),r=p(t(12972)),o=p(t(16599)),a=t(75573),s=p(t(87031)),u=p(t(57819)),c=p(t(35366));function p(l){return l&&l.__esModule?l:{default:l}}function d(l){return!(0,a.isHTMLElement)(l)||(0,o.default)(l).position==="fixed"?null:l.offsetParent}function i(l){var g=/firefox/i.test((0,c.default)()),f=/Trident/i.test((0,c.default)());if(f&&(0,a.isHTMLElement)(l)){var h=(0,o.default)(l);if(h.position==="fixed")return null}var m=(0,u.default)(l);for((0,a.isShadowRoot)(m)&&(m=m.host);(0,a.isHTMLElement)(m)&&["html","body"].indexOf((0,r.default)(m))<0;){var C=(0,o.default)(m);if(C.transform!=="none"||C.perspective!=="none"||C.contain==="paint"||["transform","perspective"].indexOf(C.willChange)!==-1||g&&C.willChange==="filter"||g&&C.filter&&C.filter!=="none")return m;m=m.parentNode}return null}function v(l){for(var g=(0,e.default)(l),f=d(l);f&&(0,s.default)(f)&&(0,o.default)(f).position==="static";)f=d(f);return f&&((0,r.default)(f)==="html"||(0,r.default)(f)==="body"&&(0,o.default)(f).position==="static")?g:f||i(l)||g}},57819:function(E,n,t){"use strict";n.__esModule=!0,n.default=s;var e=a(t(12972)),r=a(t(40600)),o=t(75573);function a(u){return u&&u.__esModule?u:{default:u}}function s(u){return(0,e.default)(u)==="html"?u:u.assignedSlot||u.parentNode||((0,o.isShadowRoot)(u)?u.host:null)||(0,r.default)(u)}},24426:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(57819)),r=s(t(10798)),o=s(t(12972)),a=t(75573);function s(c){return c&&c.__esModule?c:{default:c}}function u(c){return["html","body","#document"].indexOf((0,o.default)(c))>=0?c.ownerDocument.body:(0,a.isHTMLElement)(c)&&(0,r.default)(c)?c:u((0,e.default)(c))}},87991:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(95115)),r=s(t(40600)),o=s(t(79697)),a=s(t(89331));function s(c){return c&&c.__esModule?c:{default:c}}function u(c,p){var d=(0,e.default)(c),i=(0,r.default)(c),v=d.visualViewport,l=i.clientWidth,g=i.clientHeight,f=0,h=0;if(v){l=v.width,g=v.height;var m=(0,a.default)();(m||!m&&p==="fixed")&&(f=v.offsetLeft,h=v.offsetTop)}return{width:l,height:g,x:f+(0,o.default)(c),y:h}}},95115:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var r=e.ownerDocument;return r&&r.defaultView||window}return e}},43750:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(95115));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var s=(0,e.default)(a),u=s.pageXOffset,c=s.pageYOffset;return{scrollLeft:u,scrollTop:c}}},79697:function(E,n,t){"use strict";n.__esModule=!0,n.default=s;var e=a(t(37786)),r=a(t(40600)),o=a(t(43750));function a(u){return u&&u.__esModule?u:{default:u}}function s(u){return(0,e.default)((0,r.default)(u)).left+(0,o.default)(u).scrollLeft}},75573:function(E,n,t){"use strict";n.__esModule=!0,n.isElement=o,n.isHTMLElement=a,n.isShadowRoot=s;var e=r(t(95115));function r(u){return u&&u.__esModule?u:{default:u}}function o(u){var c=(0,e.default)(u).Element;return u instanceof c||u instanceof Element}function a(u){var c=(0,e.default)(u).HTMLElement;return u instanceof c||u instanceof HTMLElement}function s(u){if(typeof ShadowRoot=="undefined")return!1;var c=(0,e.default)(u).ShadowRoot;return u instanceof c||u instanceof ShadowRoot}},89331:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(35366));function r(a){return a&&a.__esModule?a:{default:a}}function o(){return!/^((?!chrome|android).)*safari/i.test((0,e.default)())}},10798:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(16599));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var s=(0,e.default)(a),u=s.overflow,c=s.overflowX,p=s.overflowY;return/auto|scroll|overlay|hidden/.test(u+p+c)}},87031:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(12972));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return["table","td","th"].indexOf((0,e.default)(a))>=0}},98309:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(24426)),r=s(t(57819)),o=s(t(95115)),a=s(t(10798));function s(c){return c&&c.__esModule?c:{default:c}}function u(c,p){var d;p===void 0&&(p=[]);var i=(0,e.default)(c),v=i===((d=c.ownerDocument)==null?void 0:d.body),l=(0,o.default)(i),g=v?[l].concat(l.visualViewport||[],(0,a.default)(i)?i:[]):i,f=p.concat(g);return v?f:f.concat(u((0,r.default)(g)))}},46206:function(E,n){"use strict";n.__esModule=!0,n.write=n.viewport=n.variationPlacements=n.top=n.start=n.right=n.reference=n.read=n.popper=n.placements=n.modifierPhases=n.main=n.left=n.end=n.clippingParents=n.bottom=n.beforeWrite=n.beforeRead=n.beforeMain=n.basePlacements=n.auto=n.afterWrite=n.afterRead=n.afterMain=void 0;var t=n.top="top",e=n.bottom="bottom",r=n.right="right",o=n.left="left",a=n.auto="auto",s=n.basePlacements=[t,e,r,o],u=n.start="start",c=n.end="end",p=n.clippingParents="clippingParents",d=n.viewport="viewport",i=n.popper="popper",v=n.reference="reference",l=n.variationPlacements=s.reduce(function(N,M){return N.concat([M+"-"+u,M+"-"+c])},[]),g=n.placements=[].concat(s,[a]).reduce(function(N,M){return N.concat([M,M+"-"+u,M+"-"+c])},[]),f=n.beforeRead="beforeRead",h=n.read="read",m=n.afterRead="afterRead",C=n.beforeMain="beforeMain",I=n.main="main",O=n.afterMain="afterMain",T=n.beforeWrite="beforeWrite",y=n.write="write",S=n.afterWrite="afterWrite",b=n.modifierPhases=[f,h,m,C,I,O,T,y,S]},95996:function(E,n,t){"use strict";n.__esModule=!0;var e={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};n.popperGenerator=n.detectOverflow=n.createPopperLite=n.createPopperBase=n.createPopper=void 0;var r=t(46206);Object.keys(r).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(e,c)||c in n&&n[c]===r[c]||(n[c]=r[c])});var o=t(39805);Object.keys(o).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(e,c)||c in n&&n[c]===o[c]||(n[c]=o[c])});var a=t(96376);n.popperGenerator=a.popperGenerator,n.detectOverflow=a.detectOverflow,n.createPopperBase=a.createPopper;var s=t(83312);n.createPopper=s.createPopper;var u=t(2473);n.createPopperLite=u.createPopper},19975:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=o(t(12972)),r=t(75573);function o(c){return c&&c.__esModule?c:{default:c}}function a(c){var p=c.state;Object.keys(p.elements).forEach(function(d){var i=p.styles[d]||{},v=p.attributes[d]||{},l=p.elements[d];!(0,r.isHTMLElement)(l)||!(0,e.default)(l)||(Object.assign(l.style,i),Object.keys(v).forEach(function(g){var f=v[g];f===!1?l.removeAttribute(g):l.setAttribute(g,f===!0?"":f)}))})}function s(c){var p=c.state,d={popper:{position:p.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(p.elements.popper.style,d.popper),p.styles=d,p.elements.arrow&&Object.assign(p.elements.arrow.style,d.arrow),function(){Object.keys(p.elements).forEach(function(i){var v=p.elements[i],l=p.attributes[i]||{},g=Object.keys(p.styles.hasOwnProperty(i)?p.styles[i]:d[i]),f=g.reduce(function(h,m){return h[m]="",h},{});!(0,r.isHTMLElement)(v)||!(0,e.default)(v)||(Object.assign(v.style,f),Object.keys(l).forEach(function(h){v.removeAttribute(h)}))})}}var u=n.default={name:"applyStyles",enabled:!0,phase:"write",fn:a,effect:s,requires:["computeStyles"]}},52744:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=i(t(83104)),r=i(t(28811)),o=i(t(4206)),a=i(t(44896)),s=i(t(41199)),u=t(28595),c=i(t(43286)),p=i(t(81447)),d=t(46206);function i(h){return h&&h.__esModule?h:{default:h}}var v=function(){function h(m,C){return m=typeof m=="function"?m(Object.assign({},C.rects,{placement:C.placement})):m,(0,c.default)(typeof m!="number"?m:(0,p.default)(m,d.basePlacements))}return h}();function l(h){var m,C=h.state,I=h.name,O=h.options,T=C.elements.arrow,y=C.modifiersData.popperOffsets,S=(0,e.default)(C.placement),b=(0,s.default)(S),N=[d.left,d.right].indexOf(S)>=0,M=N?"height":"width";if(!(!T||!y)){var w=v(O.padding,C),R=(0,r.default)(T),B=b==="y"?d.top:d.left,x=b==="y"?d.bottom:d.right,j=C.rects.reference[M]+C.rects.reference[b]-y[b]-C.rects.popper[M],$=y[b]-C.rects.reference[b],G=(0,a.default)(T),D=G?b==="y"?G.clientHeight||0:G.clientWidth||0:0,V=j/2-$/2,U=w[B],Y=D-R[M]-w[x],K=D/2-R[M]/2+V,H=(0,u.within)(U,K,Y),rt=b;C.modifiersData[I]=(m={},m[rt]=H,m.centerOffset=H-K,m)}}function g(h){var m=h.state,C=h.options,I=C.element,O=I===void 0?"[data-popper-arrow]":I;O!=null&&(typeof O=="string"&&(O=m.elements.popper.querySelector(O),!O)||(0,o.default)(m.elements.popper,O)&&(m.elements.arrow=O))}var f=n.default={name:"arrow",enabled:!0,phase:"main",fn:l,effect:g,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]}},59894:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0,n.mapToStyles=l;var e=t(46206),r=d(t(44896)),o=d(t(95115)),a=d(t(40600)),s=d(t(16599)),u=d(t(83104)),c=d(t(45)),p=t(63618);function d(h){return h&&h.__esModule?h:{default:h}}var i={top:"auto",right:"auto",bottom:"auto",left:"auto"};function v(h,m){var C=h.x,I=h.y,O=m.devicePixelRatio||1;return{x:(0,p.round)(C*O)/O||0,y:(0,p.round)(I*O)/O||0}}function l(h){var m,C=h.popper,I=h.popperRect,O=h.placement,T=h.variation,y=h.offsets,S=h.position,b=h.gpuAcceleration,N=h.adaptive,M=h.roundOffsets,w=h.isFixed,R=y.x,B=R===void 0?0:R,x=y.y,j=x===void 0?0:x,$=typeof M=="function"?M({x:B,y:j}):{x:B,y:j};B=$.x,j=$.y;var G=y.hasOwnProperty("x"),D=y.hasOwnProperty("y"),V=e.left,U=e.top,Y=window;if(N){var K=(0,r.default)(C),H="clientHeight",rt="clientWidth";if(K===(0,o.default)(C)&&(K=(0,a.default)(C),(0,s.default)(K).position!=="static"&&S==="absolute"&&(H="scrollHeight",rt="scrollWidth")),K=K,O===e.top||(O===e.left||O===e.right)&&T===e.end){U=e.bottom;var lt=w&&K===Y&&Y.visualViewport?Y.visualViewport.height:K[H];j-=lt-I.height,j*=b?1:-1}if(O===e.left||(O===e.top||O===e.bottom)&&T===e.end){V=e.right;var ct=w&&K===Y&&Y.visualViewport?Y.visualViewport.width:K[rt];B-=ct-I.width,B*=b?1:-1}}var k=Object.assign({position:S},N&&i),Q=M===!0?v({x:B,y:j},(0,o.default)(C)):{x:B,y:j};if(B=Q.x,j=Q.y,b){var it;return Object.assign({},k,(it={},it[U]=D?"0":"",it[V]=G?"0":"",it.transform=(Y.devicePixelRatio||1)<=1?"translate("+B+"px, "+j+"px)":"translate3d("+B+"px, "+j+"px, 0)",it))}return Object.assign({},k,(m={},m[U]=D?j+"px":"",m[V]=G?B+"px":"",m.transform="",m))}function g(h){var m=h.state,C=h.options,I=C.gpuAcceleration,O=I===void 0?!0:I,T=C.adaptive,y=T===void 0?!0:T,S=C.roundOffsets,b=S===void 0?!0:S,N={placement:(0,u.default)(m.placement),variation:(0,c.default)(m.placement),popper:m.elements.popper,popperRect:m.rects.popper,gpuAcceleration:O,isFixed:m.options.strategy==="fixed"};m.modifiersData.popperOffsets!=null&&(m.styles.popper=Object.assign({},m.styles.popper,l(Object.assign({},N,{offsets:m.modifiersData.popperOffsets,position:m.options.strategy,adaptive:y,roundOffsets:b})))),m.modifiersData.arrow!=null&&(m.styles.arrow=Object.assign({},m.styles.arrow,l(Object.assign({},N,{offsets:m.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:b})))),m.attributes.popper=Object.assign({},m.attributes.popper,{"data-popper-placement":m.placement})}var f=n.default={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:g,data:{}}},36692:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=r(t(95115));function r(u){return u&&u.__esModule?u:{default:u}}var o={passive:!0};function a(u){var c=u.state,p=u.instance,d=u.options,i=d.scroll,v=i===void 0?!0:i,l=d.resize,g=l===void 0?!0:l,f=(0,e.default)(c.elements.popper),h=[].concat(c.scrollParents.reference,c.scrollParents.popper);return v&&h.forEach(function(m){m.addEventListener("scroll",p.update,o)}),g&&f.addEventListener("resize",p.update,o),function(){v&&h.forEach(function(m){m.removeEventListener("scroll",p.update,o)}),g&&f.removeEventListener("resize",p.update,o)}}var s=n.default={name:"eventListeners",enabled:!0,phase:"write",fn:function(){function u(){}return u}(),effect:a,data:{}}},23798:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=p(t(71376)),r=p(t(83104)),o=p(t(86459)),a=p(t(17633)),s=p(t(9041)),u=t(46206),c=p(t(45));function p(l){return l&&l.__esModule?l:{default:l}}function d(l){if((0,r.default)(l)===u.auto)return[];var g=(0,e.default)(l);return[(0,o.default)(l),g,(0,o.default)(g)]}function i(l){var g=l.state,f=l.options,h=l.name;if(!g.modifiersData[h]._skip){for(var m=f.mainAxis,C=m===void 0?!0:m,I=f.altAxis,O=I===void 0?!0:I,T=f.fallbackPlacements,y=f.padding,S=f.boundary,b=f.rootBoundary,N=f.altBoundary,M=f.flipVariations,w=M===void 0?!0:M,R=f.allowedAutoPlacements,B=g.options.placement,x=(0,r.default)(B),j=x===B,$=T||(j||!w?[(0,e.default)(B)]:d(B)),G=[B].concat($).reduce(function(nt,z){return nt.concat((0,r.default)(z)===u.auto?(0,s.default)(g,{placement:z,boundary:S,rootBoundary:b,padding:y,flipVariations:w,allowedAutoPlacements:R}):z)},[]),D=g.rects.reference,V=g.rects.popper,U=new Map,Y=!0,K=G[0],H=0;H=0,Q=k?"width":"height",it=(0,a.default)(g,{placement:rt,boundary:S,rootBoundary:b,altBoundary:N,padding:y}),vt=k?ct?u.right:u.left:ct?u.bottom:u.top;D[Q]>V[Q]&&(vt=(0,e.default)(vt));var ft=(0,e.default)(vt),J=[];if(C&&J.push(it[lt]<=0),O&&J.push(it[vt]<=0,it[ft]<=0),J.every(function(nt){return nt})){K=rt,Y=!1;break}U.set(rt,J)}if(Y)for(var at=w?3:1,st=function(){function nt(z){var Z=G.find(function(et){var ht=U.get(et);if(ht)return ht.slice(0,z).every(function(St){return St})});if(Z)return K=Z,"break"}return nt}(),mt=at;mt>0;mt--){var ot=st(mt);if(ot==="break")break}g.placement!==K&&(g.modifiersData[h]._skip=!0,g.placement=K,g.reset=!0)}}var v=n.default={name:"flip",enabled:!0,phase:"main",fn:i,requiresIfExists:["offset"],data:{_skip:!1}}},83761:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=t(46206),r=o(t(17633));function o(p){return p&&p.__esModule?p:{default:p}}function a(p,d,i){return i===void 0&&(i={x:0,y:0}),{top:p.top-d.height-i.y,right:p.right-d.width+i.x,bottom:p.bottom-d.height+i.y,left:p.left-d.width-i.x}}function s(p){return[e.top,e.right,e.bottom,e.left].some(function(d){return p[d]>=0})}function u(p){var d=p.state,i=p.name,v=d.rects.reference,l=d.rects.popper,g=d.modifiersData.preventOverflow,f=(0,r.default)(d,{elementContext:"reference"}),h=(0,r.default)(d,{altBoundary:!0}),m=a(f,v),C=a(h,l,g),I=s(m),O=s(C);d.modifiersData[i]={referenceClippingOffsets:m,popperEscapeOffsets:C,isReferenceHidden:I,hasPopperEscaped:O},d.attributes.popper=Object.assign({},d.attributes.popper,{"data-popper-reference-hidden":I,"data-popper-escaped":O})}var c=n.default={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:u}},39805:function(E,n,t){"use strict";n.__esModule=!0,n.preventOverflow=n.popperOffsets=n.offset=n.hide=n.flip=n.eventListeners=n.computeStyles=n.arrow=n.applyStyles=void 0;var e=i(t(19975));n.applyStyles=e.default;var r=i(t(52744));n.arrow=r.default;var o=i(t(59894));n.computeStyles=o.default;var a=i(t(36692));n.eventListeners=a.default;var s=i(t(23798));n.flip=s.default;var u=i(t(83761));n.hide=u.default;var c=i(t(61410));n.offset=c.default;var p=i(t(40107));n.popperOffsets=p.default;var d=i(t(75137));n.preventOverflow=d.default;function i(v){return v&&v.__esModule?v:{default:v}}},61410:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0,n.distanceAndSkiddingToXY=a;var e=o(t(83104)),r=t(46206);function o(c){return c&&c.__esModule?c:{default:c}}function a(c,p,d){var i=(0,e.default)(c),v=[r.left,r.top].indexOf(i)>=0?-1:1,l=typeof d=="function"?d(Object.assign({},p,{placement:c})):d,g=l[0],f=l[1];return g=g||0,f=(f||0)*v,[r.left,r.right].indexOf(i)>=0?{x:f,y:g}:{x:g,y:f}}function s(c){var p=c.state,d=c.options,i=c.name,v=d.offset,l=v===void 0?[0,0]:v,g=r.placements.reduce(function(C,I){return C[I]=a(I,p.rects,l),C},{}),f=g[p.placement],h=f.x,m=f.y;p.modifiersData.popperOffsets!=null&&(p.modifiersData.popperOffsets.x+=h,p.modifiersData.popperOffsets.y+=m),p.modifiersData[i]=g}var u=n.default={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:s}},40107:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=r(t(89951));function r(s){return s&&s.__esModule?s:{default:s}}function o(s){var u=s.state,c=s.name;u.modifiersData[c]=(0,e.default)({reference:u.rects.reference,element:u.rects.popper,strategy:"absolute",placement:u.placement})}var a=n.default={name:"popperOffsets",enabled:!0,phase:"read",fn:o,data:{}}},75137:function(E,n,t){"use strict";n.__esModule=!0,n.default=void 0;var e=t(46206),r=l(t(83104)),o=l(t(41199)),a=l(t(28066)),s=t(28595),u=l(t(28811)),c=l(t(44896)),p=l(t(17633)),d=l(t(45)),i=l(t(34780)),v=t(63618);function l(h){return h&&h.__esModule?h:{default:h}}function g(h){var m=h.state,C=h.options,I=h.name,O=C.mainAxis,T=O===void 0?!0:O,y=C.altAxis,S=y===void 0?!1:y,b=C.boundary,N=C.rootBoundary,M=C.altBoundary,w=C.padding,R=C.tether,B=R===void 0?!0:R,x=C.tetherOffset,j=x===void 0?0:x,$=(0,p.default)(m,{boundary:b,rootBoundary:N,padding:w,altBoundary:M}),G=(0,r.default)(m.placement),D=(0,d.default)(m.placement),V=!D,U=(0,o.default)(G),Y=(0,a.default)(U),K=m.modifiersData.popperOffsets,H=m.rects.reference,rt=m.rects.popper,lt=typeof j=="function"?j(Object.assign({},m.rects,{placement:m.placement})):j,ct=typeof lt=="number"?{mainAxis:lt,altAxis:lt}:Object.assign({mainAxis:0,altAxis:0},lt),k=m.modifiersData.offset?m.modifiersData.offset[m.placement]:null,Q={x:0,y:0};if(K){if(T){var it,vt=U==="y"?e.top:e.left,ft=U==="y"?e.bottom:e.right,J=U==="y"?"height":"width",at=K[U],st=at+$[vt],mt=at-$[ft],ot=B?-rt[J]/2:0,nt=D===e.start?H[J]:rt[J],z=D===e.start?-rt[J]:-H[J],Z=m.elements.arrow,et=B&&Z?(0,u.default)(Z):{width:0,height:0},ht=m.modifiersData["arrow#persistent"]?m.modifiersData["arrow#persistent"].padding:(0,i.default)(),St=ht[vt],ut=ht[ft],yt=(0,s.within)(0,H[J],et[J]),Pt=V?H[J]/2-ot-yt-St-ct.mainAxis:nt-yt-St-ct.mainAxis,_=V?-H[J]/2+ot+yt+ut+ct.mainAxis:z+yt+ut+ct.mainAxis,pt=m.elements.arrow&&(0,c.default)(m.elements.arrow),Ct=pt?U==="y"?pt.clientTop||0:pt.clientLeft||0:0,At=(it=k==null?void 0:k[U])!=null?it:0,Dt=at+Pt-At-Ct,jt=at+_-At,It=(0,s.within)(B?(0,v.min)(st,Dt):st,at,B?(0,v.max)(mt,jt):mt);K[U]=It,Q[U]=It-at}if(S){var gt,Et=U==="x"?e.top:e.left,Ot=U==="x"?e.bottom:e.right,bt=K[Y],Nt=Y==="y"?"height":"width",Ft=bt+$[Et],Vt=bt-$[Ot],$t=[e.top,e.left].indexOf(G)!==-1,Wt=(gt=k==null?void 0:k[Y])!=null?gt:0,Gt=$t?Ft:bt-H[Nt]-rt[Nt]-Wt+ct.altAxis,Ht=$t?bt+H[Nt]+rt[Nt]-Wt-ct.altAxis:Vt,Jt=B&&$t?(0,s.withinMaxClamp)(Gt,bt,Ht):(0,s.within)(B?Gt:Ft,bt,B?Ht:Vt);K[Y]=Jt,Q[Y]=Jt-bt}m.modifiersData[I]=Q}}var f=n.default={name:"preventOverflow",enabled:!0,phase:"main",fn:g,requiresIfExists:["offset"]}},2473:function(E,n,t){"use strict";n.__esModule=!0,n.defaultModifiers=n.createPopper=void 0;var e=t(96376);n.popperGenerator=e.popperGenerator,n.detectOverflow=e.detectOverflow;var r=u(t(36692)),o=u(t(40107)),a=u(t(59894)),s=u(t(19975));function u(d){return d&&d.__esModule?d:{default:d}}var c=n.defaultModifiers=[r.default,o.default,a.default,s.default],p=n.createPopper=(0,e.popperGenerator)({defaultModifiers:c})},83312:function(E,n,t){"use strict";n.__esModule=!0;var e={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};n.defaultModifiers=n.createPopperLite=n.createPopper=void 0;var r=t(96376);n.popperGenerator=r.popperGenerator,n.detectOverflow=r.detectOverflow;var o=f(t(36692)),a=f(t(40107)),s=f(t(59894)),u=f(t(19975)),c=f(t(61410)),p=f(t(23798)),d=f(t(75137)),i=f(t(52744)),v=f(t(83761)),l=t(2473);n.createPopperLite=l.createPopper;var g=t(39805);Object.keys(g).forEach(function(C){C==="default"||C==="__esModule"||Object.prototype.hasOwnProperty.call(e,C)||C in n&&n[C]===g[C]||(n[C]=g[C])});function f(C){return C&&C.__esModule?C:{default:C}}var h=n.defaultModifiers=[o.default,a.default,s.default,u.default,c.default,p.default,d.default,i.default,v.default],m=n.createPopperLite=n.createPopper=(0,r.popperGenerator)({defaultModifiers:h})},9041:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(45)),r=t(46206),o=s(t(17633)),a=s(t(83104));function s(c){return c&&c.__esModule?c:{default:c}}function u(c,p){p===void 0&&(p={});var d=p,i=d.placement,v=d.boundary,l=d.rootBoundary,g=d.padding,f=d.flipVariations,h=d.allowedAutoPlacements,m=h===void 0?r.placements:h,C=(0,e.default)(i),I=C?f?r.variationPlacements:r.variationPlacements.filter(function(y){return(0,e.default)(y)===C}):r.basePlacements,O=I.filter(function(y){return m.indexOf(y)>=0});O.length===0&&(O=I);var T=O.reduce(function(y,S){return y[S]=(0,o.default)(c,{placement:S,boundary:v,rootBoundary:l,padding:g})[(0,a.default)(S)],y},{});return Object.keys(T).sort(function(y,S){return T[y]-T[S]})}},89951:function(E,n,t){"use strict";n.__esModule=!0,n.default=u;var e=s(t(83104)),r=s(t(45)),o=s(t(41199)),a=t(46206);function s(c){return c&&c.__esModule?c:{default:c}}function u(c){var p=c.reference,d=c.element,i=c.placement,v=i?(0,e.default)(i):null,l=i?(0,r.default)(i):null,g=p.x+p.width/2-d.width/2,f=p.y+p.height/2-d.height/2,h;switch(v){case a.top:h={x:g,y:p.y-d.height};break;case a.bottom:h={x:g,y:p.y+p.height};break;case a.right:h={x:p.x+p.width,y:f};break;case a.left:h={x:p.x-d.width,y:f};break;default:h={x:p.x,y:p.y}}var m=v?(0,o.default)(v):null;if(m!=null){var C=m==="y"?"height":"width";switch(l){case a.start:h[m]=h[m]-(p[C]/2-d[C]/2);break;case a.end:h[m]=h[m]+(p[C]/2-d[C]/2);break;default:}}return h}},10579:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){var r;return function(){return r||(r=new Promise(function(o){Promise.resolve().then(function(){r=void 0,o(e())})})),r}}},17633:function(E,n,t){"use strict";n.__esModule=!0,n.default=v;var e=i(t(49035)),r=i(t(40600)),o=i(t(37786)),a=i(t(89951)),s=i(t(81666)),u=t(46206),c=t(75573),p=i(t(43286)),d=i(t(81447));function i(l){return l&&l.__esModule?l:{default:l}}function v(l,g){g===void 0&&(g={});var f=g,h=f.placement,m=h===void 0?l.placement:h,C=f.strategy,I=C===void 0?l.strategy:C,O=f.boundary,T=O===void 0?u.clippingParents:O,y=f.rootBoundary,S=y===void 0?u.viewport:y,b=f.elementContext,N=b===void 0?u.popper:b,M=f.altBoundary,w=M===void 0?!1:M,R=f.padding,B=R===void 0?0:R,x=(0,p.default)(typeof B!="number"?B:(0,d.default)(B,u.basePlacements)),j=N===u.popper?u.reference:u.popper,$=l.rects.popper,G=l.elements[w?j:N],D=(0,e.default)((0,c.isElement)(G)?G:G.contextElement||(0,r.default)(l.elements.popper),T,S,I),V=(0,o.default)(l.elements.reference),U=(0,a.default)({reference:V,element:$,strategy:"absolute",placement:m}),Y=(0,s.default)(Object.assign({},$,U)),K=N===u.popper?Y:V,H={top:D.top-K.top+x.top,bottom:K.bottom-D.bottom+x.bottom,left:D.left-K.left+x.left,right:K.right-D.right+x.right},rt=l.modifiersData.offset;if(N===u.popper&&rt){var lt=rt[m];Object.keys(H).forEach(function(ct){var k=[u.right,u.bottom].indexOf(ct)>=0?1:-1,Q=[u.top,u.bottom].indexOf(ct)>=0?"y":"x";H[ct]+=lt[Q]*k})}return H}},81447:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e,r){return r.reduce(function(o,a){return o[a]=e,o},{})}},28066:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return e==="x"?"y":"x"}},83104:function(E,n,t){"use strict";n.__esModule=!0,n.default=r;var e=t(46206);function r(o){return o.split("-")[0]}},34780:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(){return{top:0,right:0,bottom:0,left:0}}},41199:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}},71376:function(E,n){"use strict";n.__esModule=!0,n.default=e;var t={left:"right",right:"left",bottom:"top",top:"bottom"};function e(r){return r.replace(/left|right|bottom|top/g,function(o){return t[o]})}},86459:function(E,n){"use strict";n.__esModule=!0,n.default=e;var t={start:"end",end:"start"};function e(r){return r.replace(/start|end/g,function(o){return t[o]})}},45:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return e.split("-")[1]}},63618:function(E,n){"use strict";n.__esModule=!0,n.round=n.min=n.max=void 0;var t=n.max=Math.max,e=n.min=Math.min,r=n.round=Math.round},56500:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){var r=e.reduce(function(o,a){var s=o[a.name];return o[a.name]=s?Object.assign({},s,a,{options:Object.assign({},s.options,a.options),data:Object.assign({},s.data,a.data)}):a,o},{});return Object.keys(r).map(function(o){return r[o]})}},43286:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=r(t(34780));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return Object.assign({},(0,e.default)(),a)}},33118:function(E,n,t){"use strict";n.__esModule=!0,n.default=o;var e=t(46206);function r(a){var s=new Map,u=new Set,c=[];a.forEach(function(d){s.set(d.name,d)});function p(d){u.add(d.name);var i=[].concat(d.requires||[],d.requiresIfExists||[]);i.forEach(function(v){if(!u.has(v)){var l=s.get(v);l&&p(l)}}),c.push(d)}return a.forEach(function(d){u.has(d.name)||p(d)}),c}function o(a){var s=r(a);return e.modifierPhases.reduce(function(u,c){return u.concat(s.filter(function(p){return p.phase===c}))},[])}},81666:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}},35366:function(E,n){"use strict";n.__esModule=!0,n.default=t;function t(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(r){return r.brand+"/"+r.version}).join(" "):navigator.userAgent}},28595:function(E,n,t){"use strict";n.__esModule=!0,n.within=r,n.withinMaxClamp=o;var e=t(63618);function r(a,s,u){return(0,e.max)(a,(0,e.min)(s,u))}function o(a,s,u){var c=r(a,s,u);return c>u?u:c}},22734:function(E){"use strict";/*! @license DOMPurify 2.5.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.5.0/LICENSE */(function(n,t){E.exports=t()})(void 0,function(){"use strict";function n(_){"@babel/helpers - typeof";return n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(pt){return typeof pt}:function(pt){return pt&&typeof Symbol=="function"&&pt.constructor===Symbol&&pt!==Symbol.prototype?"symbol":typeof pt},n(_)}function t(_,pt){return t=Object.setPrototypeOf||function(){function Ct(At,Dt){return At.__proto__=Dt,At}return Ct}(),t(_,pt)}function e(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(_){return!1}}function r(_,pt,Ct){return e()?r=Reflect.construct:r=function(){function At(Dt,jt,It){var gt=[null];gt.push.apply(gt,jt);var Et=Function.bind.apply(Dt,gt),Ot=new Et;return It&&t(Ot,It.prototype),Ot}return At}(),r.apply(null,arguments)}function o(_){return a(_)||s(_)||u(_)||p()}function a(_){if(Array.isArray(_))return c(_)}function s(_){if(typeof Symbol!="undefined"&&_[Symbol.iterator]!=null||_["@@iterator"]!=null)return Array.from(_)}function u(_,pt){if(_){if(typeof _=="string")return c(_,pt);var Ct=Object.prototype.toString.call(_).slice(8,-1);if(Ct==="Object"&&_.constructor&&(Ct=_.constructor.name),Ct==="Map"||Ct==="Set")return Array.from(_);if(Ct==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Ct))return c(_,pt)}}function c(_,pt){(pt==null||pt>_.length)&&(pt=_.length);for(var Ct=0,At=new Array(pt);Ct1?Ct-1:0),Dt=1;Dt/gm),st=h(/\${[\w\W]*}/gm),mt=h(/^data-[\-\w.\u00B7-\uFFFF]/),ot=h(/^aria-[\-\w]+$/),nt=h(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),z=h(/^(?:\w+script|data):/i),Z=h(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),et=h(/^html$/i),ht=h(/^[a-z][.\w]*(-[.\w]+)+$/i),St=function(){function _(){return typeof window=="undefined"?null:window}return _}(),ut=function(){function _(pt,Ct){if(n(pt)!=="object"||typeof pt.createPolicy!="function")return null;var At=null,Dt="data-tt-policy-suffix";Ct.currentScript&&Ct.currentScript.hasAttribute(Dt)&&(At=Ct.currentScript.getAttribute(Dt));var jt="dompurify"+(At?"#"+At:"");try{return pt.createPolicy(jt,{createHTML:function(){function It(gt){return gt}return It}(),createScriptURL:function(){function It(gt){return gt}return It}()})}catch(It){return null}}return _}();function yt(){var _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:St(),pt=function(){function A(P){return yt(P)}return A}();if(pt.version="2.5.0",pt.removed=[],!_||!_.document||_.document.nodeType!==9)return pt.isSupported=!1,pt;var Ct=_.document,At=_.document,Dt=_.DocumentFragment,jt=_.HTMLTemplateElement,It=_.Node,gt=_.Element,Et=_.NodeFilter,Ot=_.NamedNodeMap,bt=Ot===void 0?_.NamedNodeMap||_.MozNamedAttrMap:Ot,Nt=_.HTMLFormElement,Ft=_.DOMParser,Vt=_.trustedTypes,$t=gt.prototype,Wt=U($t,"cloneNode"),Gt=U($t,"nextSibling"),Ht=U($t,"childNodes"),Jt=U($t,"parentNode");if(typeof jt=="function"){var Le=At.createElement("template");Le.content&&Le.content.ownerDocument&&(At=Le.content.ownerDocument)}var qt=ut(Vt,Ct),Pe=qt?qt.createHTML(""):"",Ne=At,me=Ne.implementation,ye=Ne.createNodeIterator,an=Ne.createDocumentFragment,un=Ne.getElementsByTagName,Tn=Ct.importNode,Ye={};try{Ye=V(At).documentMode?At.documentMode:{}}catch(A){}var re={};pt.isSupported=typeof Jt=="function"&&me&&me.createHTMLDocument!==void 0&&Ye!==9;var Ke=J,He=at,Be=st,sn=mt,In=ot,cn=z,ln=Z,On=ht,Se=nt,zt=null,te=D({},[].concat(o(Y),o(K),o(H),o(lt),o(k))),Yt=null,Ee=D({},[].concat(o(Q),o(it),o(vt),o(ft))),kt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),le=null,Ce=null,We=!0,ze=!0,fn=!1,dn=!0,be=!1,De=!0,fe=!1,Fe=!1,xe=!1,de=!1,Xt=!1,Ve=!1,vn=!0,ke=!1,hn="user-content-",ue=!0,Me=!1,Te={},Ie=null,Xe=D({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Qe=null,pn=D({},["audio","video","img","source","image","track"]),je=null,gn=D({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ee="http://www.w3.org/1998/Math/MathML",Ue="http://www.w3.org/2000/svg",se="http://www.w3.org/1999/xhtml",Oe=se,Ze=!1,Je=null,An=D({},[ee,Ue,se],N),ce,Pn=["application/xhtml+xml","text/html"],mn="text/html",Qt,Ae=null,Nn=At.createElement("form"),yn=function(){function A(P){return P instanceof RegExp||P instanceof Function}return A}(),_e=function(){function A(P){Ae&&Ae===P||((!P||n(P)!=="object")&&(P={}),P=V(P),ce=Pn.indexOf(P.PARSER_MEDIA_TYPE)===-1?ce=mn:ce=P.PARSER_MEDIA_TYPE,Qt=ce==="application/xhtml+xml"?N:b,zt="ALLOWED_TAGS"in P?D({},P.ALLOWED_TAGS,Qt):te,Yt="ALLOWED_ATTR"in P?D({},P.ALLOWED_ATTR,Qt):Ee,Je="ALLOWED_NAMESPACES"in P?D({},P.ALLOWED_NAMESPACES,N):An,je="ADD_URI_SAFE_ATTR"in P?D(V(gn),P.ADD_URI_SAFE_ATTR,Qt):gn,Qe="ADD_DATA_URI_TAGS"in P?D(V(pn),P.ADD_DATA_URI_TAGS,Qt):pn,Ie="FORBID_CONTENTS"in P?D({},P.FORBID_CONTENTS,Qt):Xe,le="FORBID_TAGS"in P?D({},P.FORBID_TAGS,Qt):{},Ce="FORBID_ATTR"in P?D({},P.FORBID_ATTR,Qt):{},Te="USE_PROFILES"in P?P.USE_PROFILES:!1,We=P.ALLOW_ARIA_ATTR!==!1,ze=P.ALLOW_DATA_ATTR!==!1,fn=P.ALLOW_UNKNOWN_PROTOCOLS||!1,dn=P.ALLOW_SELF_CLOSE_IN_ATTR!==!1,be=P.SAFE_FOR_TEMPLATES||!1,De=P.SAFE_FOR_XML!==!1,fe=P.WHOLE_DOCUMENT||!1,de=P.RETURN_DOM||!1,Xt=P.RETURN_DOM_FRAGMENT||!1,Ve=P.RETURN_TRUSTED_TYPE||!1,xe=P.FORCE_BODY||!1,vn=P.SANITIZE_DOM!==!1,ke=P.SANITIZE_NAMED_PROPS||!1,ue=P.KEEP_CONTENT!==!1,Me=P.IN_PLACE||!1,Se=P.ALLOWED_URI_REGEXP||Se,Oe=P.NAMESPACE||se,kt=P.CUSTOM_ELEMENT_HANDLING||{},P.CUSTOM_ELEMENT_HANDLING&&yn(P.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(kt.tagNameCheck=P.CUSTOM_ELEMENT_HANDLING.tagNameCheck),P.CUSTOM_ELEMENT_HANDLING&&yn(P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(kt.attributeNameCheck=P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),P.CUSTOM_ELEMENT_HANDLING&&typeof P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(kt.allowCustomizedBuiltInElements=P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),be&&(ze=!1),Xt&&(de=!0),Te&&(zt=D({},o(k)),Yt=[],Te.html===!0&&(D(zt,Y),D(Yt,Q)),Te.svg===!0&&(D(zt,K),D(Yt,it),D(Yt,ft)),Te.svgFilters===!0&&(D(zt,H),D(Yt,it),D(Yt,ft)),Te.mathMl===!0&&(D(zt,lt),D(Yt,vt),D(Yt,ft))),P.ADD_TAGS&&(zt===te&&(zt=V(zt)),D(zt,P.ADD_TAGS,Qt)),P.ADD_ATTR&&(Yt===Ee&&(Yt=V(Yt)),D(Yt,P.ADD_ATTR,Qt)),P.ADD_URI_SAFE_ATTR&&D(je,P.ADD_URI_SAFE_ATTR,Qt),P.FORBID_CONTENTS&&(Ie===Xe&&(Ie=V(Ie)),D(Ie,P.FORBID_CONTENTS,Qt)),ue&&(zt["#text"]=!0),fe&&D(zt,["html","head","body"]),zt.table&&(D(zt,["tbody"]),delete le.tbody),f&&f(P),Ae=P)}return A}(),Sn=D({},["mi","mo","mn","ms","mtext"]),oe=D({},["foreignobject","desc","title","annotation-xml"]),$e=D({},["title","style","font","a","script"]),we=D({},K);D(we,H),D(we,rt);var qe=D({},lt);D(qe,ct);var Mn=function(){function A(P){var L=Jt(P);(!L||!L.tagName)&&(L={namespaceURI:Oe,tagName:"template"});var F=b(P.tagName),W=b(L.tagName);return Je[P.namespaceURI]?P.namespaceURI===Ue?L.namespaceURI===se?F==="svg":L.namespaceURI===ee?F==="svg"&&(W==="annotation-xml"||Sn[W]):!!we[F]:P.namespaceURI===ee?L.namespaceURI===se?F==="math":L.namespaceURI===Ue?F==="math"&&oe[W]:!!qe[F]:P.namespaceURI===se?L.namespaceURI===Ue&&!oe[W]||L.namespaceURI===ee&&!Sn[W]?!1:!qe[F]&&($e[F]||!we[F]):!!(ce==="application/xhtml+xml"&&Je[P.namespaceURI]):!1}return A}(),ne=function(){function A(P){S(pt.removed,{element:P});try{P.parentNode.removeChild(P)}catch(L){try{P.outerHTML=Pe}catch(F){P.remove()}}}return A}(),Ge=function(){function A(P,L){try{S(pt.removed,{attribute:L.getAttributeNode(P),from:L})}catch(F){S(pt.removed,{attribute:null,from:L})}if(L.removeAttribute(P),P==="is"&&!Yt[P])if(de||Xt)try{ne(L)}catch(F){}else try{L.setAttribute(P,"")}catch(F){}}return A}(),En=function(){function A(P){var L,F;if(xe)P=""+P;else{var W=M(P,/^[\r\n\t ]+/);F=W&&W[0]}ce==="application/xhtml+xml"&&Oe===se&&(P=''+P+"");var q=qt?qt.createHTML(P):P;if(Oe===se)try{L=new Ft().parseFromString(q,ce)}catch(dt){}if(!L||!L.documentElement){L=me.createDocument(Oe,"template",null);try{L.documentElement.innerHTML=Ze?Pe:q}catch(dt){}}var tt=L.body||L.documentElement;return P&&F&&tt.insertBefore(At.createTextNode(F),tt.childNodes[0]||null),Oe===se?un.call(L,fe?"html":"body")[0]:fe?L.documentElement:tt}return A}(),Re=function(){function A(P){return ye.call(P.ownerDocument||P,P,Et.SHOW_ELEMENT|Et.SHOW_COMMENT|Et.SHOW_TEXT|Et.SHOW_PROCESSING_INSTRUCTION|Et.SHOW_CDATA_SECTION,null,!1)}return A}(),wn=function(){function A(P){return P instanceof Nt&&(typeof P.nodeName!="string"||typeof P.textContent!="string"||typeof P.removeChild!="function"||!(P.attributes instanceof bt)||typeof P.removeAttribute!="function"||typeof P.setAttribute!="function"||typeof P.namespaceURI!="string"||typeof P.insertBefore!="function"||typeof P.hasChildNodes!="function")}return A}(),he=function(){function A(P){return n(It)==="object"?P instanceof It:P&&n(P)==="object"&&typeof P.nodeType=="number"&&typeof P.nodeName=="string"}return A}(),ae=function(){function A(P,L,F){re[P]&&T(re[P],function(W){W.call(pt,L,F,Ae)})}return A}(),Cn=function(){function A(P){var L;if(ae("beforeSanitizeElements",P,null),wn(P)||x(/[\u0080-\uFFFF]/,P.nodeName))return ne(P),!0;var F=Qt(P.nodeName);if(ae("uponSanitizeElement",P,{tagName:F,allowedTags:zt}),P.hasChildNodes()&&!he(P.firstElementChild)&&(!he(P.content)||!he(P.content.firstElementChild))&&x(/<[/\w]/g,P.innerHTML)&&x(/<[/\w]/g,P.textContent)||F==="select"&&x(/